Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ccokee/24833c2f121dca4a1d3161276460762d to your computer and use it in GitHub Desktop.
Save ccokee/24833c2f121dca4a1d3161276460762d to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.6.6+commit.6c089d02.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.2) (token/ERC721/ERC721.sol)
pragma solidity ^0.8.0;
import "./IERC721.sol";
import "./IERC721Receiver.sol";
import "./extensions/IERC721Metadata.sol";
import "../../utils/Address.sol";
import "../../utils/Context.sol";
import "../../utils/Strings.sol";
import "../../utils/introspection/ERC165.sol";
/**
* @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
* the Metadata extension, but not including the Enumerable extension, which is available separately as
* {ERC721Enumerable}.
*/
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
using Address for address;
using Strings for uint256;
// Token name
string private _name;
// Token symbol
string private _symbol;
// Mapping from token ID to owner address
mapping(uint256 => address) private _owners;
// Mapping owner address to token count
mapping(address => uint256) private _balances;
// Mapping from token ID to approved address
mapping(uint256 => address) private _tokenApprovals;
// Mapping from owner to operator approvals
mapping(address => mapping(address => bool)) private _operatorApprovals;
/**
* @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return
interfaceId == type(IERC721).interfaceId ||
interfaceId == type(IERC721Metadata).interfaceId ||
super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC721-balanceOf}.
*/
function balanceOf(address owner) public view virtual override returns (uint256) {
require(owner != address(0), "ERC721: address zero is not a valid owner");
return _balances[owner];
}
/**
* @dev See {IERC721-ownerOf}.
*/
function ownerOf(uint256 tokenId) public view virtual override returns (address) {
address owner = _ownerOf(tokenId);
require(owner != address(0), "ERC721: invalid token ID");
return owner;
}
/**
* @dev See {IERC721Metadata-name}.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev See {IERC721Metadata-symbol}.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev See {IERC721Metadata-tokenURI}.
*/
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
_requireMinted(tokenId);
string memory baseURI = _baseURI();
return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
}
/**
* @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
* token will be the concatenation of the `baseURI` and the `tokenId`. Empty
* by default, can be overridden in child contracts.
*/
function _baseURI() internal view virtual returns (string memory) {
return "";
}
/**
* @dev See {IERC721-approve}.
*/
function approve(address to, uint256 tokenId) public virtual override {
address owner = ERC721.ownerOf(tokenId);
require(to != owner, "ERC721: approval to current owner");
require(
_msgSender() == owner || isApprovedForAll(owner, _msgSender()),
"ERC721: approve caller is not token owner or approved for all"
);
_approve(to, tokenId);
}
/**
* @dev See {IERC721-getApproved}.
*/
function getApproved(uint256 tokenId) public view virtual override returns (address) {
_requireMinted(tokenId);
return _tokenApprovals[tokenId];
}
/**
* @dev See {IERC721-setApprovalForAll}.
*/
function setApprovalForAll(address operator, bool approved) public virtual override {
_setApprovalForAll(_msgSender(), operator, approved);
}
/**
* @dev See {IERC721-isApprovedForAll}.
*/
function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
return _operatorApprovals[owner][operator];
}
/**
* @dev See {IERC721-transferFrom}.
*/
function transferFrom(
address from,
address to,
uint256 tokenId
) public virtual override {
//solhint-disable-next-line max-line-length
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner or approved");
_transfer(from, to, tokenId);
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) public virtual override {
safeTransferFrom(from, to, tokenId, "");
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId,
bytes memory data
) public virtual override {
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner or approved");
_safeTransfer(from, to, tokenId, data);
}
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* `data` is additional data, it has no specified format and it is sent in call to `to`.
*
* This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
* implement alternative mechanisms to perform token transfer, such as signature-based.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function _safeTransfer(
address from,
address to,
uint256 tokenId,
bytes memory data
) internal virtual {
_transfer(from, to, tokenId);
require(_checkOnERC721Received(from, to, tokenId, data), "ERC721: transfer to non ERC721Receiver implementer");
}
/**
* @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist
*/
function _ownerOf(uint256 tokenId) internal view virtual returns (address) {
return _owners[tokenId];
}
/**
* @dev Returns whether `tokenId` exists.
*
* Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
*
* Tokens start existing when they are minted (`_mint`),
* and stop existing when they are burned (`_burn`).
*/
function _exists(uint256 tokenId) internal view virtual returns (bool) {
return _ownerOf(tokenId) != address(0);
}
/**
* @dev Returns whether `spender` is allowed to manage `tokenId`.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
address owner = ERC721.ownerOf(tokenId);
return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);
}
/**
* @dev Safely mints `tokenId` and transfers it to `to`.
*
* Requirements:
*
* - `tokenId` must not exist.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function _safeMint(address to, uint256 tokenId) internal virtual {
_safeMint(to, tokenId, "");
}
/**
* @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
* forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
*/
function _safeMint(
address to,
uint256 tokenId,
bytes memory data
) internal virtual {
_mint(to, tokenId);
require(
_checkOnERC721Received(address(0), to, tokenId, data),
"ERC721: transfer to non ERC721Receiver implementer"
);
}
/**
* @dev Mints `tokenId` and transfers it to `to`.
*
* WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
*
* Requirements:
*
* - `tokenId` must not exist.
* - `to` cannot be the zero address.
*
* Emits a {Transfer} event.
*/
function _mint(address to, uint256 tokenId) internal virtual {
require(to != address(0), "ERC721: mint to the zero address");
require(!_exists(tokenId), "ERC721: token already minted");
_beforeTokenTransfer(address(0), to, tokenId, 1);
// Check that tokenId was not minted by `_beforeTokenTransfer` hook
require(!_exists(tokenId), "ERC721: token already minted");
unchecked {
// Will not overflow unless all 2**256 token ids are minted to the same owner.
// Given that tokens are minted one by one, it is impossible in practice that
// this ever happens. Might change if we allow batch minting.
// The ERC fails to describe this case.
_balances[to] += 1;
}
_owners[tokenId] = to;
emit Transfer(address(0), to, tokenId);
_afterTokenTransfer(address(0), to, tokenId, 1);
}
/**
* @dev Destroys `tokenId`.
* The approval is cleared when the token is burned.
* This is an internal function that does not check if the sender is authorized to operate on the token.
*
* Requirements:
*
* - `tokenId` must exist.
*
* Emits a {Transfer} event.
*/
function _burn(uint256 tokenId) internal virtual {
address owner = ERC721.ownerOf(tokenId);
_beforeTokenTransfer(owner, address(0), tokenId, 1);
// Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook
owner = ERC721.ownerOf(tokenId);
// Clear approvals
delete _tokenApprovals[tokenId];
unchecked {
// Cannot overflow, as that would require more tokens to be burned/transferred
// out than the owner initially received through minting and transferring in.
_balances[owner] -= 1;
}
delete _owners[tokenId];
emit Transfer(owner, address(0), tokenId);
_afterTokenTransfer(owner, address(0), tokenId, 1);
}
/**
* @dev Transfers `tokenId` from `from` to `to`.
* As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
*
* Emits a {Transfer} event.
*/
function _transfer(
address from,
address to,
uint256 tokenId
) internal virtual {
require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
require(to != address(0), "ERC721: transfer to the zero address");
_beforeTokenTransfer(from, to, tokenId, 1);
// Check that tokenId was not transferred by `_beforeTokenTransfer` hook
require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
// Clear approvals from the previous owner
delete _tokenApprovals[tokenId];
unchecked {
// `_balances[from]` cannot overflow for the same reason as described in `_burn`:
// `from`'s balance is the number of token held, which is at least one before the current
// transfer.
// `_balances[to]` could overflow in the conditions described in `_mint`. That would require
// all 2**256 token ids to be minted, which in practice is impossible.
_balances[from] -= 1;
_balances[to] += 1;
}
_owners[tokenId] = to;
emit Transfer(from, to, tokenId);
_afterTokenTransfer(from, to, tokenId, 1);
}
/**
* @dev Approve `to` to operate on `tokenId`
*
* Emits an {Approval} event.
*/
function _approve(address to, uint256 tokenId) internal virtual {
_tokenApprovals[tokenId] = to;
emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
}
/**
* @dev Approve `operator` to operate on all of `owner` tokens
*
* Emits an {ApprovalForAll} event.
*/
function _setApprovalForAll(
address owner,
address operator,
bool approved
) internal virtual {
require(owner != operator, "ERC721: approve to caller");
_operatorApprovals[owner][operator] = approved;
emit ApprovalForAll(owner, operator, approved);
}
/**
* @dev Reverts if the `tokenId` has not been minted yet.
*/
function _requireMinted(uint256 tokenId) internal view virtual {
require(_exists(tokenId), "ERC721: invalid token ID");
}
/**
* @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
* The call is not executed if the target address is not a contract.
*
* @param from address representing the previous owner of the given token ID
* @param to target address that will receive the tokens
* @param tokenId uint256 ID of the token to be transferred
* @param data bytes optional data to send along with the call
* @return bool whether the call correctly returned the expected magic value
*/
function _checkOnERC721Received(
address from,
address to,
uint256 tokenId,
bytes memory data
) private returns (bool) {
if (to.isContract()) {
try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {
return retval == IERC721Receiver.onERC721Received.selector;
} catch (bytes memory reason) {
if (reason.length == 0) {
revert("ERC721: transfer to non ERC721Receiver implementer");
} else {
/// @solidity memory-safe-assembly
assembly {
revert(add(32, reason), mload(reason))
}
}
}
} else {
return true;
}
}
/**
* @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is
* used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.
*
* Calling conditions:
*
* - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.
* - When `from` is zero, the tokens will be minted for `to`.
* - When `to` is zero, ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
* - `batchSize` is non-zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 firstTokenId,
uint256 batchSize
) internal virtual {}
/**
* @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is
* used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.
*
* Calling conditions:
*
* - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.
* - When `from` is zero, the tokens were minted for `to`.
* - When `to` is zero, ``from``'s tokens were burned.
* - `from` and `to` are never both zero.
* - `batchSize` is non-zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(
address from,
address to,
uint256 firstTokenId,
uint256 batchSize
) internal virtual {}
/**
* @dev Unsafe write access to the balances, used by extensions that "mint" tokens using an {ownerOf} override.
*
* WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant
* being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such
* that `ownerOf(tokenId)` is `a`.
*/
// solhint-disable-next-line func-name-mixedcase
function __unsafe_increaseBalance(address account, uint256 amount) internal {
_balances[account] += amount;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.22 <0.9.0;
library TestsAccounts {
function getAccount(uint index) pure public returns (address) {
address[15] memory accounts;
accounts[0] = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;
accounts[1] = 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2;
accounts[2] = 0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db;
accounts[3] = 0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB;
accounts[4] = 0x617F2E2fD72FD9D5503197092aC168c91465E7f2;
accounts[5] = 0x17F6AD8Ef982297579C203069C1DbfFE4348c372;
accounts[6] = 0x5c6B0f7Bf3E7ce046039Bd8FABdfD3f9F5021678;
accounts[7] = 0x03C6FcED478cBbC9a4FAB34eF9f40767739D1Ff7;
accounts[8] = 0x1aE0EA34a72D944a8C7603FfB3eC30a6669E454C;
accounts[9] = 0x0A098Eda01Ce92ff4A4CCb7A4fFFb5A43EBC70DC;
accounts[10] = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;
accounts[11] = 0x14723A09ACff6D2A60DcdF7aA4AFf308FDDC160C;
accounts[12] = 0x4B0897b0513fdC7C541B6d9D7E929C4e5364D2dB;
accounts[13] = 0x583031D1113aD414F02576BD6afaBfb302140225;
accounts[14] = 0xdD870fA1b7C4700F2BD7f44238821C26f7392148;
return accounts[index];
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.22 <0.9.0;
library Assert {
event AssertionEvent(
bool passed,
string message,
string methodName
);
event AssertionEventUint(
bool passed,
string message,
string methodName,
uint256 returned,
uint256 expected
);
event AssertionEventInt(
bool passed,
string message,
string methodName,
int256 returned,
int256 expected
);
event AssertionEventBool(
bool passed,
string message,
string methodName,
bool returned,
bool expected
);
event AssertionEventAddress(
bool passed,
string message,
string methodName,
address returned,
address expected
);
event AssertionEventBytes32(
bool passed,
string message,
string methodName,
bytes32 returned,
bytes32 expected
);
event AssertionEventString(
bool passed,
string message,
string methodName,
string returned,
string expected
);
event AssertionEventUintInt(
bool passed,
string message,
string methodName,
uint256 returned,
int256 expected
);
event AssertionEventIntUint(
bool passed,
string message,
string methodName,
int256 returned,
uint256 expected
);
function ok(bool a, string memory message) public returns (bool result) {
result = a;
emit AssertionEvent(result, message, "ok");
}
function equal(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventUint(result, message, "equal", a, b);
}
function equal(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventInt(result, message, "equal", a, b);
}
function equal(bool a, bool b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventBool(result, message, "equal", a, b);
}
// TODO: only for certain versions of solc
//function equal(fixed a, fixed b, string message) public returns (bool result) {
// result = (a == b);
// emit AssertionEvent(result, message);
//}
// TODO: only for certain versions of solc
//function equal(ufixed a, ufixed b, string message) public returns (bool result) {
// result = (a == b);
// emit AssertionEvent(result, message);
//}
function equal(address a, address b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventAddress(result, message, "equal", a, b);
}
function equal(bytes32 a, bytes32 b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventBytes32(result, message, "equal", a, b);
}
function equal(string memory a, string memory b, string memory message) public returns (bool result) {
result = (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b)));
emit AssertionEventString(result, message, "equal", a, b);
}
function notEqual(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventUint(result, message, "notEqual", a, b);
}
function notEqual(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventInt(result, message, "notEqual", a, b);
}
function notEqual(bool a, bool b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventBool(result, message, "notEqual", a, b);
}
// TODO: only for certain versions of solc
//function notEqual(fixed a, fixed b, string message) public returns (bool result) {
// result = (a != b);
// emit AssertionEvent(result, message);
//}
// TODO: only for certain versions of solc
//function notEqual(ufixed a, ufixed b, string message) public returns (bool result) {
// result = (a != b);
// emit AssertionEvent(result, message);
//}
function notEqual(address a, address b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventAddress(result, message, "notEqual", a, b);
}
function notEqual(bytes32 a, bytes32 b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventBytes32(result, message, "notEqual", a, b);
}
function notEqual(string memory a, string memory b, string memory message) public returns (bool result) {
result = (keccak256(abi.encodePacked(a)) != keccak256(abi.encodePacked(b)));
emit AssertionEventString(result, message, "notEqual", a, b);
}
/*----------------- Greater than --------------------*/
function greaterThan(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a > b);
emit AssertionEventUint(result, message, "greaterThan", a, b);
}
function greaterThan(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a > b);
emit AssertionEventInt(result, message, "greaterThan", a, b);
}
// TODO: safely compare between uint and int
function greaterThan(uint256 a, int256 b, string memory message) public returns (bool result) {
if(b < int(0)) {
// int is negative uint "a" always greater
result = true;
} else {
result = (a > uint(b));
}
emit AssertionEventUintInt(result, message, "greaterThan", a, b);
}
function greaterThan(int256 a, uint256 b, string memory message) public returns (bool result) {
if(a < int(0)) {
// int is negative uint "b" always greater
result = false;
} else {
result = (uint(a) > b);
}
emit AssertionEventIntUint(result, message, "greaterThan", a, b);
}
/*----------------- Lesser than --------------------*/
function lesserThan(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a < b);
emit AssertionEventUint(result, message, "lesserThan", a, b);
}
function lesserThan(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a < b);
emit AssertionEventInt(result, message, "lesserThan", a, b);
}
// TODO: safely compare between uint and int
function lesserThan(uint256 a, int256 b, string memory message) public returns (bool result) {
if(b < int(0)) {
// int is negative int "b" always lesser
result = false;
} else {
result = (a < uint(b));
}
emit AssertionEventUintInt(result, message, "lesserThan", a, b);
}
function lesserThan(int256 a, uint256 b, string memory message) public returns (bool result) {
if(a < int(0)) {
// int is negative int "a" always lesser
result = true;
} else {
result = (uint(a) < b);
}
emit AssertionEventIntUint(result, message, "lesserThan", a, b);
}
}
### remove the '#' to use the environment variables
# export PRIVATE_KEY=asafdagadd
# export WEB3_INFURA_PROJECT_ID=asdfsdf
### Optional - don't uncomment if you don't know what they do!
# export ETHERSCAN_TOKEN=asdfasdfasdf
# export IPFS_URL=http://127.0.0.1:5001
# export UPLOAD_IPFS=true
# export PINATA_API_KEY='asdfasdfs'
# export PINATA_API_SECRET='asdfasdfsdf'
{
"overrides": [
{
"files": "*.sol",
"options": {
"printWidth": 80,
"tabWidth": 4,
"useTabs": false,
"singleQuote": false,
"bracketSpacing": false
}
},
{
"files": "*.yml",
"options": {}
},
{
"files": "*.yaml",
"options": {}
},
{
"files": "*.toml",
"options": {}
},
{
"files": "*.json",
"options": {}
},
{
"files": "*.js",
"options": {}
},
{
"files": "*.ts",
"options": {}
}
]
}
REMIX DEFAULT WORKSPACE
Remix default workspace is present when:
i. Remix loads for the very first time
ii. A new workspace is created with 'Default' template
iii. There are no files existing in the File Explorer
This workspace contains 3 directories:
1. 'contracts': Holds three contracts with increasing levels of complexity.
2. 'scripts': Contains four typescript files to deploy a contract. It is explained below.
3. 'tests': Contains one Solidity test file for 'Ballot' contract & one JS test file for 'Storage' contract.
SCRIPTS
The 'scripts' folder has four typescript files which help to deploy the 'Storage' contract using 'web3.js' and 'ethers.js' libraries.
For the deployment of any other contract, just update the contract's name from 'Storage' to the desired contract and provide constructor arguments accordingly
in the file `deploy_with_ethers.ts` or `deploy_with_web3.ts`
In the 'tests' folder there is a script containing Mocha-Chai unit tests for 'Storage' contract.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
Please note, require/import is supported in a limited manner for Remix supported modules.
For now, modules supported by Remix are ethers, web3, swarmgw, chai, multihashes, remix and hardhat only for hardhat.ethers object/plugin.
For unsupported modules, an error like this will be thrown: '<module_name> module require is not supported by Remix IDE' will be shown.
# exclude SafeMath when calculating test coverage
# https://eth-brownie.readthedocs.io/en/v1.10.3/config.html#exclude_paths
reports:
exclude_contracts:
- SafeMath
dependencies:
- smartcontractkit/chainlink-brownie-contracts@1.1.1
- OpenZeppelin/openzeppelin-contracts@3.4.0
compiler:
solc:
remappings:
- '@chainlink=smartcontractkit/chainlink-brownie-contracts@1.1.1'
- '@openzeppelin=OpenZeppelin/openzeppelin-contracts@3.4.0'
# automatically fetch contract sources from Etherscan
autofetch_sources: True
dotenv: .env
# set a custom mnemonic for the development network
networks:
default: development
kovan:
vrf_coordinator: '0xdD3782915140c8f3b190B5D67eAc6dc5760C46E9'
link_token: '0xa36085F69e2889c224210F603D836748e7dC0088'
keyhash: '0x6c3699283bda56ad74f6b855546325b68d482e983852a7a82979cc4807b641f4'
fee: 100000000000000000
oracle: '0x2f90A6D021db21e1B2A077c5a37B3C7E75D15b7e'
jobId: '29fa9aa13bf1468788b7cc4a500a45b8'
eth_usd_price_feed: '0x9326BFA02ADD2366b30bacB125260Af641031331'
rinkeby:
vrf_coordinator: '0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B'
link_token: '0x01be23585060835e02b77ef475b0cc51aa1e0709'
keyhash: '0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311'
fee: 100000000000000000
oracle: '0x7AFe1118Ea78C1eae84ca8feE5C65Bc76CcF879e'
jobId: '6d1bfe27e7034b1d87b5270556b17277'
eth_usd_price_feed: '0x8A753747A1Fa494EC906cE90E9f37563A8AF630e'
mumbai:
eth_usd_price_feed: '0x0715A7794a1dc8e42615F059dD6e406A6594651A'
binance:
# link_token: ??
eth_usd_price_feed: '0x9ef1B8c0E4F7dc8bF5719Ea496883DC6401d5b2e'
binance-fork:
eth_usd_price_feed: '0x9ef1B8c0E4F7dc8bF5719Ea496883DC6401d5b2e'
mainnet-fork:
eth_usd_price_feed: '0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419'
matic-fork:
eth_usd_price_feed: '0xF9680D99D6C9589e2a93a78A04A279e509205945'
wallets:
from_key: ${PRIVATE_KEY}
from_mnemonic: ${MNEMONIC}
# You'd have to change the accounts.add to accounts.from_mnemonic to use from_mnemonic
// SPDX-License-Identifier: MIT
pragma solidity 0.6.6;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract SimpleCollectible is ERC721 {
uint256 public tokenCounter;
constructor () public ERC721 ("Dogie", "DOG"){
tokenCounter = 0;
}
function createCollectible(string memory tokenURI) public returns (uint256) {
uint256 newItemId = tokenCounter;
_safeMint(msg.sender, newItemId);
_setTokenURI(newItemId, tokenURI);
tokenCounter = tokenCounter + 1;
return newItemId;
}
}
pragma solidity 0.6.6;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@chainlink/contracts/src/v0.6/VRFConsumerBase.sol";
contract AdvancedCollectible is ERC721, VRFConsumerBase {
uint256 public tokenCounter;
enum Breed{PUG, SHIBA_INU, ST_BERNARD}
// add other things
mapping(bytes32 => address) public requestIdToSender;
mapping(bytes32 => string) public requestIdToTokenURI;
mapping(uint256 => Breed) public tokenIdToBreed;
mapping(bytes32 => uint256) public requestIdToTokenId;
event RequestedCollectible(bytes32 indexed requestId);
// New event from the video!
event ReturnedCollectible(bytes32 indexed requestId, uint256 randomNumber);
bytes32 internal keyHash;
uint256 internal fee;
constructor(address _VRFCoordinator, address _LinkToken, bytes32 _keyhash)
public
VRFConsumerBase(_VRFCoordinator, _LinkToken)
ERC721("Dogie", "DOG")
{
tokenCounter = 0;
keyHash = _keyhash;
fee = 0.1 * 10 ** 18;
}
function createCollectible(string memory tokenURI)
public returns (bytes32){
bytes32 requestId = requestRandomness(keyHash, fee);
requestIdToSender[requestId] = msg.sender;
requestIdToTokenURI[requestId] = tokenURI;
emit RequestedCollectible(requestId);
}
function fulfillRandomness(bytes32 requestId, uint256 randomNumber) internal override {
address dogOwner = requestIdToSender[requestId];
string memory tokenURI = requestIdToTokenURI[requestId];
uint256 newItemId = tokenCounter;
_safeMint(dogOwner, newItemId);
_setTokenURI(newItemId, tokenURI);
Breed breed = Breed(randomNumber % 3);
tokenIdToBreed[newItemId] = breed;
requestIdToTokenId[requestId] = newItemId;
tokenCounter = tokenCounter + 1;
emit ReturnedCollectible(requestId, randomNumber);
}
function setTokenURI(uint256 tokenId, string memory _tokenURI) public {
require(
_isApprovedOrOwner(_msgSender(), tokenId),
"ERC721: transfer caller is not owner nor approved"
);
_setTokenURI(tokenId, _tokenURI);
}
}
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0;
/// @title Base64
/// @author Brecht Devos - <brecht@loopring.org>
/// @notice Provides functions for encoding/decoding base64
library Base64 {
string internal constant TABLE_ENCODE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
bytes internal constant TABLE_DECODE = hex"0000000000000000000000000000000000000000000000000000000000000000"
hex"00000000000000000000003e0000003f3435363738393a3b3c3d000000000000"
hex"00000102030405060708090a0b0c0d0e0f101112131415161718190000000000"
hex"001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132330000000000";
function encode(bytes memory data) internal pure returns (string memory) {
if (data.length == 0) return '';
// load the table into memory
string memory table = TABLE_ENCODE;
// multiply by 4/3 rounded up
uint256 encodedLen = 4 * ((data.length + 2) / 3);
// add some extra buffer at the end required for the writing
string memory result = new string(encodedLen + 32);
assembly {
// set the actual output length
mstore(result, encodedLen)
// prepare the lookup table
let tablePtr := add(table, 1)
// input ptr
let dataPtr := data
let endPtr := add(dataPtr, mload(data))
// result ptr, jump over length
let resultPtr := add(result, 32)
// run over the input, 3 bytes at a time
for {} lt(dataPtr, endPtr) {}
{
// read 3 bytes
dataPtr := add(dataPtr, 3)
let input := mload(dataPtr)
// write 4 characters
mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F))))
resultPtr := add(resultPtr, 1)
mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F))))
resultPtr := add(resultPtr, 1)
mstore8(resultPtr, mload(add(tablePtr, and(shr( 6, input), 0x3F))))
resultPtr := add(resultPtr, 1)
mstore8(resultPtr, mload(add(tablePtr, and( input, 0x3F))))
resultPtr := add(resultPtr, 1)
}
// padding with '='
switch mod(mload(data), 3)
case 1 { mstore(sub(resultPtr, 2), shl(240, 0x3d3d)) }
case 2 { mstore(sub(resultPtr, 1), shl(248, 0x3d)) }
}
return result;
}
function decode(string memory _data) internal pure returns (bytes memory) {
bytes memory data = bytes(_data);
if (data.length == 0) return new bytes(0);
require(data.length % 4 == 0, "invalid base64 decoder input");
// load the table into memory
bytes memory table = TABLE_DECODE;
// every 4 characters represent 3 bytes
uint256 decodedLen = (data.length / 4) * 3;
// add some extra buffer at the end required for the writing
bytes memory result = new bytes(decodedLen + 32);
assembly {
// padding with '='
let lastBytes := mload(add(data, mload(data)))
if eq(and(lastBytes, 0xFF), 0x3d) {
decodedLen := sub(decodedLen, 1)
if eq(and(lastBytes, 0xFFFF), 0x3d3d) {
decodedLen := sub(decodedLen, 1)
}
}
// set the actual output length
mstore(result, decodedLen)
// prepare the lookup table
let tablePtr := add(table, 1)
// input ptr
let dataPtr := data
let endPtr := add(dataPtr, mload(data))
// result ptr, jump over length
let resultPtr := add(result, 32)
// run over the input, 4 characters at a time
for {} lt(dataPtr, endPtr) {}
{
// read 4 characters
dataPtr := add(dataPtr, 4)
let input := mload(dataPtr)
// write 3 bytes
let output := add(
add(
shl(18, and(mload(add(tablePtr, and(shr(24, input), 0xFF))), 0xFF)),
shl(12, and(mload(add(tablePtr, and(shr(16, input), 0xFF))), 0xFF))),
add(
shl( 6, and(mload(add(tablePtr, and(shr( 8, input), 0xFF))), 0xFF)),
and(mload(add(tablePtr, and( input , 0xFF))), 0xFF)
)
)
mstore(resultPtr, shl(232, output))
resultPtr := add(resultPtr, 3)
}
}
return result;
}
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203b44aa00548a1c9f852d07e3aba4acc03ebbc561bfac4acdbb52b2e98528395264736f6c63430008000033",
"opcodes": "PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE DIFFICULTY 0xAA STOP SLOAD DUP11 SHR SWAP16 DUP6 0x2D SMOD 0xE3 0xAB LOG4 0xAC 0xC0 RETURNDATACOPY 0xBB 0xC5 PUSH2 0xBFAC 0x4A 0xCD 0xBB MSTORE 0xB2 0xE9 DUP6 0x28 CODECOPY MSTORE PUSH5 0x736F6C6343 STOP ADDMOD STOP STOP CALLER ",
"sourceMap": "187:4638:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203b44aa00548a1c9f852d07e3aba4acc03ebbc561bfac4acdbb52b2e98528395264736f6c63430008000033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE DIFFICULTY 0xAA STOP SLOAD DUP11 SHR SWAP16 DUP6 0x2D SMOD 0xE3 0xAB LOG4 0xAC 0xC0 RETURNDATACOPY 0xBB 0xC5 PUSH2 0xBFAC 0x4A 0xCD 0xBB MSTORE 0xB2 0xE9 DUP6 0x28 CODECOPY MSTORE PUSH5 0x736F6C6343 STOP ADDMOD STOP STOP CALLER ",
"sourceMap": "187:4638:0:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "97",
"totalCost": "17297"
},
"internal": {
"decode(string memory)": "infinite",
"encode(bytes memory)": "infinite"
}
},
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.8.0+commit.c7dfd78e"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"author": "Brecht Devos - <brecht@loopring.org>",
"kind": "dev",
"methods": {},
"title": "Base64",
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"notice": "Provides functions for encoding/decoding base64",
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/3_base64.sol": "Base64"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/3_base64.sol": {
"keccak256": "0x886096e768d18c270855f33394185c25080045571329d43bf3ed0122ad769506",
"license": "MIT",
"urls": [
"bzz-raw://18455d680a5c7a43c7ab79c3b33bfd3c10f158b7cef7196a459df82d509f1cea",
"dweb:/ipfs/QmV7JF9nfdx6LRcHoWomsAqCLH23fHvdtcxnydZYWZ5JYx"
]
}
},
"version": 1
}
{
"id": "c1b74305aa133159dec9c2aea34f3f1d",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.0",
"solcLongVersion": "0.8.0+commit.c7dfd78e",
"input": {
"language": "Solidity",
"sources": {
"contracts/1_SimpleCollectible.sol": {
"content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0;\n\n/// @title Base64\n/// @author Brecht Devos - <brecht@loopring.org>\n/// @notice Provides functions for encoding/decoding base64\nlibrary Base64 {\n string internal constant TABLE_ENCODE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n bytes internal constant TABLE_DECODE = hex\"0000000000000000000000000000000000000000000000000000000000000000\"\n hex\"00000000000000000000003e0000003f3435363738393a3b3c3d000000000000\"\n hex\"00000102030405060708090a0b0c0d0e0f101112131415161718190000000000\"\n hex\"001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132330000000000\";\n\n function encode(bytes memory data) internal pure returns (string memory) {\n if (data.length == 0) return '';\n\n // load the table into memory\n string memory table = TABLE_ENCODE;\n\n // multiply by 4/3 rounded up\n uint256 encodedLen = 4 * ((data.length + 2) / 3);\n\n // add some extra buffer at the end required for the writing\n string memory result = new string(encodedLen + 32);\n\n assembly {\n // set the actual output length\n mstore(result, encodedLen)\n\n // prepare the lookup table\n let tablePtr := add(table, 1)\n\n // input ptr\n let dataPtr := data\n let endPtr := add(dataPtr, mload(data))\n\n // result ptr, jump over length\n let resultPtr := add(result, 32)\n\n // run over the input, 3 bytes at a time\n for {} lt(dataPtr, endPtr) {}\n {\n // read 3 bytes\n dataPtr := add(dataPtr, 3)\n let input := mload(dataPtr)\n\n // write 4 characters\n mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F))))\n resultPtr := add(resultPtr, 1)\n mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F))))\n resultPtr := add(resultPtr, 1)\n mstore8(resultPtr, mload(add(tablePtr, and(shr( 6, input), 0x3F))))\n resultPtr := add(resultPtr, 1)\n mstore8(resultPtr, mload(add(tablePtr, and( input, 0x3F))))\n resultPtr := add(resultPtr, 1)\n }\n\n // padding with '='\n switch mod(mload(data), 3)\n case 1 { mstore(sub(resultPtr, 2), shl(240, 0x3d3d)) }\n case 2 { mstore(sub(resultPtr, 1), shl(248, 0x3d)) }\n }\n\n return result;\n }\n\n function decode(string memory _data) internal pure returns (bytes memory) {\n bytes memory data = bytes(_data);\n\n if (data.length == 0) return new bytes(0);\n require(data.length % 4 == 0, \"invalid base64 decoder input\");\n\n // load the table into memory\n bytes memory table = TABLE_DECODE;\n\n // every 4 characters represent 3 bytes\n uint256 decodedLen = (data.length / 4) * 3;\n\n // add some extra buffer at the end required for the writing\n bytes memory result = new bytes(decodedLen + 32);\n\n assembly {\n // padding with '='\n let lastBytes := mload(add(data, mload(data)))\n if eq(and(lastBytes, 0xFF), 0x3d) {\n decodedLen := sub(decodedLen, 1)\n if eq(and(lastBytes, 0xFFFF), 0x3d3d) {\n decodedLen := sub(decodedLen, 1)\n }\n }\n\n // set the actual output length\n mstore(result, decodedLen)\n\n // prepare the lookup table\n let tablePtr := add(table, 1)\n\n // input ptr\n let dataPtr := data\n let endPtr := add(dataPtr, mload(data))\n\n // result ptr, jump over length\n let resultPtr := add(result, 32)\n\n // run over the input, 4 characters at a time\n for {} lt(dataPtr, endPtr) {}\n {\n // read 4 characters\n dataPtr := add(dataPtr, 4)\n let input := mload(dataPtr)\n\n // write 3 bytes\n let output := add(\n add(\n shl(18, and(mload(add(tablePtr, and(shr(24, input), 0xFF))), 0xFF)),\n shl(12, and(mload(add(tablePtr, and(shr(16, input), 0xFF))), 0xFF))),\n add(\n shl( 6, and(mload(add(tablePtr, and(shr( 8, input), 0xFF))), 0xFF)),\n and(mload(add(tablePtr, and( input , 0xFF))), 0xFF)\n )\n )\n mstore(resultPtr, shl(232, output))\n resultPtr := add(resultPtr, 3)\n }\n }\n\n return result;\n }\n}"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
}
}
},
"output": {
"contracts": {
"contracts/1_SimpleCollectible.sol": {
"Base64": {
"abi": [],
"devdoc": {
"author": "Brecht Devos - <brecht@loopring.org>",
"kind": "dev",
"methods": {},
"title": "Base64",
"version": 1
},
"evm": {
"assembly": " /* \"contracts/1_SimpleCollectible.sol\":186:4824 library Base64 {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/1_SimpleCollectible.sol\":186:4824 library Base64 {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212206e8120da43acbb8a0915e1da564e47a0fb039977da9a3cd5580731c58285c38364736f6c63430008000033\n}\n",
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e8120da43acbb8a0915e1da564e47a0fb039977da9a3cd5580731c58285c38364736f6c63430008000033",
"opcodes": "PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x8120DA43ACBB8A0915E1DA564E47A0 0xFB SUB SWAP10 PUSH24 0xDA9A3CD5580731C58285C38364736F6C6343000800003300 ",
"sourceMap": "186:4638:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e8120da43acbb8a0915e1da564e47a0fb039977da9a3cd5580731c58285c38364736f6c63430008000033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x8120DA43ACBB8A0915E1DA564E47A0 0xFB SUB SWAP10 PUSH24 0xDA9A3CD5580731C58285C38364736F6C6343000800003300 ",
"sourceMap": "186:4638:0:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "97",
"totalCost": "17297"
},
"internal": {
"decode(string memory)": "infinite",
"encode(bytes memory)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 186,
"end": 4824,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 186,
"end": 4824,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 186,
"end": 4824,
"name": "PUSH",
"source": 0,
"value": "B"
},
{
"begin": 186,
"end": 4824,
"name": "DUP3",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "DUP3",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "DUP3",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "CODECOPY",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "DUP1",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "MLOAD",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 186,
"end": 4824,
"name": "BYTE",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "PUSH",
"source": 0,
"value": "73"
},
{
"begin": 186,
"end": 4824,
"name": "EQ",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 186,
"end": 4824,
"name": "JUMPI",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "PUSH",
"source": 0,
"value": "4E487B7100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 186,
"end": 4824,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 186,
"end": 4824,
"name": "MSTORE",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 186,
"end": 4824,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 186,
"end": 4824,
"name": "MSTORE",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "PUSH",
"source": 0,
"value": "24"
},
{
"begin": 186,
"end": 4824,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 186,
"end": 4824,
"name": "REVERT",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 186,
"end": 4824,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "ADDRESS",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 186,
"end": 4824,
"name": "MSTORE",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "PUSH",
"source": 0,
"value": "73"
},
{
"begin": 186,
"end": 4824,
"name": "DUP2",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "MSTORE8",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "DUP3",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "DUP2",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "RETURN",
"source": 0
}
],
".data": {
"0": {
".auxdata": "a26469706673582212206e8120da43acbb8a0915e1da564e47a0fb039977da9a3cd5580731c58285c38364736f6c63430008000033",
".code": [
{
"begin": 186,
"end": 4824,
"name": "PUSHDEPLOYADDRESS",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "ADDRESS",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "EQ",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 186,
"end": 4824,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 186,
"end": 4824,
"name": "MSTORE",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 186,
"end": 4824,
"name": "DUP1",
"source": 0
},
{
"begin": 186,
"end": 4824,
"name": "REVERT",
"source": 0
}
]
}
}
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Brecht Devos - <brecht@loopring.org>\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Base64\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Provides functions for encoding/decoding base64\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/1_SimpleCollectible.sol\":\"Base64\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/1_SimpleCollectible.sol\":{\"keccak256\":\"0x1c028c11af1c0456b73c889a98bd7a66f06ac60c9c18e31e0ae3170b138b53f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6ec71f205f878d72eb77409b93a627ba6b5acbce05f7b470c497a57ed675687\",\"dweb:/ipfs/QmRo4uXKiSQa1BbovJXDH6xxEL6hfjzbdWgCYyyWr21ULz\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"notice": "Provides functions for encoding/decoding base64",
"version": 1
}
}
}
},
"sources": {
"contracts/1_SimpleCollectible.sol": {
"ast": {
"absolutePath": "contracts/1_SimpleCollectible.sol",
"exportedSymbols": {
"Base64": [
114
]
},
"id": 115,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
">=",
"0.6",
".0"
],
"nodeType": "PragmaDirective",
"src": "33:24:0"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "library",
"documentation": {
"id": 2,
"nodeType": "StructuredDocumentation",
"src": "59:127:0",
"text": "@title Base64\n @author Brecht Devos - <brecht@loopring.org>\n @notice Provides functions for encoding/decoding base64"
},
"fullyImplemented": true,
"id": 114,
"linearizedBaseContracts": [
114
],
"name": "Base64",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 5,
"mutability": "constant",
"name": "TABLE_ENCODE",
"nodeType": "VariableDeclaration",
"scope": 114,
"src": "207:106:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 3,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "207:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"hexValue": "4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f",
"id": 4,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "247:66:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_84d8a590de33e00cbdc16e1f28c3506f5ec15c599fab9a6a4bcd575cc2f110ce",
"typeString": "literal_string \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\""
},
"value": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
},
"visibility": "internal"
},
{
"constant": true,
"id": 8,
"mutability": "constant",
"name": "TABLE_DECODE",
"nodeType": "VariableDeclaration",
"scope": 114,
"src": "319:451:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 6,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "319:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": {
"hexValue": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e0000003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f101112131415161718190000000000001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132330000000000",
"id": 7,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "hexString",
"lValueRequested": false,
"nodeType": "Literal",
"src": "359:411:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_cbed483d4f9f83dd52b06773fd58dd8723113252a85374752ef109e22dfa50f9",
"typeString": "literal_string hex\"000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e0000003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f101112131415161718190000000000001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132330000000000\""
},
"value": "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000>\u0000\u0000\u0000?456789:;<=\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u0000\u0000\u0000\u0000\u0000\u0000\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123\u0000\u0000\u0000\u0000\u0000"
},
"visibility": "internal"
},
{
"body": {
"id": 51,
"nodeType": "Block",
"src": "850:1788:0",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 18,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 15,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10,
"src": "864:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 16,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "864:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 17,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "879:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "864:16:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 21,
"nodeType": "IfStatement",
"src": "860:31:0",
"trueBody": {
"expression": {
"hexValue": "",
"id": 19,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "889:2:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
},
"functionReturnParameters": 14,
"id": 20,
"nodeType": "Return",
"src": "882:9:0"
}
},
{
"assignments": [
23
],
"declarations": [
{
"constant": false,
"id": 23,
"mutability": "mutable",
"name": "table",
"nodeType": "VariableDeclaration",
"scope": 51,
"src": "940:19:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 22,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "940:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"id": 25,
"initialValue": {
"id": 24,
"name": "TABLE_ENCODE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5,
"src": "962:12:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "940:34:0"
},
{
"assignments": [
27
],
"declarations": [
{
"constant": false,
"id": 27,
"mutability": "mutable",
"name": "encodedLen",
"nodeType": "VariableDeclaration",
"scope": 51,
"src": "1023:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1023:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 38,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 37,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"hexValue": "34",
"id": 28,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1044:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_4_by_1",
"typeString": "int_const 4"
},
"value": "4"
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 35,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 32,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 29,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10,
"src": "1050:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 30,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "1050:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "32",
"id": 31,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1064:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"src": "1050:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 33,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "1049:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "/",
"rightExpression": {
"hexValue": "33",
"id": 34,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1069:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_3_by_1",
"typeString": "int_const 3"
},
"value": "3"
},
"src": "1049:21:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 36,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "1048:23:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1044:27:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1023:48:0"
},
{
"assignments": [
40
],
"declarations": [
{
"constant": false,
"id": 40,
"mutability": "mutable",
"name": "result",
"nodeType": "VariableDeclaration",
"scope": 51,
"src": "1151:20:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 39,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1151:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"id": 47,
"initialValue": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 45,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43,
"name": "encodedLen",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27,
"src": "1185:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "3332",
"id": 44,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1198:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "1185:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 42,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "1174:10:0",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
"typeString": "function (uint256) pure returns (string memory)"
},
"typeName": {
"id": 41,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1178:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
}
},
"id": 46,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1174:27:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1151:50:0"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "1221:1387:0",
"statements": [
{
"expression": {
"arguments": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "1286:6:0"
},
{
"name": "encodedLen",
"nodeType": "YulIdentifier",
"src": "1294:10:0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1279:6:0"
},
"nodeType": "YulFunctionCall",
"src": "1279:26:0"
},
"nodeType": "YulExpressionStatement",
"src": "1279:26:0"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1359:29:0",
"value": {
"arguments": [
{
"name": "table",
"nodeType": "YulIdentifier",
"src": "1379:5:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1386:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1375:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1375:13:0"
},
"variables": [
{
"name": "tablePtr",
"nodeType": "YulTypedName",
"src": "1363:8:0",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1427:19:0",
"value": {
"name": "data",
"nodeType": "YulIdentifier",
"src": "1442:4:0"
},
"variables": [
{
"name": "dataPtr",
"nodeType": "YulTypedName",
"src": "1431:7:0",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1459:39:0",
"value": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "1477:7:0"
},
{
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1492:4:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1486:5:0"
},
"nodeType": "YulFunctionCall",
"src": "1486:11:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1473:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1473:25:0"
},
"variables": [
{
"name": "endPtr",
"nodeType": "YulTypedName",
"src": "1463:6:0",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1556:32:0",
"value": {
"arguments": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "1577:6:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1585:2:0",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1573:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1573:15:0"
},
"variables": [
{
"name": "resultPtr",
"nodeType": "YulTypedName",
"src": "1560:9:0",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1697:697:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1747:26:0",
"value": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "1762:7:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1771:1:0",
"type": "",
"value": "3"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1758:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1758:15:0"
},
"variableNames": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "1747:7:0"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1790:27:0",
"value": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "1809:7:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1803:5:0"
},
"nodeType": "YulFunctionCall",
"src": "1803:14:0"
},
"variables": [
{
"name": "input",
"nodeType": "YulTypedName",
"src": "1794:5:0",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "1881:9:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "1902:8:0"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1920:2:0",
"type": "",
"value": "18"
},
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "1924:5:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "1916:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1916:14:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1932:4:0",
"type": "",
"value": "0x3F"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1912:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1912:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1898:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1898:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1892:5:0"
},
"nodeType": "YulFunctionCall",
"src": "1892:47:0"
}
],
"functionName": {
"name": "mstore8",
"nodeType": "YulIdentifier",
"src": "1873:7:0"
},
"nodeType": "YulFunctionCall",
"src": "1873:67:0"
},
"nodeType": "YulExpressionStatement",
"src": "1873:67:0"
},
{
"nodeType": "YulAssignment",
"src": "1957:30:0",
"value": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "1974:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1985:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1970:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1970:17:0"
},
"variableNames": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "1957:9:0"
}
]
},
{
"expression": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2012:9:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "2033:8:0"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2051:2:0",
"type": "",
"value": "12"
},
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "2055:5:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "2047:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2047:14:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2063:4:0",
"type": "",
"value": "0x3F"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2043:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2043:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2029:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2029:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2023:5:0"
},
"nodeType": "YulFunctionCall",
"src": "2023:47:0"
}
],
"functionName": {
"name": "mstore8",
"nodeType": "YulIdentifier",
"src": "2004:7:0"
},
"nodeType": "YulFunctionCall",
"src": "2004:67:0"
},
"nodeType": "YulExpressionStatement",
"src": "2004:67:0"
},
{
"nodeType": "YulAssignment",
"src": "2088:30:0",
"value": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2105:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2116:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2101:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2101:17:0"
},
"variableNames": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2088:9:0"
}
]
},
{
"expression": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2143:9:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "2164:8:0"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2183:1:0",
"type": "",
"value": "6"
},
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "2186:5:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "2178:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2178:14:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2194:4:0",
"type": "",
"value": "0x3F"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2174:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2174:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2160:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2160:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2154:5:0"
},
"nodeType": "YulFunctionCall",
"src": "2154:47:0"
}
],
"functionName": {
"name": "mstore8",
"nodeType": "YulIdentifier",
"src": "2135:7:0"
},
"nodeType": "YulFunctionCall",
"src": "2135:67:0"
},
"nodeType": "YulExpressionStatement",
"src": "2135:67:0"
},
{
"nodeType": "YulAssignment",
"src": "2219:30:0",
"value": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2236:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2247:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2232:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2232:17:0"
},
"variableNames": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2219:9:0"
}
]
},
{
"expression": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2274:9:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "2295:8:0"
},
{
"arguments": [
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "2317:5:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2325:4:0",
"type": "",
"value": "0x3F"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2305:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2305:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2291:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2291:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2285:5:0"
},
"nodeType": "YulFunctionCall",
"src": "2285:47:0"
}
],
"functionName": {
"name": "mstore8",
"nodeType": "YulIdentifier",
"src": "2266:7:0"
},
"nodeType": "YulFunctionCall",
"src": "2266:67:0"
},
"nodeType": "YulExpressionStatement",
"src": "2266:67:0"
},
{
"nodeType": "YulAssignment",
"src": "2350:30:0",
"value": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2367:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2378:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2363:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2363:17:0"
},
"variableNames": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2350:9:0"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "1665:7:0"
},
{
"name": "endPtr",
"nodeType": "YulIdentifier",
"src": "1674:6:0"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1662:2:0"
},
"nodeType": "YulFunctionCall",
"src": "1662:19:0"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "1682:2:0",
"statements": []
},
"pre": {
"nodeType": "YulBlock",
"src": "1659:2:0",
"statements": []
},
"src": "1655:739:0"
},
{
"cases": [
{
"body": {
"nodeType": "YulBlock",
"src": "2486:47:0",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2499:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2510:1:0",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2495:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2495:17:0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2518:3:0",
"type": "",
"value": "240"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2523:6:0",
"type": "",
"value": "0x3d3d"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "2514:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2514:16:0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2488:6:0"
},
"nodeType": "YulFunctionCall",
"src": "2488:43:0"
},
"nodeType": "YulExpressionStatement",
"src": "2488:43:0"
}
]
},
"nodeType": "YulCase",
"src": "2479:54:0",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2484:1:0",
"type": "",
"value": "1"
}
},
{
"body": {
"nodeType": "YulBlock",
"src": "2553:45:0",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2566:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2577:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2562:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2562:17:0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2585:3:0",
"type": "",
"value": "248"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2590:4:0",
"type": "",
"value": "0x3d"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "2581:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2581:14:0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2555:6:0"
},
"nodeType": "YulFunctionCall",
"src": "2555:41:0"
},
"nodeType": "YulExpressionStatement",
"src": "2555:41:0"
}
]
},
"nodeType": "YulCase",
"src": "2546:52:0",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2551:1:0",
"type": "",
"value": "2"
}
}
],
"expression": {
"arguments": [
{
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "2457:4:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2451:5:0"
},
"nodeType": "YulFunctionCall",
"src": "2451:11:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2464:1:0",
"type": "",
"value": "3"
}
],
"functionName": {
"name": "mod",
"nodeType": "YulIdentifier",
"src": "2447:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2447:19:0"
},
"nodeType": "YulSwitch",
"src": "2440:158:0"
}
]
},
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 10,
"isOffset": false,
"isSlot": false,
"src": "1442:4:0",
"valueSize": 1
},
{
"declaration": 10,
"isOffset": false,
"isSlot": false,
"src": "1492:4:0",
"valueSize": 1
},
{
"declaration": 10,
"isOffset": false,
"isSlot": false,
"src": "2457:4:0",
"valueSize": 1
},
{
"declaration": 27,
"isOffset": false,
"isSlot": false,
"src": "1294:10:0",
"valueSize": 1
},
{
"declaration": 40,
"isOffset": false,
"isSlot": false,
"src": "1286:6:0",
"valueSize": 1
},
{
"declaration": 40,
"isOffset": false,
"isSlot": false,
"src": "1577:6:0",
"valueSize": 1
},
{
"declaration": 23,
"isOffset": false,
"isSlot": false,
"src": "1379:5:0",
"valueSize": 1
}
],
"id": 48,
"nodeType": "InlineAssembly",
"src": "1212:1396:0"
},
{
"expression": {
"id": 49,
"name": "result",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "2625:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"functionReturnParameters": 14,
"id": 50,
"nodeType": "Return",
"src": "2618:13:0"
}
]
},
"id": 52,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "encode",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 11,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 52,
"src": "793:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 9,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "793:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "792:19:0"
},
"returnParameters": {
"id": 14,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 13,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 52,
"src": "835:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 12,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "835:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "834:15:0"
},
"scope": 114,
"src": "777:1861:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 112,
"nodeType": "Block",
"src": "2718:2104:0",
"statements": [
{
"assignments": [
60
],
"declarations": [
{
"constant": false,
"id": 60,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 112,
"src": "2728:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 59,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2728:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 65,
"initialValue": {
"arguments": [
{
"id": 63,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 54,
"src": "2754:5:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 62,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2748:5:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
"typeString": "type(bytes storage pointer)"
},
"typeName": {
"id": 61,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2748:5:0",
"typeDescriptions": {}
}
},
"id": 64,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2748:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2728:32:0"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 69,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 66,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "2775:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 67,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "2775:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 68,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2790:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2775:16:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 75,
"nodeType": "IfStatement",
"src": "2771:41:0",
"trueBody": {
"expression": {
"arguments": [
{
"hexValue": "30",
"id": 72,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2810:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 71,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "2800:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (uint256) pure returns (bytes memory)"
},
"typeName": {
"id": 70,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2804:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
}
},
"id": 73,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2800:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 58,
"id": 74,
"nodeType": "Return",
"src": "2793:19:0"
}
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 82,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 80,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 77,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "2830:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 78,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "2830:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "%",
"rightExpression": {
"hexValue": "34",
"id": 79,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2844:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_4_by_1",
"typeString": "int_const 4"
},
"value": "4"
},
"src": "2830:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 81,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2849:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2830:20:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "696e76616c696420626173653634206465636f64657220696e707574",
"id": 83,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2852:30:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b899645e29043a8d30000fb8ed0252b5c4f6f5f09672aefa374ee368d324bb89",
"typeString": "literal_string \"invalid base64 decoder input\""
},
"value": "invalid base64 decoder input"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_b899645e29043a8d30000fb8ed0252b5c4f6f5f09672aefa374ee368d324bb89",
"typeString": "literal_string \"invalid base64 decoder input\""
}
],
"id": 76,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "2822:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 84,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2822:61:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 85,
"nodeType": "ExpressionStatement",
"src": "2822:61:0"
},
{
"assignments": [
87
],
"declarations": [
{
"constant": false,
"id": 87,
"mutability": "mutable",
"name": "table",
"nodeType": "VariableDeclaration",
"scope": 112,
"src": "2932:18:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 86,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2932:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 89,
"initialValue": {
"id": 88,
"name": "TABLE_DECODE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8,
"src": "2953:12:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2932:33:0"
},
{
"assignments": [
91
],
"declarations": [
{
"constant": false,
"id": 91,
"mutability": "mutable",
"name": "decodedLen",
"nodeType": "VariableDeclaration",
"scope": 112,
"src": "3024:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 90,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3024:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 99,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 98,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 95,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 92,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "3046:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 93,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "3046:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "/",
"rightExpression": {
"hexValue": "34",
"id": 94,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3060:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_4_by_1",
"typeString": "int_const 4"
},
"value": "4"
},
"src": "3046:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 96,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "3045:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"hexValue": "33",
"id": 97,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3065:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_3_by_1",
"typeString": "int_const 3"
},
"value": "3"
},
"src": "3045:21:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3024:42:0"
},
{
"assignments": [
101
],
"declarations": [
{
"constant": false,
"id": 101,
"mutability": "mutable",
"name": "result",
"nodeType": "VariableDeclaration",
"scope": 112,
"src": "3146:19:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 100,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3146:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 108,
"initialValue": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 106,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 104,
"name": "decodedLen",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 91,
"src": "3178:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "3332",
"id": 105,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3191:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "3178:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 103,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "3168:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (uint256) pure returns (bytes memory)"
},
"typeName": {
"id": 102,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3172:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
}
},
"id": 107,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3168:26:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3146:48:0"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "3214:1578:0",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3260:46:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "3287:4:0"
},
{
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "3299:4:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "3293:5:0"
},
"nodeType": "YulFunctionCall",
"src": "3293:11:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3283:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3283:22:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "3277:5:0"
},
"nodeType": "YulFunctionCall",
"src": "3277:29:0"
},
"variables": [
{
"name": "lastBytes",
"nodeType": "YulTypedName",
"src": "3264:9:0",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3353:191:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3371:32:0",
"value": {
"arguments": [
{
"name": "decodedLen",
"nodeType": "YulIdentifier",
"src": "3389:10:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3401:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3385:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3385:18:0"
},
"variableNames": [
{
"name": "decodedLen",
"nodeType": "YulIdentifier",
"src": "3371:10:0"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3458:72:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3480:32:0",
"value": {
"arguments": [
{
"name": "decodedLen",
"nodeType": "YulIdentifier",
"src": "3498:10:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3510:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3494:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3494:18:0"
},
"variableNames": [
{
"name": "decodedLen",
"nodeType": "YulIdentifier",
"src": "3480:10:0"
}
]
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "lastBytes",
"nodeType": "YulIdentifier",
"src": "3430:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3441:6:0",
"type": "",
"value": "0xFFFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3426:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3426:22:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3450:6:0",
"type": "",
"value": "0x3d3d"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3423:2:0"
},
"nodeType": "YulFunctionCall",
"src": "3423:34:0"
},
"nodeType": "YulIf",
"src": "3420:2:0"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "lastBytes",
"nodeType": "YulIdentifier",
"src": "3329:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3340:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3325:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3325:20:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3347:4:0",
"type": "",
"value": "0x3d"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3322:2:0"
},
"nodeType": "YulFunctionCall",
"src": "3322:30:0"
},
"nodeType": "YulIf",
"src": "3319:2:0"
},
{
"expression": {
"arguments": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "3609:6:0"
},
{
"name": "decodedLen",
"nodeType": "YulIdentifier",
"src": "3617:10:0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3602:6:0"
},
"nodeType": "YulFunctionCall",
"src": "3602:26:0"
},
"nodeType": "YulExpressionStatement",
"src": "3602:26:0"
},
{
"nodeType": "YulVariableDeclaration",
"src": "3682:29:0",
"value": {
"arguments": [
{
"name": "table",
"nodeType": "YulIdentifier",
"src": "3702:5:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3709:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3698:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3698:13:0"
},
"variables": [
{
"name": "tablePtr",
"nodeType": "YulTypedName",
"src": "3686:8:0",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3750:19:0",
"value": {
"name": "data",
"nodeType": "YulIdentifier",
"src": "3765:4:0"
},
"variables": [
{
"name": "dataPtr",
"nodeType": "YulTypedName",
"src": "3754:7:0",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3782:39:0",
"value": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "3800:7:0"
},
{
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "3815:4:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "3809:5:0"
},
"nodeType": "YulFunctionCall",
"src": "3809:11:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3796:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3796:25:0"
},
"variables": [
{
"name": "endPtr",
"nodeType": "YulTypedName",
"src": "3786:6:0",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3879:32:0",
"value": {
"arguments": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "3900:6:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3908:2:0",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3896:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3896:15:0"
},
"variables": [
{
"name": "resultPtr",
"nodeType": "YulTypedName",
"src": "3883:9:0",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4025:757:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4078:26:0",
"value": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "4093:7:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4102:1:0",
"type": "",
"value": "4"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4089:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4089:15:0"
},
"variableNames": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "4078:7:0"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "4120:27:0",
"value": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "4139:7:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4133:5:0"
},
"nodeType": "YulFunctionCall",
"src": "4133:14:0"
},
"variables": [
{
"name": "input",
"nodeType": "YulTypedName",
"src": "4124:5:0",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "4196:473:0",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4266:2:0",
"type": "",
"value": "18"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "4284:8:0"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4302:2:0",
"type": "",
"value": "24"
},
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "4306:5:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "4298:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4298:14:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4314:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4294:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4294:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4280:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4280:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4274:5:0"
},
"nodeType": "YulFunctionCall",
"src": "4274:47:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4323:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4270:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4270:58:0"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "4262:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4262:67:0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4358:2:0",
"type": "",
"value": "12"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "4376:8:0"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4394:2:0",
"type": "",
"value": "16"
},
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "4398:5:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "4390:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4390:14:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4406:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4386:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4386:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4372:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4372:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4366:5:0"
},
"nodeType": "YulFunctionCall",
"src": "4366:47:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4415:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4362:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4362:58:0"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "4354:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4354:67:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4234:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4234:188:0"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4476:1:0",
"type": "",
"value": "6"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "4493:8:0"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4512:1:0",
"type": "",
"value": "8"
},
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "4515:5:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "4507:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4507:14:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4523:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4503:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4503:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4489:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4489:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4483:5:0"
},
"nodeType": "YulFunctionCall",
"src": "4483:47:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4532:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4479:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4479:58:0"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "4471:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4471:67:0"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "4585:8:0"
},
{
"arguments": [
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "4607:5:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4615:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4595:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4595:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4581:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4581:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4575:5:0"
},
"nodeType": "YulFunctionCall",
"src": "4575:47:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4624:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4571:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4571:58:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4443:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4443:208:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4210:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4210:459:0"
},
"variables": [
{
"name": "output",
"nodeType": "YulTypedName",
"src": "4200:6:0",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "4693:9:0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4708:3:0",
"type": "",
"value": "232"
},
{
"name": "output",
"nodeType": "YulIdentifier",
"src": "4713:6:0"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "4704:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4704:16:0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4686:6:0"
},
"nodeType": "YulFunctionCall",
"src": "4686:35:0"
},
"nodeType": "YulExpressionStatement",
"src": "4686:35:0"
},
{
"nodeType": "YulAssignment",
"src": "4738:30:0",
"value": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "4755:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4766:1:0",
"type": "",
"value": "3"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4751:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4751:17:0"
},
"variableNames": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "4738:9:0"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "3993:7:0"
},
{
"name": "endPtr",
"nodeType": "YulIdentifier",
"src": "4002:6:0"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "3990:2:0"
},
"nodeType": "YulFunctionCall",
"src": "3990:19:0"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "4010:2:0",
"statements": []
},
"pre": {
"nodeType": "YulBlock",
"src": "3987:2:0",
"statements": []
},
"src": "3983:799:0"
}
]
},
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 60,
"isOffset": false,
"isSlot": false,
"src": "3287:4:0",
"valueSize": 1
},
{
"declaration": 60,
"isOffset": false,
"isSlot": false,
"src": "3299:4:0",
"valueSize": 1
},
{
"declaration": 60,
"isOffset": false,
"isSlot": false,
"src": "3765:4:0",
"valueSize": 1
},
{
"declaration": 60,
"isOffset": false,
"isSlot": false,
"src": "3815:4:0",
"valueSize": 1
},
{
"declaration": 91,
"isOffset": false,
"isSlot": false,
"src": "3371:10:0",
"valueSize": 1
},
{
"declaration": 91,
"isOffset": false,
"isSlot": false,
"src": "3389:10:0",
"valueSize": 1
},
{
"declaration": 91,
"isOffset": false,
"isSlot": false,
"src": "3480:10:0",
"valueSize": 1
},
{
"declaration": 91,
"isOffset": false,
"isSlot": false,
"src": "3498:10:0",
"valueSize": 1
},
{
"declaration": 91,
"isOffset": false,
"isSlot": false,
"src": "3617:10:0",
"valueSize": 1
},
{
"declaration": 101,
"isOffset": false,
"isSlot": false,
"src": "3609:6:0",
"valueSize": 1
},
{
"declaration": 101,
"isOffset": false,
"isSlot": false,
"src": "3900:6:0",
"valueSize": 1
},
{
"declaration": 87,
"isOffset": false,
"isSlot": false,
"src": "3702:5:0",
"valueSize": 1
}
],
"id": 109,
"nodeType": "InlineAssembly",
"src": "3205:1587:0"
},
{
"expression": {
"id": 110,
"name": "result",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "4809:6:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 58,
"id": 111,
"nodeType": "Return",
"src": "4802:13:0"
}
]
},
"id": 113,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "decode",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 55,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 54,
"mutability": "mutable",
"name": "_data",
"nodeType": "VariableDeclaration",
"scope": 113,
"src": "2660:19:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 53,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2660:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2659:21:0"
},
"returnParameters": {
"id": 58,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 57,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 113,
"src": "2704:12:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 56,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2704:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "2703:14:0"
},
"scope": 114,
"src": "2644:2178:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
}
],
"scope": 115,
"src": "186:4638:0"
}
],
"src": "33:4791:0"
},
"id": 0
}
}
}
}
{
"id": "c95db5d105aa5198c32246083779546e",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.0",
"solcLongVersion": "0.8.0+commit.c7dfd78e",
"input": {
"language": "Solidity",
"sources": {
"contracts/3_base64.sol": {
"content": "\n// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0;\n\n/// @title Base64\n/// @author Brecht Devos - <brecht@loopring.org>\n/// @notice Provides functions for encoding/decoding base64\nlibrary Base64 {\n string internal constant TABLE_ENCODE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n bytes internal constant TABLE_DECODE = hex\"0000000000000000000000000000000000000000000000000000000000000000\"\n hex\"00000000000000000000003e0000003f3435363738393a3b3c3d000000000000\"\n hex\"00000102030405060708090a0b0c0d0e0f101112131415161718190000000000\"\n hex\"001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132330000000000\";\n\n function encode(bytes memory data) internal pure returns (string memory) {\n if (data.length == 0) return '';\n\n // load the table into memory\n string memory table = TABLE_ENCODE;\n\n // multiply by 4/3 rounded up\n uint256 encodedLen = 4 * ((data.length + 2) / 3);\n\n // add some extra buffer at the end required for the writing\n string memory result = new string(encodedLen + 32);\n\n assembly {\n // set the actual output length\n mstore(result, encodedLen)\n\n // prepare the lookup table\n let tablePtr := add(table, 1)\n\n // input ptr\n let dataPtr := data\n let endPtr := add(dataPtr, mload(data))\n\n // result ptr, jump over length\n let resultPtr := add(result, 32)\n\n // run over the input, 3 bytes at a time\n for {} lt(dataPtr, endPtr) {}\n {\n // read 3 bytes\n dataPtr := add(dataPtr, 3)\n let input := mload(dataPtr)\n\n // write 4 characters\n mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F))))\n resultPtr := add(resultPtr, 1)\n mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F))))\n resultPtr := add(resultPtr, 1)\n mstore8(resultPtr, mload(add(tablePtr, and(shr( 6, input), 0x3F))))\n resultPtr := add(resultPtr, 1)\n mstore8(resultPtr, mload(add(tablePtr, and( input, 0x3F))))\n resultPtr := add(resultPtr, 1)\n }\n\n // padding with '='\n switch mod(mload(data), 3)\n case 1 { mstore(sub(resultPtr, 2), shl(240, 0x3d3d)) }\n case 2 { mstore(sub(resultPtr, 1), shl(248, 0x3d)) }\n }\n\n return result;\n }\n\n function decode(string memory _data) internal pure returns (bytes memory) {\n bytes memory data = bytes(_data);\n\n if (data.length == 0) return new bytes(0);\n require(data.length % 4 == 0, \"invalid base64 decoder input\");\n\n // load the table into memory\n bytes memory table = TABLE_DECODE;\n\n // every 4 characters represent 3 bytes\n uint256 decodedLen = (data.length / 4) * 3;\n\n // add some extra buffer at the end required for the writing\n bytes memory result = new bytes(decodedLen + 32);\n\n assembly {\n // padding with '='\n let lastBytes := mload(add(data, mload(data)))\n if eq(and(lastBytes, 0xFF), 0x3d) {\n decodedLen := sub(decodedLen, 1)\n if eq(and(lastBytes, 0xFFFF), 0x3d3d) {\n decodedLen := sub(decodedLen, 1)\n }\n }\n\n // set the actual output length\n mstore(result, decodedLen)\n\n // prepare the lookup table\n let tablePtr := add(table, 1)\n\n // input ptr\n let dataPtr := data\n let endPtr := add(dataPtr, mload(data))\n\n // result ptr, jump over length\n let resultPtr := add(result, 32)\n\n // run over the input, 4 characters at a time\n for {} lt(dataPtr, endPtr) {}\n {\n // read 4 characters\n dataPtr := add(dataPtr, 4)\n let input := mload(dataPtr)\n\n // write 3 bytes\n let output := add(\n add(\n shl(18, and(mload(add(tablePtr, and(shr(24, input), 0xFF))), 0xFF)),\n shl(12, and(mload(add(tablePtr, and(shr(16, input), 0xFF))), 0xFF))),\n add(\n shl( 6, and(mload(add(tablePtr, and(shr( 8, input), 0xFF))), 0xFF)),\n and(mload(add(tablePtr, and( input , 0xFF))), 0xFF)\n )\n )\n mstore(resultPtr, shl(232, output))\n resultPtr := add(resultPtr, 3)\n }\n }\n\n return result;\n }\n}"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
}
}
},
"output": {
"contracts": {
"contracts/3_base64.sol": {
"Base64": {
"abi": [],
"devdoc": {
"author": "Brecht Devos - <brecht@loopring.org>",
"kind": "dev",
"methods": {},
"title": "Base64",
"version": 1
},
"evm": {
"assembly": " /* \"contracts/3_base64.sol\":187:4825 library Base64 {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/3_base64.sol\":187:4825 library Base64 {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212203b44aa00548a1c9f852d07e3aba4acc03ebbc561bfac4acdbb52b2e98528395264736f6c63430008000033\n}\n",
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203b44aa00548a1c9f852d07e3aba4acc03ebbc561bfac4acdbb52b2e98528395264736f6c63430008000033",
"opcodes": "PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE DIFFICULTY 0xAA STOP SLOAD DUP11 SHR SWAP16 DUP6 0x2D SMOD 0xE3 0xAB LOG4 0xAC 0xC0 RETURNDATACOPY 0xBB 0xC5 PUSH2 0xBFAC 0x4A 0xCD 0xBB MSTORE 0xB2 0xE9 DUP6 0x28 CODECOPY MSTORE PUSH5 0x736F6C6343 STOP ADDMOD STOP STOP CALLER ",
"sourceMap": "187:4638:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203b44aa00548a1c9f852d07e3aba4acc03ebbc561bfac4acdbb52b2e98528395264736f6c63430008000033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE DIFFICULTY 0xAA STOP SLOAD DUP11 SHR SWAP16 DUP6 0x2D SMOD 0xE3 0xAB LOG4 0xAC 0xC0 RETURNDATACOPY 0xBB 0xC5 PUSH2 0xBFAC 0x4A 0xCD 0xBB MSTORE 0xB2 0xE9 DUP6 0x28 CODECOPY MSTORE PUSH5 0x736F6C6343 STOP ADDMOD STOP STOP CALLER ",
"sourceMap": "187:4638:0:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "97",
"totalCost": "17297"
},
"internal": {
"decode(string memory)": "infinite",
"encode(bytes memory)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 187,
"end": 4825,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 187,
"end": 4825,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 187,
"end": 4825,
"name": "PUSH",
"source": 0,
"value": "B"
},
{
"begin": 187,
"end": 4825,
"name": "DUP3",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "DUP3",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "DUP3",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "CODECOPY",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "DUP1",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "MLOAD",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 187,
"end": 4825,
"name": "BYTE",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "PUSH",
"source": 0,
"value": "73"
},
{
"begin": 187,
"end": 4825,
"name": "EQ",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 187,
"end": 4825,
"name": "JUMPI",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "PUSH",
"source": 0,
"value": "4E487B7100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 187,
"end": 4825,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 187,
"end": 4825,
"name": "MSTORE",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 187,
"end": 4825,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 187,
"end": 4825,
"name": "MSTORE",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "PUSH",
"source": 0,
"value": "24"
},
{
"begin": 187,
"end": 4825,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 187,
"end": 4825,
"name": "REVERT",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 187,
"end": 4825,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "ADDRESS",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 187,
"end": 4825,
"name": "MSTORE",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "PUSH",
"source": 0,
"value": "73"
},
{
"begin": 187,
"end": 4825,
"name": "DUP2",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "MSTORE8",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "DUP3",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "DUP2",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "RETURN",
"source": 0
}
],
".data": {
"0": {
".auxdata": "a26469706673582212203b44aa00548a1c9f852d07e3aba4acc03ebbc561bfac4acdbb52b2e98528395264736f6c63430008000033",
".code": [
{
"begin": 187,
"end": 4825,
"name": "PUSHDEPLOYADDRESS",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "ADDRESS",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "EQ",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 187,
"end": 4825,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 187,
"end": 4825,
"name": "MSTORE",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 187,
"end": 4825,
"name": "DUP1",
"source": 0
},
{
"begin": 187,
"end": 4825,
"name": "REVERT",
"source": 0
}
]
}
}
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Brecht Devos - <brecht@loopring.org>\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Base64\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Provides functions for encoding/decoding base64\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/3_base64.sol\":\"Base64\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/3_base64.sol\":{\"keccak256\":\"0x886096e768d18c270855f33394185c25080045571329d43bf3ed0122ad769506\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18455d680a5c7a43c7ab79c3b33bfd3c10f158b7cef7196a459df82d509f1cea\",\"dweb:/ipfs/QmV7JF9nfdx6LRcHoWomsAqCLH23fHvdtcxnydZYWZ5JYx\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"notice": "Provides functions for encoding/decoding base64",
"version": 1
}
}
}
},
"sources": {
"contracts/3_base64.sol": {
"ast": {
"absolutePath": "contracts/3_base64.sol",
"exportedSymbols": {
"Base64": [
114
]
},
"id": 115,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
">=",
"0.6",
".0"
],
"nodeType": "PragmaDirective",
"src": "34:24:0"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "library",
"documentation": {
"id": 2,
"nodeType": "StructuredDocumentation",
"src": "60:127:0",
"text": "@title Base64\n @author Brecht Devos - <brecht@loopring.org>\n @notice Provides functions for encoding/decoding base64"
},
"fullyImplemented": true,
"id": 114,
"linearizedBaseContracts": [
114
],
"name": "Base64",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 5,
"mutability": "constant",
"name": "TABLE_ENCODE",
"nodeType": "VariableDeclaration",
"scope": 114,
"src": "208:106:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 3,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "208:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"hexValue": "4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f",
"id": 4,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "248:66:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_84d8a590de33e00cbdc16e1f28c3506f5ec15c599fab9a6a4bcd575cc2f110ce",
"typeString": "literal_string \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\""
},
"value": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
},
"visibility": "internal"
},
{
"constant": true,
"id": 8,
"mutability": "constant",
"name": "TABLE_DECODE",
"nodeType": "VariableDeclaration",
"scope": 114,
"src": "320:451:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 6,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "320:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": {
"hexValue": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e0000003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f101112131415161718190000000000001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132330000000000",
"id": 7,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "hexString",
"lValueRequested": false,
"nodeType": "Literal",
"src": "360:411:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_cbed483d4f9f83dd52b06773fd58dd8723113252a85374752ef109e22dfa50f9",
"typeString": "literal_string hex\"000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e0000003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f101112131415161718190000000000001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132330000000000\""
},
"value": "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000>\u0000\u0000\u0000?456789:;<=\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u0000\u0000\u0000\u0000\u0000\u0000\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123\u0000\u0000\u0000\u0000\u0000"
},
"visibility": "internal"
},
{
"body": {
"id": 51,
"nodeType": "Block",
"src": "851:1788:0",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 18,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 15,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10,
"src": "865:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 16,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "865:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 17,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "880:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "865:16:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 21,
"nodeType": "IfStatement",
"src": "861:31:0",
"trueBody": {
"expression": {
"hexValue": "",
"id": 19,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "890:2:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
},
"functionReturnParameters": 14,
"id": 20,
"nodeType": "Return",
"src": "883:9:0"
}
},
{
"assignments": [
23
],
"declarations": [
{
"constant": false,
"id": 23,
"mutability": "mutable",
"name": "table",
"nodeType": "VariableDeclaration",
"scope": 51,
"src": "941:19:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 22,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "941:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"id": 25,
"initialValue": {
"id": 24,
"name": "TABLE_ENCODE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5,
"src": "963:12:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "941:34:0"
},
{
"assignments": [
27
],
"declarations": [
{
"constant": false,
"id": 27,
"mutability": "mutable",
"name": "encodedLen",
"nodeType": "VariableDeclaration",
"scope": 51,
"src": "1024:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1024:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 38,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 37,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"hexValue": "34",
"id": 28,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1045:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_4_by_1",
"typeString": "int_const 4"
},
"value": "4"
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 35,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 32,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 29,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10,
"src": "1051:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 30,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "1051:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "32",
"id": 31,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1065:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"src": "1051:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 33,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "1050:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "/",
"rightExpression": {
"hexValue": "33",
"id": 34,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1070:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_3_by_1",
"typeString": "int_const 3"
},
"value": "3"
},
"src": "1050:21:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 36,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "1049:23:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1045:27:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1024:48:0"
},
{
"assignments": [
40
],
"declarations": [
{
"constant": false,
"id": 40,
"mutability": "mutable",
"name": "result",
"nodeType": "VariableDeclaration",
"scope": 51,
"src": "1152:20:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 39,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1152:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"id": 47,
"initialValue": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 45,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43,
"name": "encodedLen",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27,
"src": "1186:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "3332",
"id": 44,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1199:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "1186:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 42,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "1175:10:0",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
"typeString": "function (uint256) pure returns (string memory)"
},
"typeName": {
"id": 41,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1179:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
}
},
"id": 46,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1175:27:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1152:50:0"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "1222:1387:0",
"statements": [
{
"expression": {
"arguments": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "1287:6:0"
},
{
"name": "encodedLen",
"nodeType": "YulIdentifier",
"src": "1295:10:0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1280:6:0"
},
"nodeType": "YulFunctionCall",
"src": "1280:26:0"
},
"nodeType": "YulExpressionStatement",
"src": "1280:26:0"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1360:29:0",
"value": {
"arguments": [
{
"name": "table",
"nodeType": "YulIdentifier",
"src": "1380:5:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1387:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1376:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1376:13:0"
},
"variables": [
{
"name": "tablePtr",
"nodeType": "YulTypedName",
"src": "1364:8:0",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1428:19:0",
"value": {
"name": "data",
"nodeType": "YulIdentifier",
"src": "1443:4:0"
},
"variables": [
{
"name": "dataPtr",
"nodeType": "YulTypedName",
"src": "1432:7:0",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1460:39:0",
"value": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "1478:7:0"
},
{
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1493:4:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1487:5:0"
},
"nodeType": "YulFunctionCall",
"src": "1487:11:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1474:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1474:25:0"
},
"variables": [
{
"name": "endPtr",
"nodeType": "YulTypedName",
"src": "1464:6:0",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1557:32:0",
"value": {
"arguments": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "1578:6:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1586:2:0",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1574:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1574:15:0"
},
"variables": [
{
"name": "resultPtr",
"nodeType": "YulTypedName",
"src": "1561:9:0",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1698:697:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1748:26:0",
"value": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "1763:7:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1772:1:0",
"type": "",
"value": "3"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1759:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1759:15:0"
},
"variableNames": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "1748:7:0"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1791:27:0",
"value": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "1810:7:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1804:5:0"
},
"nodeType": "YulFunctionCall",
"src": "1804:14:0"
},
"variables": [
{
"name": "input",
"nodeType": "YulTypedName",
"src": "1795:5:0",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "1882:9:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "1903:8:0"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1921:2:0",
"type": "",
"value": "18"
},
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "1925:5:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "1917:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1917:14:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1933:4:0",
"type": "",
"value": "0x3F"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1913:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1913:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1899:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1899:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1893:5:0"
},
"nodeType": "YulFunctionCall",
"src": "1893:47:0"
}
],
"functionName": {
"name": "mstore8",
"nodeType": "YulIdentifier",
"src": "1874:7:0"
},
"nodeType": "YulFunctionCall",
"src": "1874:67:0"
},
"nodeType": "YulExpressionStatement",
"src": "1874:67:0"
},
{
"nodeType": "YulAssignment",
"src": "1958:30:0",
"value": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "1975:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1986:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1971:3:0"
},
"nodeType": "YulFunctionCall",
"src": "1971:17:0"
},
"variableNames": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "1958:9:0"
}
]
},
{
"expression": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2013:9:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "2034:8:0"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2052:2:0",
"type": "",
"value": "12"
},
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "2056:5:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "2048:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2048:14:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2064:4:0",
"type": "",
"value": "0x3F"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2044:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2044:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2030:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2030:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2024:5:0"
},
"nodeType": "YulFunctionCall",
"src": "2024:47:0"
}
],
"functionName": {
"name": "mstore8",
"nodeType": "YulIdentifier",
"src": "2005:7:0"
},
"nodeType": "YulFunctionCall",
"src": "2005:67:0"
},
"nodeType": "YulExpressionStatement",
"src": "2005:67:0"
},
{
"nodeType": "YulAssignment",
"src": "2089:30:0",
"value": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2106:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2117:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2102:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2102:17:0"
},
"variableNames": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2089:9:0"
}
]
},
{
"expression": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2144:9:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "2165:8:0"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2184:1:0",
"type": "",
"value": "6"
},
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "2187:5:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "2179:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2179:14:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2195:4:0",
"type": "",
"value": "0x3F"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2175:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2175:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2161:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2161:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2155:5:0"
},
"nodeType": "YulFunctionCall",
"src": "2155:47:0"
}
],
"functionName": {
"name": "mstore8",
"nodeType": "YulIdentifier",
"src": "2136:7:0"
},
"nodeType": "YulFunctionCall",
"src": "2136:67:0"
},
"nodeType": "YulExpressionStatement",
"src": "2136:67:0"
},
{
"nodeType": "YulAssignment",
"src": "2220:30:0",
"value": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2237:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2248:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2233:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2233:17:0"
},
"variableNames": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2220:9:0"
}
]
},
{
"expression": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2275:9:0"
},
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "2296:8:0"
},
{
"arguments": [
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "2318:5:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2326:4:0",
"type": "",
"value": "0x3F"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2306:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2306:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2292:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2292:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2286:5:0"
},
"nodeType": "YulFunctionCall",
"src": "2286:47:0"
}
],
"functionName": {
"name": "mstore8",
"nodeType": "YulIdentifier",
"src": "2267:7:0"
},
"nodeType": "YulFunctionCall",
"src": "2267:67:0"
},
"nodeType": "YulExpressionStatement",
"src": "2267:67:0"
},
{
"nodeType": "YulAssignment",
"src": "2351:30:0",
"value": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2368:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2379:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2364:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2364:17:0"
},
"variableNames": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2351:9:0"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "1666:7:0"
},
{
"name": "endPtr",
"nodeType": "YulIdentifier",
"src": "1675:6:0"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1663:2:0"
},
"nodeType": "YulFunctionCall",
"src": "1663:19:0"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "1683:2:0",
"statements": []
},
"pre": {
"nodeType": "YulBlock",
"src": "1660:2:0",
"statements": []
},
"src": "1656:739:0"
},
{
"cases": [
{
"body": {
"nodeType": "YulBlock",
"src": "2487:47:0",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2500:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2511:1:0",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2496:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2496:17:0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2519:3:0",
"type": "",
"value": "240"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2524:6:0",
"type": "",
"value": "0x3d3d"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "2515:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2515:16:0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2489:6:0"
},
"nodeType": "YulFunctionCall",
"src": "2489:43:0"
},
"nodeType": "YulExpressionStatement",
"src": "2489:43:0"
}
]
},
"nodeType": "YulCase",
"src": "2480:54:0",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2485:1:0",
"type": "",
"value": "1"
}
},
{
"body": {
"nodeType": "YulBlock",
"src": "2554:45:0",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "2567:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2578:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2563:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2563:17:0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2586:3:0",
"type": "",
"value": "248"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2591:4:0",
"type": "",
"value": "0x3d"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "2582:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2582:14:0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2556:6:0"
},
"nodeType": "YulFunctionCall",
"src": "2556:41:0"
},
"nodeType": "YulExpressionStatement",
"src": "2556:41:0"
}
]
},
"nodeType": "YulCase",
"src": "2547:52:0",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2552:1:0",
"type": "",
"value": "2"
}
}
],
"expression": {
"arguments": [
{
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "2458:4:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2452:5:0"
},
"nodeType": "YulFunctionCall",
"src": "2452:11:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2465:1:0",
"type": "",
"value": "3"
}
],
"functionName": {
"name": "mod",
"nodeType": "YulIdentifier",
"src": "2448:3:0"
},
"nodeType": "YulFunctionCall",
"src": "2448:19:0"
},
"nodeType": "YulSwitch",
"src": "2441:158:0"
}
]
},
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 10,
"isOffset": false,
"isSlot": false,
"src": "1443:4:0",
"valueSize": 1
},
{
"declaration": 10,
"isOffset": false,
"isSlot": false,
"src": "1493:4:0",
"valueSize": 1
},
{
"declaration": 10,
"isOffset": false,
"isSlot": false,
"src": "2458:4:0",
"valueSize": 1
},
{
"declaration": 27,
"isOffset": false,
"isSlot": false,
"src": "1295:10:0",
"valueSize": 1
},
{
"declaration": 40,
"isOffset": false,
"isSlot": false,
"src": "1287:6:0",
"valueSize": 1
},
{
"declaration": 40,
"isOffset": false,
"isSlot": false,
"src": "1578:6:0",
"valueSize": 1
},
{
"declaration": 23,
"isOffset": false,
"isSlot": false,
"src": "1380:5:0",
"valueSize": 1
}
],
"id": 48,
"nodeType": "InlineAssembly",
"src": "1213:1396:0"
},
{
"expression": {
"id": 49,
"name": "result",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "2626:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"functionReturnParameters": 14,
"id": 50,
"nodeType": "Return",
"src": "2619:13:0"
}
]
},
"id": 52,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "encode",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 11,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 52,
"src": "794:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 9,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "794:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "793:19:0"
},
"returnParameters": {
"id": 14,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 13,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 52,
"src": "836:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 12,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "836:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "835:15:0"
},
"scope": 114,
"src": "778:1861:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 112,
"nodeType": "Block",
"src": "2719:2104:0",
"statements": [
{
"assignments": [
60
],
"declarations": [
{
"constant": false,
"id": 60,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 112,
"src": "2729:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 59,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2729:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 65,
"initialValue": {
"arguments": [
{
"id": 63,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 54,
"src": "2755:5:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 62,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2749:5:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
"typeString": "type(bytes storage pointer)"
},
"typeName": {
"id": 61,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2749:5:0",
"typeDescriptions": {}
}
},
"id": 64,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2749:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2729:32:0"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 69,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 66,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "2776:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 67,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "2776:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 68,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2791:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2776:16:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 75,
"nodeType": "IfStatement",
"src": "2772:41:0",
"trueBody": {
"expression": {
"arguments": [
{
"hexValue": "30",
"id": 72,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2811:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 71,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "2801:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (uint256) pure returns (bytes memory)"
},
"typeName": {
"id": 70,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2805:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
}
},
"id": 73,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2801:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 58,
"id": 74,
"nodeType": "Return",
"src": "2794:19:0"
}
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 82,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 80,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 77,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "2831:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 78,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "2831:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "%",
"rightExpression": {
"hexValue": "34",
"id": 79,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2845:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_4_by_1",
"typeString": "int_const 4"
},
"value": "4"
},
"src": "2831:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 81,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2850:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2831:20:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "696e76616c696420626173653634206465636f64657220696e707574",
"id": 83,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2853:30:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b899645e29043a8d30000fb8ed0252b5c4f6f5f09672aefa374ee368d324bb89",
"typeString": "literal_string \"invalid base64 decoder input\""
},
"value": "invalid base64 decoder input"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_b899645e29043a8d30000fb8ed0252b5c4f6f5f09672aefa374ee368d324bb89",
"typeString": "literal_string \"invalid base64 decoder input\""
}
],
"id": 76,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "2823:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 84,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2823:61:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 85,
"nodeType": "ExpressionStatement",
"src": "2823:61:0"
},
{
"assignments": [
87
],
"declarations": [
{
"constant": false,
"id": 87,
"mutability": "mutable",
"name": "table",
"nodeType": "VariableDeclaration",
"scope": 112,
"src": "2933:18:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 86,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2933:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 89,
"initialValue": {
"id": 88,
"name": "TABLE_DECODE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8,
"src": "2954:12:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2933:33:0"
},
{
"assignments": [
91
],
"declarations": [
{
"constant": false,
"id": 91,
"mutability": "mutable",
"name": "decodedLen",
"nodeType": "VariableDeclaration",
"scope": 112,
"src": "3025:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 90,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3025:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 99,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 98,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 95,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 92,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "3047:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 93,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "3047:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "/",
"rightExpression": {
"hexValue": "34",
"id": 94,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3061:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_4_by_1",
"typeString": "int_const 4"
},
"value": "4"
},
"src": "3047:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 96,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "3046:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"hexValue": "33",
"id": 97,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3066:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_3_by_1",
"typeString": "int_const 3"
},
"value": "3"
},
"src": "3046:21:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3025:42:0"
},
{
"assignments": [
101
],
"declarations": [
{
"constant": false,
"id": 101,
"mutability": "mutable",
"name": "result",
"nodeType": "VariableDeclaration",
"scope": 112,
"src": "3147:19:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 100,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3147:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 108,
"initialValue": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 106,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 104,
"name": "decodedLen",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 91,
"src": "3179:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "3332",
"id": 105,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3192:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "3179:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 103,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "3169:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (uint256) pure returns (bytes memory)"
},
"typeName": {
"id": 102,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3173:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
}
},
"id": 107,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3169:26:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3147:48:0"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "3215:1578:0",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3261:46:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "3288:4:0"
},
{
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "3300:4:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "3294:5:0"
},
"nodeType": "YulFunctionCall",
"src": "3294:11:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3284:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3284:22:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "3278:5:0"
},
"nodeType": "YulFunctionCall",
"src": "3278:29:0"
},
"variables": [
{
"name": "lastBytes",
"nodeType": "YulTypedName",
"src": "3265:9:0",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3354:191:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3372:32:0",
"value": {
"arguments": [
{
"name": "decodedLen",
"nodeType": "YulIdentifier",
"src": "3390:10:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3402:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3386:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3386:18:0"
},
"variableNames": [
{
"name": "decodedLen",
"nodeType": "YulIdentifier",
"src": "3372:10:0"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3459:72:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3481:32:0",
"value": {
"arguments": [
{
"name": "decodedLen",
"nodeType": "YulIdentifier",
"src": "3499:10:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3511:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3495:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3495:18:0"
},
"variableNames": [
{
"name": "decodedLen",
"nodeType": "YulIdentifier",
"src": "3481:10:0"
}
]
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "lastBytes",
"nodeType": "YulIdentifier",
"src": "3431:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3442:6:0",
"type": "",
"value": "0xFFFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3427:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3427:22:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3451:6:0",
"type": "",
"value": "0x3d3d"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3424:2:0"
},
"nodeType": "YulFunctionCall",
"src": "3424:34:0"
},
"nodeType": "YulIf",
"src": "3421:2:0"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "lastBytes",
"nodeType": "YulIdentifier",
"src": "3330:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3341:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3326:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3326:20:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3348:4:0",
"type": "",
"value": "0x3d"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3323:2:0"
},
"nodeType": "YulFunctionCall",
"src": "3323:30:0"
},
"nodeType": "YulIf",
"src": "3320:2:0"
},
{
"expression": {
"arguments": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "3610:6:0"
},
{
"name": "decodedLen",
"nodeType": "YulIdentifier",
"src": "3618:10:0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3603:6:0"
},
"nodeType": "YulFunctionCall",
"src": "3603:26:0"
},
"nodeType": "YulExpressionStatement",
"src": "3603:26:0"
},
{
"nodeType": "YulVariableDeclaration",
"src": "3683:29:0",
"value": {
"arguments": [
{
"name": "table",
"nodeType": "YulIdentifier",
"src": "3703:5:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3710:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3699:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3699:13:0"
},
"variables": [
{
"name": "tablePtr",
"nodeType": "YulTypedName",
"src": "3687:8:0",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3751:19:0",
"value": {
"name": "data",
"nodeType": "YulIdentifier",
"src": "3766:4:0"
},
"variables": [
{
"name": "dataPtr",
"nodeType": "YulTypedName",
"src": "3755:7:0",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3783:39:0",
"value": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "3801:7:0"
},
{
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "3816:4:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "3810:5:0"
},
"nodeType": "YulFunctionCall",
"src": "3810:11:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3797:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3797:25:0"
},
"variables": [
{
"name": "endPtr",
"nodeType": "YulTypedName",
"src": "3787:6:0",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3880:32:0",
"value": {
"arguments": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "3901:6:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3909:2:0",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3897:3:0"
},
"nodeType": "YulFunctionCall",
"src": "3897:15:0"
},
"variables": [
{
"name": "resultPtr",
"nodeType": "YulTypedName",
"src": "3884:9:0",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4026:757:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4079:26:0",
"value": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "4094:7:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4103:1:0",
"type": "",
"value": "4"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4090:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4090:15:0"
},
"variableNames": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "4079:7:0"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "4121:27:0",
"value": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "4140:7:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4134:5:0"
},
"nodeType": "YulFunctionCall",
"src": "4134:14:0"
},
"variables": [
{
"name": "input",
"nodeType": "YulTypedName",
"src": "4125:5:0",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "4197:473:0",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4267:2:0",
"type": "",
"value": "18"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "4285:8:0"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4303:2:0",
"type": "",
"value": "24"
},
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "4307:5:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "4299:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4299:14:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4315:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4295:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4295:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4281:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4281:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4275:5:0"
},
"nodeType": "YulFunctionCall",
"src": "4275:47:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4324:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4271:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4271:58:0"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "4263:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4263:67:0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4359:2:0",
"type": "",
"value": "12"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "4377:8:0"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4395:2:0",
"type": "",
"value": "16"
},
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "4399:5:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "4391:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4391:14:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4407:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4387:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4387:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4373:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4373:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4367:5:0"
},
"nodeType": "YulFunctionCall",
"src": "4367:47:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4416:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4363:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4363:58:0"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "4355:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4355:67:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4235:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4235:188:0"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4477:1:0",
"type": "",
"value": "6"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "4494:8:0"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4513:1:0",
"type": "",
"value": "8"
},
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "4516:5:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "4508:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4508:14:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4524:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4504:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4504:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4490:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4490:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4484:5:0"
},
"nodeType": "YulFunctionCall",
"src": "4484:47:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4533:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4480:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4480:58:0"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "4472:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4472:67:0"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "tablePtr",
"nodeType": "YulIdentifier",
"src": "4586:8:0"
},
{
"arguments": [
{
"name": "input",
"nodeType": "YulIdentifier",
"src": "4608:5:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4616:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4596:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4596:25:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4582:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4582:40:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4576:5:0"
},
"nodeType": "YulFunctionCall",
"src": "4576:47:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4625:4:0",
"type": "",
"value": "0xFF"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4572:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4572:58:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4444:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4444:208:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4211:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4211:459:0"
},
"variables": [
{
"name": "output",
"nodeType": "YulTypedName",
"src": "4201:6:0",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "4694:9:0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4709:3:0",
"type": "",
"value": "232"
},
{
"name": "output",
"nodeType": "YulIdentifier",
"src": "4714:6:0"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "4705:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4705:16:0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4687:6:0"
},
"nodeType": "YulFunctionCall",
"src": "4687:35:0"
},
"nodeType": "YulExpressionStatement",
"src": "4687:35:0"
},
{
"nodeType": "YulAssignment",
"src": "4739:30:0",
"value": {
"arguments": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "4756:9:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4767:1:0",
"type": "",
"value": "3"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4752:3:0"
},
"nodeType": "YulFunctionCall",
"src": "4752:17:0"
},
"variableNames": [
{
"name": "resultPtr",
"nodeType": "YulIdentifier",
"src": "4739:9:0"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "dataPtr",
"nodeType": "YulIdentifier",
"src": "3994:7:0"
},
{
"name": "endPtr",
"nodeType": "YulIdentifier",
"src": "4003:6:0"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "3991:2:0"
},
"nodeType": "YulFunctionCall",
"src": "3991:19:0"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "4011:2:0",
"statements": []
},
"pre": {
"nodeType": "YulBlock",
"src": "3988:2:0",
"statements": []
},
"src": "3984:799:0"
}
]
},
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 60,
"isOffset": false,
"isSlot": false,
"src": "3288:4:0",
"valueSize": 1
},
{
"declaration": 60,
"isOffset": false,
"isSlot": false,
"src": "3300:4:0",
"valueSize": 1
},
{
"declaration": 60,
"isOffset": false,
"isSlot": false,
"src": "3766:4:0",
"valueSize": 1
},
{
"declaration": 60,
"isOffset": false,
"isSlot": false,
"src": "3816:4:0",
"valueSize": 1
},
{
"declaration": 91,
"isOffset": false,
"isSlot": false,
"src": "3372:10:0",
"valueSize": 1
},
{
"declaration": 91,
"isOffset": false,
"isSlot": false,
"src": "3390:10:0",
"valueSize": 1
},
{
"declaration": 91,
"isOffset": false,
"isSlot": false,
"src": "3481:10:0",
"valueSize": 1
},
{
"declaration": 91,
"isOffset": false,
"isSlot": false,
"src": "3499:10:0",
"valueSize": 1
},
{
"declaration": 91,
"isOffset": false,
"isSlot": false,
"src": "3618:10:0",
"valueSize": 1
},
{
"declaration": 101,
"isOffset": false,
"isSlot": false,
"src": "3610:6:0",
"valueSize": 1
},
{
"declaration": 101,
"isOffset": false,
"isSlot": false,
"src": "3901:6:0",
"valueSize": 1
},
{
"declaration": 87,
"isOffset": false,
"isSlot": false,
"src": "3703:5:0",
"valueSize": 1
}
],
"id": 109,
"nodeType": "InlineAssembly",
"src": "3206:1587:0"
},
{
"expression": {
"id": 110,
"name": "result",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "4810:6:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 58,
"id": 111,
"nodeType": "Return",
"src": "4803:13:0"
}
]
},
"id": 113,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "decode",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 55,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 54,
"mutability": "mutable",
"name": "_data",
"nodeType": "VariableDeclaration",
"scope": 113,
"src": "2661:19:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 53,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2661:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2660:21:0"
},
"returnParameters": {
"id": 58,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 57,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 113,
"src": "2705:12:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 56,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2705:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "2704:14:0"
},
"scope": 114,
"src": "2645:2178:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
}
],
"scope": 115,
"src": "187:4638:0"
}
],
"src": "34:4791:0"
},
"id": 0
}
}
}
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506040516113ba3803806113ba8339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611326806100946000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063165d35e1146100675780631f8f238c146100b157806340429946146101015780634b6022821461020c5780636ee4d5531461022a578063a4c0ed3614610295575b600080fd5b61006f61037a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100e7600480360360408110156100c757600080fd5b8101908080359060200190929190803590602001909291905050506103a3565b604051808215151515815260200191505060405180910390f35b61020a600480360361010081101561011857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156101c657600080fd5b8201836020820111156101d857600080fd5b803590602001918460018302840111640100000000831117156101fa57600080fd5b9091929391929390505050610761565b005b610214610c2b565b6040518082815260200191505060405180910390f35b6102936004803603608081101561024057600080fd5b81019080803590602001909291908035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190929190505050610c31565b005b610378600480360360608110156102ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156102f257600080fd5b82018360208201111561030457600080fd5b8035906020019184600183028401116401000000008311171561032657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ef0565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600082600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4d757374206861766520612076616c696420726571756573744964000000000081525060200191505060405180910390fd5b6104876112a1565b600160008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050905060016000868152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549063ffffffff0219169055505062061a805a101561061f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4d7573742070726f7669646520636f6e73756d657220656e6f7567682067617381525060200191505060405180910390fd5b6000816000015173ffffffffffffffffffffffffffffffffffffffff16826020015187876040516024018083815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106106ea57805182526020820191506020810190506020830392506106c7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461074c576040519150601f19603f3d011682016040523d82523d6000602084013e610751565b606091505b5050905080935050505092915050565b61076961037a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d75737420757365204c494e4b20746f6b656e0000000000000000000000000081525060200191505060405180910390fd5b856000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f742063616c6c6261636b20746f204c494e4b00000000000000000081525060200191505060405180910390fd5b60008a86604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140182815260200192505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d75737420757365206120756e6971756520494400000000000000000000000081525060200191505060405180910390fd5b6000610a1e61012c4261121990919063ffffffff16565b905060405180604001604052808a73ffffffffffffffffffffffffffffffffffffffff168152602001897bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152506001600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908360e01c0217905550905050897fd8d7ecc4800d25fa53ce0372f13a416d98907a7ef3d8d3bdd79cf4fe75529c658d848e8d8d878d8d8d604051808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509a505050505050505050505060405180910390a2505050505050505050505050565b61012c81565b600073ffffffffffffffffffffffffffffffffffffffff166001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d75737420757365206120756e6971756520494400000000000000000000000081525060200191505060405180910390fd5b42811115610d80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f52657175657374206973206e6f7420657870697265640000000000000000000081525060200191505060405180910390fd5b60016000858152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549063ffffffff02191690555050837fa7842b9ec549398102c0d91b1b9919b2f20558aefdadf57528a95c6cd3292e9360405160405180910390a26000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050506040513d6020811015610ed357600080fd5b8101908080519060200190929190505050610eea57fe5b50505050565b610ef861037a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d75737420757365204c494e4b20746f6b656e0000000000000000000000000081525060200191505060405180910390fd5b80600260200260040181511015611017576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496e76616c69642072657175657374206c656e6774680000000000000000000081525060200191505060405180910390fd5b81600060208201519050634042994660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146110db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4d757374207573652077686974656c69737465642066756e6374696f6e73000081525060200191505060405180910390fd5b85602485015284604485015260003073ffffffffffffffffffffffffffffffffffffffff16856040518082805190602001908083835b602083106111345780518252602082019150602081019050602083039250611111565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611194576040519150601f19603f3d011682016040523d82523d6000602084013e611199565b606091505b5050905080611210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f556e61626c6520746f206372656174652072657175657374000000000000000081525060200191505060405180910390fd5b50505050505050565b600080828401905083811015611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152509056fea2646970667358221220dd87fc10b55ea590fc91ca089bfcdcc4bbf4c4ad058be582d19c78c7cec1415b64736f6c63430006060033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x13BA CODESIZE SUB DUP1 PUSH2 0x13BA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x1326 DUP1 PUSH2 0x94 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x165D35E1 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x1F8F238C EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0x40429946 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x4B602282 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x6EE4D553 EQ PUSH2 0x22A JUMPI DUP1 PUSH4 0xA4C0ED36 EQ PUSH2 0x295 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x37A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x761 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x214 PUSH2 0xC2B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xC31 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x304 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0xEF0 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x47F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D757374206861766520612076616C6964207265717565737449640000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x487 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE POP POP SWAP1 POP PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH3 0x61A80 GAS LT ISZERO PUSH2 0x61F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D7573742070726F7669646520636F6E73756D657220656E6F75676820676173 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x6EA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x6C7 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x74C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x751 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x769 PUSH2 0x37A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x809 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365204C494E4B20746F6B656E00000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x8CD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E6E6F742063616C6C6261636B20746F204C494E4B000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA07 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365206120756E69717565204944000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA1E PUSH2 0x12C TIMESTAMP PUSH2 0x1219 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE POP PUSH1 0x1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP SWAP1 POP POP DUP10 PUSH32 0xD8D7ECC4800D25FA53CE0372F13A416D98907A7EF3D8D3BDD79CF4FE75529C65 DUP14 DUP5 DUP15 DUP14 DUP14 DUP8 DUP14 DUP14 DUP14 PUSH1 0x40 MLOAD DUP1 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x12C DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xD0A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365206120756E69717565204944000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP2 GT ISZERO PUSH2 0xD80 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x52657175657374206973206E6F74206578706972656400000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP4 PUSH32 0xA7842B9EC549398102C0D91B1B9919B2F20558AEFDADF57528A95C6CD3292E93 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEBD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xED3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xEEA JUMPI INVALID JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xEF8 PUSH2 0x37A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xF98 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365204C494E4B20746F6B656E00000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x20 MUL PUSH1 0x4 ADD DUP2 MLOAD LT ISZERO PUSH2 0x1017 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x496E76616C69642072657175657374206C656E67746800000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x0 PUSH1 0x20 DUP3 ADD MLOAD SWAP1 POP PUSH4 0x40429946 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ PUSH2 0x10DB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D757374207573652077686974656C69737465642066756E6374696F6E730000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x24 DUP6 ADD MSTORE DUP5 PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1134 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x1111 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1194 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1199 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1210 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x556E61626C6520746F2063726561746520726571756573740000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x1297 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDD DUP8 0xFC LT 0xB5 0x5E 0xA5 SWAP1 0xFC SWAP2 0xCA ADDMOD SWAP12 0xFC 0xDC 0xC4 0xBB DELEGATECALL 0xC4 0xAD SDIV DUP12 0xE5 DUP3 0xD1 SWAP13 PUSH25 0xC7CEC1415B64736F6C63430006060033000000000000000000 ",
"sourceMap": "493:5870:4:-:0;;;1440:141;5:9:-1;2:2;;;27:1;24;17:12;2:2;1440:141:4;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1440:141:4;;;;;;;;;;;;;;;;1520:5;1489:9;;:37;;;;;;;;;;;;;;;;;;1440:141;493:5870;;;;;;"
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100625760003560e01c8063165d35e1146100675780631f8f238c146100b157806340429946146101015780634b6022821461020c5780636ee4d5531461022a578063a4c0ed3614610295575b600080fd5b61006f61037a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100e7600480360360408110156100c757600080fd5b8101908080359060200190929190803590602001909291905050506103a3565b604051808215151515815260200191505060405180910390f35b61020a600480360361010081101561011857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156101c657600080fd5b8201836020820111156101d857600080fd5b803590602001918460018302840111640100000000831117156101fa57600080fd5b9091929391929390505050610761565b005b610214610c2b565b6040518082815260200191505060405180910390f35b6102936004803603608081101561024057600080fd5b81019080803590602001909291908035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190929190505050610c31565b005b610378600480360360608110156102ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156102f257600080fd5b82018360208201111561030457600080fd5b8035906020019184600183028401116401000000008311171561032657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ef0565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600082600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4d757374206861766520612076616c696420726571756573744964000000000081525060200191505060405180910390fd5b6104876112a1565b600160008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050905060016000868152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549063ffffffff0219169055505062061a805a101561061f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4d7573742070726f7669646520636f6e73756d657220656e6f7567682067617381525060200191505060405180910390fd5b6000816000015173ffffffffffffffffffffffffffffffffffffffff16826020015187876040516024018083815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106106ea57805182526020820191506020810190506020830392506106c7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461074c576040519150601f19603f3d011682016040523d82523d6000602084013e610751565b606091505b5050905080935050505092915050565b61076961037a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d75737420757365204c494e4b20746f6b656e0000000000000000000000000081525060200191505060405180910390fd5b856000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f742063616c6c6261636b20746f204c494e4b00000000000000000081525060200191505060405180910390fd5b60008a86604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140182815260200192505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d75737420757365206120756e6971756520494400000000000000000000000081525060200191505060405180910390fd5b6000610a1e61012c4261121990919063ffffffff16565b905060405180604001604052808a73ffffffffffffffffffffffffffffffffffffffff168152602001897bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152506001600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908360e01c0217905550905050897fd8d7ecc4800d25fa53ce0372f13a416d98907a7ef3d8d3bdd79cf4fe75529c658d848e8d8d878d8d8d604051808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509a505050505050505050505060405180910390a2505050505050505050505050565b61012c81565b600073ffffffffffffffffffffffffffffffffffffffff166001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d75737420757365206120756e6971756520494400000000000000000000000081525060200191505060405180910390fd5b42811115610d80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f52657175657374206973206e6f7420657870697265640000000000000000000081525060200191505060405180910390fd5b60016000858152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549063ffffffff02191690555050837fa7842b9ec549398102c0d91b1b9919b2f20558aefdadf57528a95c6cd3292e9360405160405180910390a26000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050506040513d6020811015610ed357600080fd5b8101908080519060200190929190505050610eea57fe5b50505050565b610ef861037a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d75737420757365204c494e4b20746f6b656e0000000000000000000000000081525060200191505060405180910390fd5b80600260200260040181511015611017576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496e76616c69642072657175657374206c656e6774680000000000000000000081525060200191505060405180910390fd5b81600060208201519050634042994660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146110db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4d757374207573652077686974656c69737465642066756e6374696f6e73000081525060200191505060405180910390fd5b85602485015284604485015260003073ffffffffffffffffffffffffffffffffffffffff16856040518082805190602001908083835b602083106111345780518252602082019150602081019050602083039250611111565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611194576040519150601f19603f3d011682016040523d82523d6000602084013e611199565b606091505b5050905080611210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f556e61626c6520746f206372656174652072657175657374000000000000000081525060200191505060405180910390fd5b50505050505050565b600080828401905083811015611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152509056fea2646970667358221220dd87fc10b55ea590fc91ca089bfcdcc4bbf4c4ad058be582d19c78c7cec1415b64736f6c63430006060033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x165D35E1 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x1F8F238C EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0x40429946 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x4B602282 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x6EE4D553 EQ PUSH2 0x22A JUMPI DUP1 PUSH4 0xA4C0ED36 EQ PUSH2 0x295 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x37A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x761 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x214 PUSH2 0xC2B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xC31 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x304 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0xEF0 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x47F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D757374206861766520612076616C6964207265717565737449640000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x487 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE POP POP SWAP1 POP PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH3 0x61A80 GAS LT ISZERO PUSH2 0x61F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D7573742070726F7669646520636F6E73756D657220656E6F75676820676173 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x6EA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x6C7 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x74C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x751 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x769 PUSH2 0x37A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x809 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365204C494E4B20746F6B656E00000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x8CD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E6E6F742063616C6C6261636B20746F204C494E4B000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA07 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365206120756E69717565204944000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA1E PUSH2 0x12C TIMESTAMP PUSH2 0x1219 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE POP PUSH1 0x1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP SWAP1 POP POP DUP10 PUSH32 0xD8D7ECC4800D25FA53CE0372F13A416D98907A7EF3D8D3BDD79CF4FE75529C65 DUP14 DUP5 DUP15 DUP14 DUP14 DUP8 DUP14 DUP14 DUP14 PUSH1 0x40 MLOAD DUP1 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x12C DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xD0A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365206120756E69717565204944000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP2 GT ISZERO PUSH2 0xD80 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x52657175657374206973206E6F74206578706972656400000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP4 PUSH32 0xA7842B9EC549398102C0D91B1B9919B2F20558AEFDADF57528A95C6CD3292E93 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEBD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xED3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xEEA JUMPI INVALID JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xEF8 PUSH2 0x37A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xF98 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365204C494E4B20746F6B656E00000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x20 MUL PUSH1 0x4 ADD DUP2 MLOAD LT ISZERO PUSH2 0x1017 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x496E76616C69642072657175657374206C656E67746800000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x0 PUSH1 0x20 DUP3 ADD MLOAD SWAP1 POP PUSH4 0x40429946 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ PUSH2 0x10DB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D757374207573652077686974656C69737465642066756E6374696F6E730000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x24 DUP6 ADD MSTORE DUP5 PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1134 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x1111 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1194 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1199 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1210 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x556E61626C6520746F2063726561746520726571756573740000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x1297 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDD DUP8 0xFC LT 0xB5 0x5E 0xA5 SWAP1 0xFC SWAP2 0xCA ADDMOD SWAP12 0xFC 0xDC 0xC4 0xBB DELEGATECALL 0xC4 0xAD SDIV DUP12 0xE5 DUP3 0xD1 SWAP13 PUSH25 0xC7CEC1415B64736F6C63430006060033000000000000000000 ",
"sourceMap": "493:5870:4:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;493:5870:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;5664:129:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3670:777;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3670:777:4;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2257:897;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;2257:897:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;2257:897:4;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;2257:897:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2257:897:4;;;;;;;;;;;;:::i;:::-;;608:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4956:498;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;4956:498:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;750:663:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;750:663:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;750:663:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;750:663:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;750:663:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;750:663:0;;;;;;;;;;;;;;;:::i;:::-;;5664:129:4;5743:7;5777:9;;;;;;;;;;;5762:25;;5664:129;:::o;3670:777::-;3810:4;3784:10;6064:1;6016:50;;:11;:23;6028:10;6016:23;;;;;;;;;;;:36;;;;;;;;;;;;:50;;;;6008:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3826:18:::1;;:::i;:::-;3847:11;:23;3859:10;3847:23;;;;;;;;;;;3826:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;3884:11;:23;3896:10;3884:23;;;;;;;;;;;;3877:30:::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;714:6;3922:9;:39;;3914:84;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;4268:12;4286:3;:16;;;:21;;4331:3;:22;;;4355:10;4367:5;4308:65;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4308:65:4;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;4308:65:4;4286:88;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4286:88:4;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;4267:107:4;;;4434:7;4427:14;;;;3670:777:::0;;;;;:::o;2257:897::-;1598:19:0;:17;:19::i;:::-;1584:33;;:10;:33;;;1576:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2561:16:4::1;6306:9;::::0;::::1;;;;;;;;;6291:25;;:3;:25;;;;6283:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;2589:17:::2;2636:7;2645:6;2619:33;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2619:33:4;;;2609:44;;;;;;2589:64;;2715:1;2668:49;;:11;:22;2680:9;2668:22;;;;;;;;;;;:35;;;;;;;;;;;;:49;;;2660:82;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;2800:18;2821:20;646:9;2821:3;:7;;:20;;;;:::i;:::-;2800:41;;2875:71;;;;;;;;2893:16;2875:71;;;;;;2920:19;2875:71;;;;;::::0;2850:11:::2;:22;2862:9;2850:22;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2982:7;2960:188;2998:7;3014:9;3032:8;3049:16;3074:19;3102:10;3121:12;3142:5;;2960:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2960:188:4;;;;;;;;;;;;;;;;;;;;;6351:1;;1647::0::1;2257:897:4::0;;;;;;;;;:::o;608:47::-;646:9;608:47;:::o;4956:498::-;5171:1;5123:50;;:11;:23;5135:10;5123:23;;;;;;;;;;;:36;;;;;;;;;;;;:50;;;;5115:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5279:3;5264:11;:18;;5256:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5325:11;:23;5337:10;5325:23;;;;;;;;;;;;5318:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5380:10;5360:31;;;;;;;;;;5407:9;;;;;;;;;;;:18;;;5426:10;5438:8;5407:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5407:40:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5407:40:4;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5407:40:4;;;;;;;;;;;;;;;;5400:48;;;;4956:498;;;;:::o;750:663:0:-;1598:19;:17;:19::i;:::-;1584:33;;:10;:33;;;1576:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;892:5:::1;260:1;334:2;:27;205:1;315:47;2310:5;:12;:38;;2302:73;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;929:5:::2;1874:19;2006:2;1999:5;1995:14;1989:21;1973:37;;148:10;2045:23;;2029:39;;;:12;:39;;;;2021:82;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;1041:7:::3;1036:2;1029:5;1025:14;1018:31;1171:7;1166:2;1159:5;1155:14;1148:31;1284:12;1310:4;1302:26;;1329:5;1302:33;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1302:33:0;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1283:52:0;;;1372:7;1364:44;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;2109:1;2381::::2;;1647::::1;750:663:::0;;;:::o;863:162:3:-;921:7;936:9;952:1;948;:5;936:17;;972:1;967;:6;;959:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1019:1;1012:8;;;863:162;;;;:::o;493:5870:4:-;;;;;;;;;;;;;;;;;;;;;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "980400",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"EXPIRY_TIME()": "249",
"cancelOracleRequest(bytes32,uint256,bytes4,uint256)": "infinite",
"fulfillOracleRequest(bytes32,bytes32)": "infinite",
"getChainlinkToken()": "1039",
"onTokenTransfer(address,uint256,bytes)": "infinite",
"oracleRequest(address,uint256,bytes32,address,bytes4,uint256,uint256,bytes)": "infinite"
}
},
"methodIdentifiers": {
"EXPIRY_TIME()": "4b602282",
"cancelOracleRequest(bytes32,uint256,bytes4,uint256)": "6ee4d553",
"fulfillOracleRequest(bytes32,bytes32)": "1f8f238c",
"getChainlinkToken()": "165d35e1",
"onTokenTransfer(address,uint256,bytes)": "a4c0ed36",
"oracleRequest(address,uint256,bytes32,address,bytes4,uint256,uint256,bytes)": "40429946"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_link",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
}
],
"name": "CancelOracleRequest",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "specId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "requester",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "payment",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "callbackAddr",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes4",
"name": "callbackFunctionId",
"type": "bytes4"
},
{
"indexed": false,
"internalType": "uint256",
"name": "cancelExpiration",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "dataVersion",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "OracleRequest",
"type": "event"
},
{
"inputs": [],
"name": "EXPIRY_TIME",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_requestId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_payment",
"type": "uint256"
},
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
},
{
"internalType": "uint256",
"name": "_expiration",
"type": "uint256"
}
],
"name": "cancelOracleRequest",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_requestId",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_data",
"type": "bytes32"
}
],
"name": "fulfillOracleRequest",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getChainlinkToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "onTokenTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_payment",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "_specId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_callbackAddress",
"type": "address"
},
{
"internalType": "bytes4",
"name": "_callbackFunctionId",
"type": "bytes4"
},
{
"internalType": "uint256",
"name": "_nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_dataVersion",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "oracleRequest",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.6.6+commit.6c089d02"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_link",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
}
],
"name": "CancelOracleRequest",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "specId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "requester",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "payment",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "callbackAddr",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes4",
"name": "callbackFunctionId",
"type": "bytes4"
},
{
"indexed": false,
"internalType": "uint256",
"name": "cancelExpiration",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "dataVersion",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "OracleRequest",
"type": "event"
},
{
"inputs": [],
"name": "EXPIRY_TIME",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_requestId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_payment",
"type": "uint256"
},
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
},
{
"internalType": "uint256",
"name": "_expiration",
"type": "uint256"
}
],
"name": "cancelOracleRequest",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_requestId",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_data",
"type": "bytes32"
}
],
"name": "fulfillOracleRequest",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getChainlinkToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "onTokenTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_payment",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "_specId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_callbackAddress",
"type": "address"
},
{
"internalType": "bytes4",
"name": "_callbackFunctionId",
"type": "bytes4"
},
{
"internalType": "uint256",
"name": "_nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_dataVersion",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "oracleRequest",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"methods": {
"cancelOracleRequest(bytes32,uint256,bytes4,uint256)": {
"details": "Given params must hash to a commitment stored on the contract in order for the request to be valid Emits CancelOracleRequest event.",
"params": {
"_expiration": "The time of the expiration for the request",
"_payment": "The amount of payment given (specified in wei)",
"_requestId": "The request ID"
}
},
"constructor": {
"details": "Sets the LinkToken address for the imported LinkTokenInterface",
"params": {
"_link": "The address of the LINK token"
}
},
"fulfillOracleRequest(bytes32,bytes32)": {
"details": "Given params must hash back to the commitment stored from `oracleRequest`. Will call the callback address' callback function without bubbling up error checking in a `require` so that the node can get paid.",
"params": {
"_data": "The data to return to the consuming contract",
"_requestId": "The fulfillment request ID that must match the requester's"
},
"returns": {
"_0": "Status if the external call was successful"
}
},
"getChainlinkToken()": {
"details": "This is the public implementation for chainlinkTokenAddress, which is an internal method of the ChainlinkClient contract"
},
"onTokenTransfer(address,uint256,bytes)": {
"details": "The data payload's first 2 words will be overwritten by the `_sender` and `_amount` values to ensure correctness. Calls oracleRequest.",
"params": {
"_amount": "Amount of LINK sent (specified in wei)",
"_data": "Payload of the transaction",
"_sender": "Address of the sender"
}
},
"oracleRequest(address,uint256,bytes32,address,bytes4,uint256,uint256,bytes)": {
"details": "Stores the hash of the params as the on-chain commitment for the request. Emits OracleRequest event for the Chainlink node to detect.",
"params": {
"_callbackAddress": "The callback address for the response",
"_callbackFunctionId": "The callback function ID for the response",
"_data": "The CBOR payload of the request",
"_dataVersion": "The specified data version",
"_nonce": "The nonce sent by the requester",
"_payment": "The amount of payment given (specified in wei)",
"_sender": "The sender of the request",
"_specId": "The Job Specification ID"
}
}
},
"title": "The Chainlink Mock Oracle contract"
},
"userdoc": {
"methods": {
"cancelOracleRequest(bytes32,uint256,bytes4,uint256)": {
"notice": "Allows requesters to cancel requests sent to this oracle contract. Will transfer the LINK sent for the request back to the requester's address."
},
"constructor": "Deploy with the address of the LINK token",
"fulfillOracleRequest(bytes32,bytes32)": {
"notice": "Called by the Chainlink node to fulfill requests"
},
"getChainlinkToken()": {
"notice": "Returns the address of the LINK token"
},
"onTokenTransfer(address,uint256,bytes)": {
"notice": "Called when LINK is sent to the contract via `transferAndCall`"
},
"oracleRequest(address,uint256,bytes32,address,bytes4,uint256,uint256,bytes)": {
"notice": "Creates the Chainlink request"
}
},
"notice": "Chainlink smart contract developers can use this to test their contracts"
}
},
"settings": {
"compilationTarget": {
"contracts/test_contracts/MockOracle.sol": "MockOracle"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol": {
"keccak256": "0xcbde7153731a1cd229fbef4dcbb0b5a7a3ff4782bca40cbc12f836c39e054769",
"urls": [
"bzz-raw://83a7d0e4f1704c3b5474eb98342fbeee00782232d797f4446d7413463d17e58c",
"dweb:/ipfs/QmTWtHy88hXLaX1K3EzuEN11F2aAT3G2QjL2WnDwPg7Mqa"
]
},
"@chainlink/contracts/src/v0.6/interfaces/ChainlinkRequestInterface.sol": {
"keccak256": "0xe513c0f60edf13da7d82625489cf2008c7b66170f3b1ed1606b84c73f95b17ad",
"urls": [
"bzz-raw://78e083ef252b80bb63a5aa126bc7283cd9b88767dfdf0190d46802bc32756ecf",
"dweb:/ipfs/QmdTyEQwX5ecoXR1rBh8DLDJpCYVDM85JjjR2sEJdE9wAA"
]
},
"@chainlink/contracts/src/v0.6/interfaces/LinkTokenInterface.sol": {
"keccak256": "0xe245a7be950c94d87bb775ae9ee9fbd693fbe2987778e6ce0b04605ea44b7b68",
"urls": [
"bzz-raw://bd2c3165d949fc66fe407b96eb3dc2092c7e800f4c073b411bf7b96de3e156c9",
"dweb:/ipfs/QmcfJhR1Np4GsLWnww2Duqks2wEzYk8VDTvCAYy7MisG1r"
]
},
"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol": {
"keccak256": "0x105f5e9491f3d0bbdd4f1c7627eb839d69b944bfd803028a01cc083597692c1f",
"urls": [
"bzz-raw://ec45a2748a024a947a921183d4102d5e206808588501d85ddc4f5668a009bc73",
"dweb:/ipfs/QmRNAMpq7LdWFnJ7wWKGbUuAcURaGSS42PMxtQ4vjrHmp9"
]
},
"contracts/test_contracts/MockOracle.sol": {
"keccak256": "0xc0479448a544d17988698cd67a5a88a2a2d71a18d309e72660691c26b66fee32",
"urls": [
"bzz-raw://c8aa3be9997fcbd31d703bbe27a205a735267569802712b253cb770af8796a52",
"dweb:/ipfs/QmQwJJ5i7QVsp9LGbyfURbBBfZ2UjqmRPpUi7zt3T2js9p"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506040516107743803806107748339818101604052604081101561003357600080fd5b810190808051906020019092919080519060200190929190505050816000806101000a81548160ff021916908360ff1602179055506100778161007e60201b60201c565b50506100ef565b806001819055504260028190555060036000815480929190600101919050555080600460006003548152602001908152602001600020819055504260056000600354815260200190815260200160002081905550426006600060035481526020019081526020016000208190555050565b610676806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80638205bf6a116100715780638205bf6a146102125780639a6fc8f514610230578063a87a20ce146102ca578063b5ab58dc146102f8578063b633620c1461033a578063feaf968c1461037c576100b4565b8063313ce567146100b95780634aa2011f146100dd57806350d25bcd1461013557806354fd4d5014610153578063668a0f02146101715780637284e4161461018f575b600080fd5b6100c16103e6565b604051808260ff1660ff16815260200191505060405180910390f35b610133600480360360808110156100f357600080fd5b81019080803569ffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506103f8565b005b61013d61046d565b6040518082815260200191505060405180910390f35b61015b610473565b6040518082815260200191505060405180910390f35b610179610478565b6040518082815260200191505060405180910390f35b61019761047e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101d75780820151818401526020810190506101bc565b50505050905090810190601f1680156102045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61021a6104bb565b6040518082815260200191505060405180910390f35b6102686004803603602081101561024657600080fd5b81019080803569ffffffffffffffffffff1690602001909291905050506104c1565b604051808669ffffffffffffffffffff1669ffffffffffffffffffff1681526020018581526020018481526020018381526020018269ffffffffffffffffffff1669ffffffffffffffffffff1681526020019550505050505060405180910390f35b6102f6600480360360208110156102e057600080fd5b810190808035906020019092919050505061053e565b005b6103246004803603602081101561030e57600080fd5b81019080803590602001909291905050506105af565b6040518082815260200191505060405180910390f35b6103666004803603602081101561035057600080fd5b81019080803590602001909291905050506105c7565b6040518082815260200191505060405180910390f35b6103846105df565b604051808669ffffffffffffffffffff1669ffffffffffffffffffff1681526020018581526020018481526020018381526020018269ffffffffffffffffffff1669ffffffffffffffffffff1681526020019550505050505060405180910390f35b6000809054906101000a900460ff1681565b8369ffffffffffffffffffff16600381905550826001819055508160028190555082600460006003548152602001908152602001600020819055508160056000600354815260200190815260200160002081905550806006600060035481526020019081526020016000208190555050505050565b60015481565b600081565b60035481565b60606040518060400160405280601f81526020017f76302e362f74657374732f4d6f636b563341676772656761746f722e736f6c00815250905090565b60025481565b600080600080600085600460008869ffffffffffffffffffff16815260200190815260200160002054600660008969ffffffffffffffffffff16815260200190815260200160002054600560008a69ffffffffffffffffffff16815260200190815260200160002054899450945094509450945091939590929450565b806001819055504260028190555060036000815480929190600101919050555080600460006003548152602001908152602001600020819055504260056000600354815260200190815260200160002081905550426006600060035481526020019081526020016000208190555050565b60046020528060005260406000206000915090505481565b60056020528060005260406000206000915090505481565b600080600080600060035460046000600354815260200190815260200160002054600660006003548152602001908152602001600020546005600060035481526020019081526020016000205460035494509450945094509450909192939456fea264697066735822122084c18063c2739b2886c752e8df80ab13da1d1cbef0016b94b680f8821910e5f164736f6c63430006060033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x774 CODESIZE SUB DUP1 PUSH2 0x774 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x77 DUP2 PUSH2 0x7E PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP PUSH2 0xEF JUMP JUMPDEST DUP1 PUSH1 0x1 DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH1 0x3 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH1 0x1 ADD SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x4 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x5 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x6 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x676 DUP1 PUSH2 0xFE PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8205BF6A GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8205BF6A EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x9A6FC8F5 EQ PUSH2 0x230 JUMPI DUP1 PUSH4 0xA87A20CE EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0xB5AB58DC EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0xB633620C EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0xFEAF968C EQ PUSH2 0x37C JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x4AA2011F EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x50D25BCD EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x668A0F02 EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0x7284E416 EQ PUSH2 0x18F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0x3E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x133 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3F8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13D PUSH2 0x46D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15B PUSH2 0x473 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x179 PUSH2 0x478 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x197 PUSH2 0x47E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D7 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1BC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x204 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21A PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x4C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP7 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x53E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x366 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x384 PUSH2 0x5DF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP7 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST DUP4 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x1 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x4 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x5 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x6 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x76302E362F74657374732F4D6F636B563341676772656761746F722E736F6C00 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH1 0x4 PUSH1 0x0 DUP9 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x6 PUSH1 0x0 DUP10 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x5 PUSH1 0x0 DUP11 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP10 SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP2 SWAP4 SWAP6 SWAP1 SWAP3 SWAP5 POP JUMP JUMPDEST DUP1 PUSH1 0x1 DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH1 0x3 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH1 0x1 ADD SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x4 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x5 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x6 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x3 SLOAD PUSH1 0x4 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x6 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x5 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x3 SLOAD SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 0xC1 DUP1 PUSH4 0xC2739B28 DUP7 0xC7 MSTORE 0xE8 0xDF DUP1 0xAB SGT 0xDA SAR SHR 0xBE CREATE ADD PUSH12 0x94B680F8821910E5F164736F PUSH13 0x63430006060033000000000000 ",
"sourceMap": "413:2190:3:-:0;;;856:142;5:9:-1;2:2;;;27:1;24;17:12;2:2;856:142:3;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;856:142:3;;;;;;;;;;;;;;;;;;;;;;;;;948:9;937:8;;:20;;;;;;;;;;;;;;;;;;964:28;977:14;964:12;;;:28;;:::i;:::-;856:142;;413:2190;;1004:289;1081:7;1066:12;:22;;;;1113:15;1095;:33;;;;1135:11;;:13;;;;;;;;;;;;;1180:7;1155:9;:22;1165:11;;1155:22;;;;;;;;;;;:32;;;;1222:15;1194:12;:25;1207:11;;1194:25;;;;;;;;;;;:43;;;;1272:15;1244:12;:25;1257:11;;1244:25;;;;;;;;;;;:43;;;;1004:289;:::o;413:2190::-;;;;;;;"
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100b45760003560e01c80638205bf6a116100715780638205bf6a146102125780639a6fc8f514610230578063a87a20ce146102ca578063b5ab58dc146102f8578063b633620c1461033a578063feaf968c1461037c576100b4565b8063313ce567146100b95780634aa2011f146100dd57806350d25bcd1461013557806354fd4d5014610153578063668a0f02146101715780637284e4161461018f575b600080fd5b6100c16103e6565b604051808260ff1660ff16815260200191505060405180910390f35b610133600480360360808110156100f357600080fd5b81019080803569ffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506103f8565b005b61013d61046d565b6040518082815260200191505060405180910390f35b61015b610473565b6040518082815260200191505060405180910390f35b610179610478565b6040518082815260200191505060405180910390f35b61019761047e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101d75780820151818401526020810190506101bc565b50505050905090810190601f1680156102045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61021a6104bb565b6040518082815260200191505060405180910390f35b6102686004803603602081101561024657600080fd5b81019080803569ffffffffffffffffffff1690602001909291905050506104c1565b604051808669ffffffffffffffffffff1669ffffffffffffffffffff1681526020018581526020018481526020018381526020018269ffffffffffffffffffff1669ffffffffffffffffffff1681526020019550505050505060405180910390f35b6102f6600480360360208110156102e057600080fd5b810190808035906020019092919050505061053e565b005b6103246004803603602081101561030e57600080fd5b81019080803590602001909291905050506105af565b6040518082815260200191505060405180910390f35b6103666004803603602081101561035057600080fd5b81019080803590602001909291905050506105c7565b6040518082815260200191505060405180910390f35b6103846105df565b604051808669ffffffffffffffffffff1669ffffffffffffffffffff1681526020018581526020018481526020018381526020018269ffffffffffffffffffff1669ffffffffffffffffffff1681526020019550505050505060405180910390f35b6000809054906101000a900460ff1681565b8369ffffffffffffffffffff16600381905550826001819055508160028190555082600460006003548152602001908152602001600020819055508160056000600354815260200190815260200160002081905550806006600060035481526020019081526020016000208190555050505050565b60015481565b600081565b60035481565b60606040518060400160405280601f81526020017f76302e362f74657374732f4d6f636b563341676772656761746f722e736f6c00815250905090565b60025481565b600080600080600085600460008869ffffffffffffffffffff16815260200190815260200160002054600660008969ffffffffffffffffffff16815260200190815260200160002054600560008a69ffffffffffffffffffff16815260200190815260200160002054899450945094509450945091939590929450565b806001819055504260028190555060036000815480929190600101919050555080600460006003548152602001908152602001600020819055504260056000600354815260200190815260200160002081905550426006600060035481526020019081526020016000208190555050565b60046020528060005260406000206000915090505481565b60056020528060005260406000206000915090505481565b600080600080600060035460046000600354815260200190815260200160002054600660006003548152602001908152602001600020546005600060035481526020019081526020016000205460035494509450945094509450909192939456fea264697066735822122084c18063c2739b2886c752e8df80ab13da1d1cbef0016b94b680f8821910e5f164736f6c63430006060033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8205BF6A GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8205BF6A EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x9A6FC8F5 EQ PUSH2 0x230 JUMPI DUP1 PUSH4 0xA87A20CE EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0xB5AB58DC EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0xB633620C EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0xFEAF968C EQ PUSH2 0x37C JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x4AA2011F EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x50D25BCD EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x668A0F02 EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0x7284E416 EQ PUSH2 0x18F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0x3E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x133 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3F8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13D PUSH2 0x46D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15B PUSH2 0x473 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x179 PUSH2 0x478 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x197 PUSH2 0x47E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D7 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1BC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x204 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21A PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x268 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x4C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP7 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x53E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x366 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x350 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x384 PUSH2 0x5DF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP7 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST DUP4 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x1 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x4 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x5 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x6 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x76302E362F74657374732F4D6F636B563341676772656761746F722E736F6C00 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH1 0x4 PUSH1 0x0 DUP9 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x6 PUSH1 0x0 DUP10 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x5 PUSH1 0x0 DUP11 PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP10 SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP2 SWAP4 SWAP6 SWAP1 SWAP3 SWAP5 POP JUMP JUMPDEST DUP1 PUSH1 0x1 DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH1 0x3 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH1 0x1 ADD SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x4 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x5 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x6 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x3 SLOAD PUSH1 0x4 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x6 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x5 PUSH1 0x0 PUSH1 0x3 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x3 SLOAD SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 0xC1 DUP1 PUSH4 0xC2739B28 DUP7 0xC7 MSTORE 0xE8 0xDF DUP1 0xAB SGT 0xDA SAR SHR 0xBE CREATE ADD PUSH12 0x94B680F8821910E5F164736F PUSH13 0x63430006060033000000000000 ",
"sourceMap": "413:2190:3:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;413:2190:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;522:30:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1299:358;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;1299:358:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;557:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;471:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;641:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2454:146;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2454:146:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;597:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1663:380;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1663:380:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1004:289;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1004:289:3;;;;;;;;;;;;;;;;;:::i;:::-;;683:52;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;683:52:3;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;740:56;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;740:56:3;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2049:399;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;522:30;;;;;;;;;;;;;:::o;1299:358::-;1450:8;1436:22;;:11;:22;;;;1480:7;1465:12;:22;;;;1512:10;1494:15;:28;;;;1554:7;1529:9;:22;1539:11;;1529:22;;;;;;;;;;;:32;;;;1596:10;1568:12;:25;1581:11;;1568:25;;;;;;;;;;;:38;;;;1641:10;1613:12;:25;1626:11;;1613:25;;;;;;;;;;;:38;;;;1299:358;;;;:::o;557:35::-;;;;:::o;471:44::-;514:1;471:44;:::o;641:35::-;;;;:::o;2454:146::-;2529:13;2554:40;;;;;;;;;;;;;;;;;;;2454:146;:::o;597:39::-;;;;:::o;1663:380::-;1762:14;1785:13;1807:17;1833;1859:22;1915:8;1932:9;:19;1942:8;1932:19;;;;;;;;;;;;;;1960:12;:22;1973:8;1960:22;;;;;;;;;;;;;;1991:12;:22;2004:8;1991:22;;;;;;;;;;;;;;2022:8;1899:138;;;;;;;;;;1663:380;;;;;;;:::o;1004:289::-;1081:7;1066:12;:22;;;;1113:15;1095;:33;;;;1135:11;;:13;;;;;;;;;;;;;1180:7;1155:9;:22;1165:11;;1155:22;;;;;;;;;;;:32;;;;1222:15;1194:12;:25;1207:11;;1194:25;;;;;;;;;;;:43;;;;1272:15;1244:12;:25;1257:11;;1244:25;;;;;;;;;;;:43;;;;1004:289;:::o;683:52::-;;;;;;;;;;;;;;;;;:::o;740:56::-;;;;;;;;;;;;;;;;;:::o;2049:399::-;2136:14;2159:13;2181:17;2207;2233:22;2296:11;;2317:9;:22;2327:11;;2317:22;;;;;;;;;;;;2348:12;:25;2361:11;;2348:25;;;;;;;;;;;;2382:12;:25;2395:11;;2382:25;;;;;;;;;;;;2423:11;;2273:169;;;;;;;;;;2049:399;;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "330800",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"decimals()": "1054",
"description()": "infinite",
"getAnswer(uint256)": "1229",
"getRoundData(uint80)": "3140",
"getTimestamp(uint256)": "1251",
"latestAnswer()": "1050",
"latestRound()": "1094",
"latestRoundData()": "7117",
"latestTimestamp()": "1005",
"updateAnswer(int256)": "123810",
"updateRoundData(uint80,int256,uint256,uint256)": "123068",
"version()": "272"
}
},
"methodIdentifiers": {
"decimals()": "313ce567",
"description()": "7284e416",
"getAnswer(uint256)": "b5ab58dc",
"getRoundData(uint80)": "9a6fc8f5",
"getTimestamp(uint256)": "b633620c",
"latestAnswer()": "50d25bcd",
"latestRound()": "668a0f02",
"latestRoundData()": "feaf968c",
"latestTimestamp()": "8205bf6a",
"updateAnswer(int256)": "a87a20ce",
"updateRoundData(uint80,int256,uint256,uint256)": "4aa2011f",
"version()": "54fd4d50"
}
},
"abi": [
{
"inputs": [
{
"internalType": "uint8",
"name": "_decimals",
"type": "uint8"
},
{
"internalType": "int256",
"name": "_initialAnswer",
"type": "int256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "int256",
"name": "current",
"type": "int256"
},
{
"indexed": true,
"internalType": "uint256",
"name": "roundId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "updatedAt",
"type": "uint256"
}
],
"name": "AnswerUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "roundId",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "startedBy",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "startedAt",
"type": "uint256"
}
],
"name": "NewRound",
"type": "event"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "description",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "getAnswer",
"outputs": [
{
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint80",
"name": "_roundId",
"type": "uint80"
}
],
"name": "getRoundData",
"outputs": [
{
"internalType": "uint80",
"name": "roundId",
"type": "uint80"
},
{
"internalType": "int256",
"name": "answer",
"type": "int256"
},
{
"internalType": "uint256",
"name": "startedAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "updatedAt",
"type": "uint256"
},
{
"internalType": "uint80",
"name": "answeredInRound",
"type": "uint80"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "getTimestamp",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "latestAnswer",
"outputs": [
{
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "latestRound",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "latestRoundData",
"outputs": [
{
"internalType": "uint80",
"name": "roundId",
"type": "uint80"
},
{
"internalType": "int256",
"name": "answer",
"type": "int256"
},
{
"internalType": "uint256",
"name": "startedAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "updatedAt",
"type": "uint256"
},
{
"internalType": "uint80",
"name": "answeredInRound",
"type": "uint80"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "latestTimestamp",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "int256",
"name": "_answer",
"type": "int256"
}
],
"name": "updateAnswer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint80",
"name": "_roundId",
"type": "uint80"
},
{
"internalType": "int256",
"name": "_answer",
"type": "int256"
},
{
"internalType": "uint256",
"name": "_timestamp",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_startedAt",
"type": "uint256"
}
],
"name": "updateRoundData",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.6.6+commit.6c089d02"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "uint8",
"name": "_decimals",
"type": "uint8"
},
{
"internalType": "int256",
"name": "_initialAnswer",
"type": "int256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "int256",
"name": "current",
"type": "int256"
},
{
"indexed": true,
"internalType": "uint256",
"name": "roundId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "updatedAt",
"type": "uint256"
}
],
"name": "AnswerUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "roundId",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "startedBy",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "startedAt",
"type": "uint256"
}
],
"name": "NewRound",
"type": "event"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "description",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "getAnswer",
"outputs": [
{
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint80",
"name": "_roundId",
"type": "uint80"
}
],
"name": "getRoundData",
"outputs": [
{
"internalType": "uint80",
"name": "roundId",
"type": "uint80"
},
{
"internalType": "int256",
"name": "answer",
"type": "int256"
},
{
"internalType": "uint256",
"name": "startedAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "updatedAt",
"type": "uint256"
},
{
"internalType": "uint80",
"name": "answeredInRound",
"type": "uint80"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "getTimestamp",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "latestAnswer",
"outputs": [
{
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "latestRound",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "latestRoundData",
"outputs": [
{
"internalType": "uint80",
"name": "roundId",
"type": "uint80"
},
{
"internalType": "int256",
"name": "answer",
"type": "int256"
},
{
"internalType": "uint256",
"name": "startedAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "updatedAt",
"type": "uint256"
},
{
"internalType": "uint80",
"name": "answeredInRound",
"type": "uint80"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "latestTimestamp",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "int256",
"name": "_answer",
"type": "int256"
}
],
"name": "updateAnswer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint80",
"name": "_roundId",
"type": "uint80"
},
{
"internalType": "int256",
"name": "_answer",
"type": "int256"
},
{
"internalType": "uint256",
"name": "_timestamp",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_startedAt",
"type": "uint256"
}
],
"name": "updateRoundData",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"methods": {},
"title": "MockV3Aggregator"
},
"userdoc": {
"methods": {},
"notice": "Based on the FluxAggregator contractUse this contract when you need to test other contract's ability to read data from an aggregator contract, but how the aggregator got its answer is unimportant"
}
},
"settings": {
"compilationTarget": {
"contracts/test_contracts/MockV3Aggregator.sol": "MockV3Aggregator"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"@chainlink/contracts/src/v0.6/interfaces/AggregatorInterface.sol": {
"keccak256": "0x83d92824853687feb62da3e8dc773e1e0adc3267393e279acda02c6367037f56",
"urls": [
"bzz-raw://ee1dcacb7aeb3b745351dccca2ae92ce1ea9681d4b3a98fef4b249988f934596",
"dweb:/ipfs/QmWNBDybqdq3UKH1F4CqnM5kNfpXbRCd1TsmHdHJjTzwg2"
]
},
"@chainlink/contracts/src/v0.6/interfaces/AggregatorV2V3Interface.sol": {
"keccak256": "0xd27c7958cc0447b90f98308345076ee7fc7e657a62e085db53b4b63d471cc765",
"urls": [
"bzz-raw://8821528e5eb9d8a1c5dcbe280908f3d1860b6146d92ab33b1f08966c47ef9e20",
"dweb:/ipfs/QmNsV5gcss6Kte2oaZof6i2Xw4e8ffcsDBzf1Sdhb471pe"
]
},
"@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol": {
"keccak256": "0x7171939fd22c628f15406eda07bb4de4f0fda4808790f8334e5b9e1a7ca90f8a",
"urls": [
"bzz-raw://b085262fc0889ef3079b0abbe56aa009550f50c7976a67a21c1617fdda2504ce",
"dweb:/ipfs/QmdqjNoPJsdgH7CN1x2yoroFQsdNNg16woFasSQXR83sWU"
]
},
"contracts/test_contracts/MockV3Aggregator.sol": {
"keccak256": "0x7469cc4b1df5b092f442bd39852a289d42abbd1f34e8c760af48373ceaf25711",
"urls": [
"bzz-raw://4e9ee17e266ad0685dd3c3113404edbebc7d5581c9ecdb1f1f39e459da2769cf",
"dweb:/ipfs/QmWERmNgMcw5F5N9kA2wSEqN9PGCy6Q2z5EGrRSGq7LBLt"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506040516105c43803806105c48339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610530806100946000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80631b6b6d2314610046578063a4c0ed3614610090578063cf55fe9714610175575b600080fd5b61004e6101cd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610173600480360360608110156100a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156100ed57600080fd5b8201836020820111156100ff57600080fd5b8035906020019184600183028401116401000000008311171561012157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506101f2565b005b6101cb6004803603606081101561018b57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610337565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d75737420757365204c494e4b20746f6b656e0000000000000000000000000081525060200191505060405180910390fd5b6000808280602001905160408110156102cc57600080fd5b8101908080519060200190929190805190602001909291905050509150915080828673ffffffffffffffffffffffffffffffffffffffff167f7a9a0a6960d95b32cded93c30e63e7c2eb9e877230813c172110ea54dc1c915c60405160405180910390a45050505050565b600060606394985ddd60e01b85856040516024018083815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506000620324b09050805a1015610439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f6e6f7420656e6f7567682067617320666f7220636f6e73756d6572000000000081525060200191505060405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106104865780518252602082019150602081019050602083039250610463565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146104e8576040519150601f19603f3d011682016040523d82523d6000602084013e6104ed565b606091505b505090505050505050505056fea2646970667358221220e7f09bbe8b37ff97c8d324db6d1519557a2768e3c34cb4c42a895bdd89e9961d64736f6c63430006060033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x5C4 CODESIZE SUB DUP1 PUSH2 0x5C4 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x530 DUP1 PUSH2 0x94 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1B6B6D23 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xA4C0ED36 EQ PUSH2 0x90 JUMPI DUP1 PUSH4 0xCF55FE97 EQ PUSH2 0x175 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x1CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x173 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x1F2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x337 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365204C494E4B20746F6B656E00000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP2 POP SWAP2 POP DUP1 DUP3 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x7A9A0A6960D95B32CDED93C30E63E7C2EB9E877230813C172110EA54DC1C915C PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH4 0x94985DDD PUSH1 0xE0 SHL DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH3 0x324B0 SWAP1 POP DUP1 GAS LT ISZERO PUSH2 0x439 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x6E6F7420656E6F7567682067617320666F7220636F6E73756D65720000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x486 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x463 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4E8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4ED JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 CREATE SWAP12 0xBE DUP12 CALLDATACOPY SELFDESTRUCT SWAP8 0xC8 0xD3 0x24 0xDB PUSH14 0x1519557A2768E3C34CB4C42A895B 0xDD DUP10 0xE9 SWAP7 SAR PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
"sourceMap": "197:1105:4:-:0;;;376:97;5:9:-1;2:2;;;27:1;24;17:12;2:2;376:97:4;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;376:97:4;;;;;;;;;;;;;;;;453:11;427:4;;:38;;;;;;;;;;;;;;;;;;376:97;197:1105;;;;;;"
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100415760003560e01c80631b6b6d2314610046578063a4c0ed3614610090578063cf55fe9714610175575b600080fd5b61004e6101cd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610173600480360360608110156100a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156100ed57600080fd5b8201836020820111156100ff57600080fd5b8035906020019184600183028401116401000000008311171561012157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506101f2565b005b6101cb6004803603606081101561018b57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610337565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d75737420757365204c494e4b20746f6b656e0000000000000000000000000081525060200191505060405180910390fd5b6000808280602001905160408110156102cc57600080fd5b8101908080519060200190929190805190602001909291905050509150915080828673ffffffffffffffffffffffffffffffffffffffff167f7a9a0a6960d95b32cded93c30e63e7c2eb9e877230813c172110ea54dc1c915c60405160405180910390a45050505050565b600060606394985ddd60e01b85856040516024018083815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506000620324b09050805a1015610439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f6e6f7420656e6f7567682067617320666f7220636f6e73756d6572000000000081525060200191505060405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106104865780518252602082019150602081019050602083039250610463565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146104e8576040519150601f19603f3d011682016040523d82523d6000602084013e6104ed565b606091505b505090505050505050505056fea2646970667358221220e7f09bbe8b37ff97c8d324db6d1519557a2768e3c34cb4c42a895bdd89e9961d64736f6c63430006060033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1B6B6D23 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xA4C0ED36 EQ PUSH2 0x90 JUMPI DUP1 PUSH4 0xCF55FE97 EQ PUSH2 0x175 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x1CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x173 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x1F2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x337 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365204C494E4B20746F6B656E00000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP2 POP SWAP2 POP DUP1 DUP3 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x7A9A0A6960D95B32CDED93C30E63E7C2EB9E877230813C172110EA54DC1C915C PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH4 0x94985DDD PUSH1 0xE0 SHL DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH3 0x324B0 SWAP1 POP DUP1 GAS LT ISZERO PUSH2 0x439 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x6E6F7420656E6F7567682067617320666F7220636F6E73756D65720000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x486 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x463 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4E8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4ED JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 CREATE SWAP12 0xBE DUP12 CALLDATACOPY SELFDESTRUCT SWAP8 0xC8 0xD3 0x24 0xDB PUSH14 0x1519557A2768E3C34CB4C42A895B 0xDD DUP10 0xE9 SWAP7 SAR PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
"sourceMap": "197:1105:4:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;197:1105:4;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;234:30:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;481:259;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;481:259:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;481:259:4;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;481:259:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;481:259:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;481:259:4;;;;;;;;;;;;;;;:::i;:::-;;748:433;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;748:433:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;234:30;;;;;;;;;;;;;:::o;481:259::-;1250:4;;;;;;;;;;;1228:27;;:10;:27;;;1220:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;606:15:::1;623:12:::0;650:5:::1;639:37;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;639:37:4;;;;;;;;;;;;;;;;;;;;;;;;;605:71;;;;727:4;718:7;710:6;692:40;;;;;;;;;;;;1290:1;;481:259:::0;;;:::o;748:433::-;897:17;925;968:31;;;1001:9;1012:10;945:78;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;945:78:4;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;945:78:4;925:98;;1034:9;1046:6;1034:18;;1084:1;1071:9;:14;;1063:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:12;1146:16;:21;;1168:4;1146:27;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1146:27:4;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1128:45:4;;;748:433;;;;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "265600",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"LINK()": "1031",
"callBackWithRandomness(bytes32,uint256,address)": "infinite",
"onTokenTransfer(address,uint256,bytes)": "infinite"
}
},
"methodIdentifiers": {
"LINK()": "1b6b6d23",
"callBackWithRandomness(bytes32,uint256,address)": "cf55fe97",
"onTokenTransfer(address,uint256,bytes)": "a4c0ed36"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "linkAddress",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "keyHash",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "uint256",
"name": "seed",
"type": "uint256"
}
],
"name": "RandomnessRequest",
"type": "event"
},
{
"inputs": [],
"name": "LINK",
"outputs": [
{
"internalType": "contract LinkTokenInterface",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "randomness",
"type": "uint256"
},
{
"internalType": "address",
"name": "consumerContract",
"type": "address"
}
],
"name": "callBackWithRandomness",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "onTokenTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.6.6+commit.6c089d02"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "linkAddress",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "keyHash",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "uint256",
"name": "seed",
"type": "uint256"
}
],
"name": "RandomnessRequest",
"type": "event"
},
{
"inputs": [],
"name": "LINK",
"outputs": [
{
"internalType": "contract LinkTokenInterface",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "randomness",
"type": "uint256"
},
{
"internalType": "address",
"name": "consumerContract",
"type": "address"
}
],
"name": "callBackWithRandomness",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "onTokenTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"methods": {}
},
"userdoc": {
"methods": {}
}
},
"settings": {
"compilationTarget": {
"contracts/test_contracts/VRFCoordinatorMock.sol": "VRFCoordinatorMock"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"@chainlink/contracts/src/v0.6/VRFConsumerBase.sol": {
"keccak256": "0x6023d0e1100e66888001da1820d24c5e3713869bfe28e56200ce952979de3205",
"urls": [
"bzz-raw://2e17a936de43d4e475629f43d1af475bfc94e57bffea918ead7264960d5b091e",
"dweb:/ipfs/QmSAF1EAHUVReWHVArbitMZY7gX6drda8qnyus4ym9zA1H"
]
},
"@chainlink/contracts/src/v0.6/VRFRequestIDBase.sol": {
"keccak256": "0x0c3bd40c63dac8398a979b1228c8ecb1c269c157dd16f2dce2086d2270b65b22",
"urls": [
"bzz-raw://ed9db87be9dfb0f763a556d8d80356b08282b8ea48484838cdf470a5c3cd15d5",
"dweb:/ipfs/QmPLhwDAS3TPDiEQmTyqXnWBqwEMBSbXtjEiQDSGejoiPt"
]
},
"@chainlink/contracts/src/v0.6/interfaces/LinkTokenInterface.sol": {
"keccak256": "0xe245a7be950c94d87bb775ae9ee9fbd693fbe2987778e6ce0b04605ea44b7b68",
"urls": [
"bzz-raw://bd2c3165d949fc66fe407b96eb3dc2092c7e800f4c073b411bf7b96de3e156c9",
"dweb:/ipfs/QmcfJhR1Np4GsLWnww2Duqks2wEzYk8VDTvCAYy7MisG1r"
]
},
"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol": {
"keccak256": "0x105f5e9491f3d0bbdd4f1c7627eb839d69b944bfd803028a01cc083597692c1f",
"urls": [
"bzz-raw://ec45a2748a024a947a921183d4102d5e206808588501d85ddc4f5668a009bc73",
"dweb:/ipfs/QmRNAMpq7LdWFnJ7wWKGbUuAcURaGSS42PMxtQ4vjrHmp9"
]
},
"contracts/test_contracts/VRFCoordinatorMock.sol": {
"keccak256": "0x9356577780b392f762559fe739d5ab5810f4800c36cd7a7ab67db1df7ba8d339",
"urls": [
"bzz-raw://bf06cc7acad9cbf38469d09326b7ee940156ca4d3ce73bfb3881f9cadb217c75",
"dweb:/ipfs/QmXotCJuDPHGnm5H6FhkHwFccC23TwP6zoSiAM89nQPj4f"
]
}
},
"version": 1
}
pragma solidity ^0.4.11;
import "@chainlink/contracts/src/v0.4/ERC677Token.sol";
import { StandardToken as linkStandardToken } from "@chainlink/contracts/src/v0.4/vendor/StandardToken.sol";
contract LinkToken is linkStandardToken, ERC677Token {
uint public constant totalSupply = 10**27;
string public constant name = "ChainLink Token";
uint8 public constant decimals = 18;
string public constant symbol = "LINK";
function LinkToken()
public
{
balances[msg.sender] = totalSupply;
}
/**
* @dev transfer token to a specified address with additional data if the recipient is a contract.
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
* @param _data The extra data to be passed to the receiving contract.
*/
function transferAndCall(address _to, uint _value, bytes _data)
public
validRecipient(_to)
returns (bool success)
{
return super.transferAndCall(_to, _value, _data);
}
/**
* @dev transfer token to a specified address.
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
*/
function transfer(address _to, uint _value)
public
validRecipient(_to)
returns (bool success)
{
return super.transfer(_to, _value);
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
*/
function approve(address _spender, uint256 _value)
public
validRecipient(_spender)
returns (bool)
{
return super.approve(_spender, _value);
}
/**
* @dev Transfer tokens from one address to another
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint256 the amount of tokens to be transferred
*/
function transferFrom(address _from, address _to, uint256 _value)
public
validRecipient(_to)
returns (bool)
{
return super.transferFrom(_from, _to, _value);
}
// MODIFIERS
modifier validRecipient(address _recipient) {
require(_recipient != address(0) && _recipient != address(this));
_;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
import "@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol";
import "@chainlink/contracts/src/v0.6/interfaces/ChainlinkRequestInterface.sol";
import "@chainlink/contracts/src/v0.6/interfaces/LinkTokenInterface.sol";
import "@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol";
/**
* @title The Chainlink Mock Oracle contract
* @notice Chainlink smart contract developers can use this to test their contracts
*/
contract MockOracle is ChainlinkRequestInterface, LinkTokenReceiver {
using SafeMathChainlink for uint256;
uint256 constant public EXPIRY_TIME = 5 minutes;
uint256 constant private MINIMUM_CONSUMER_GAS_LIMIT = 400000;
struct Request {
address callbackAddr;
bytes4 callbackFunctionId;
}
LinkTokenInterface internal LinkToken;
mapping(bytes32 => Request) private commitments;
event OracleRequest(
bytes32 indexed specId,
address requester,
bytes32 requestId,
uint256 payment,
address callbackAddr,
bytes4 callbackFunctionId,
uint256 cancelExpiration,
uint256 dataVersion,
bytes data
);
event CancelOracleRequest(
bytes32 indexed requestId
);
/**
* @notice Deploy with the address of the LINK token
* @dev Sets the LinkToken address for the imported LinkTokenInterface
* @param _link The address of the LINK token
*/
constructor(address _link)
public
{
LinkToken = LinkTokenInterface(_link); // external but already deployed and unalterable
}
/**
* @notice Creates the Chainlink request
* @dev Stores the hash of the params as the on-chain commitment for the request.
* Emits OracleRequest event for the Chainlink node to detect.
* @param _sender The sender of the request
* @param _payment The amount of payment given (specified in wei)
* @param _specId The Job Specification ID
* @param _callbackAddress The callback address for the response
* @param _callbackFunctionId The callback function ID for the response
* @param _nonce The nonce sent by the requester
* @param _dataVersion The specified data version
* @param _data The CBOR payload of the request
*/
function oracleRequest(
address _sender,
uint256 _payment,
bytes32 _specId,
address _callbackAddress,
bytes4 _callbackFunctionId,
uint256 _nonce,
uint256 _dataVersion,
bytes calldata _data
)
external
override
onlyLINK()
checkCallbackAddress(_callbackAddress)
{
bytes32 requestId = keccak256(abi.encodePacked(_sender, _nonce));
require(commitments[requestId].callbackAddr == address(0), "Must use a unique ID");
// solhint-disable-next-line not-rely-on-time
uint256 expiration = now.add(EXPIRY_TIME);
commitments[requestId] = Request(
_callbackAddress,
_callbackFunctionId
);
emit OracleRequest(
_specId,
_sender,
requestId,
_payment,
_callbackAddress,
_callbackFunctionId,
expiration,
_dataVersion,
_data);
}
/**
* @notice Called by the Chainlink node to fulfill requests
* @dev Given params must hash back to the commitment stored from `oracleRequest`.
* Will call the callback address' callback function without bubbling up error
* checking in a `require` so that the node can get paid.
* @param _requestId The fulfillment request ID that must match the requester's
* @param _data The data to return to the consuming contract
* @return Status if the external call was successful
*/
function fulfillOracleRequest(
bytes32 _requestId,
bytes32 _data
)
external
isValidRequest(_requestId)
returns (bool)
{
Request memory req = commitments[_requestId];
delete commitments[_requestId];
require(gasleft() >= MINIMUM_CONSUMER_GAS_LIMIT, "Must provide consumer enough gas");
// All updates to the oracle's fulfillment should come before calling the
// callback(addr+functionId) as it is untrusted.
// See: https://solidity.readthedocs.io/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern
(bool success, ) = req.callbackAddr.call(abi.encodeWithSelector(req.callbackFunctionId, _requestId, _data)); // solhint-disable-line avoid-low-level-calls
return success;
}
/**
* @notice Allows requesters to cancel requests sent to this oracle contract. Will transfer the LINK
* sent for the request back to the requester's address.
* @dev Given params must hash to a commitment stored on the contract in order for the request to be valid
* Emits CancelOracleRequest event.
* @param _requestId The request ID
* @param _payment The amount of payment given (specified in wei)
* @param _expiration The time of the expiration for the request
*/
function cancelOracleRequest(
bytes32 _requestId,
uint256 _payment,
bytes4,
uint256 _expiration
)
external
override
{
require(commitments[_requestId].callbackAddr != address(0), "Must use a unique ID");
// solhint-disable-next-line not-rely-on-time
require(_expiration <= now, "Request is not expired");
delete commitments[_requestId];
emit CancelOracleRequest(_requestId);
assert(LinkToken.transfer(msg.sender, _payment));
}
/**
* @notice Returns the address of the LINK token
* @dev This is the public implementation for chainlinkTokenAddress, which is
* an internal method of the ChainlinkClient contract
*/
function getChainlinkToken()
public
view
override
returns (address)
{
return address(LinkToken);
}
// MODIFIERS
/**
* @dev Reverts if request ID does not exist
* @param _requestId The given request ID to check in stored `commitments`
*/
modifier isValidRequest(bytes32 _requestId) {
require(commitments[_requestId].callbackAddr != address(0), "Must have a valid requestId");
_;
}
/**
* @dev Reverts if the callback address is the LINK token
* @param _to The callback address
*/
modifier checkCallbackAddress(address _to) {
require(_to != address(LinkToken), "Cannot callback to LINK");
_;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV2V3Interface.sol";
/**
* @title MockV3Aggregator
* @notice Based on the FluxAggregator contract
* @notice Use this contract when you need to test
* other contract's ability to read data from an
* aggregator contract, but how the aggregator got
* its answer is unimportant
*/
contract MockV3Aggregator is AggregatorV2V3Interface {
uint256 constant public override version = 0;
uint8 public override decimals;
int256 public override latestAnswer;
uint256 public override latestTimestamp;
uint256 public override latestRound;
mapping(uint256 => int256) public override getAnswer;
mapping(uint256 => uint256) public override getTimestamp;
mapping(uint256 => uint256) private getStartedAt;
constructor(
uint8 _decimals,
int256 _initialAnswer
) public {
decimals = _decimals;
updateAnswer(_initialAnswer);
}
function updateAnswer(
int256 _answer
) public {
latestAnswer = _answer;
latestTimestamp = block.timestamp;
latestRound++;
getAnswer[latestRound] = _answer;
getTimestamp[latestRound] = block.timestamp;
getStartedAt[latestRound] = block.timestamp;
}
function updateRoundData(
uint80 _roundId,
int256 _answer,
uint256 _timestamp,
uint256 _startedAt
) public {
latestRound = _roundId;
latestAnswer = _answer;
latestTimestamp = _timestamp;
getAnswer[latestRound] = _answer;
getTimestamp[latestRound] = _timestamp;
getStartedAt[latestRound] = _startedAt;
}
function getRoundData(uint80 _roundId)
external
view
override
returns (
uint80 roundId,
int256 answer,
uint256 startedAt,
uint256 updatedAt,
uint80 answeredInRound
)
{
return (
_roundId,
getAnswer[_roundId],
getStartedAt[_roundId],
getTimestamp[_roundId],
_roundId
);
}
function latestRoundData()
external
view
override
returns (
uint80 roundId,
int256 answer,
uint256 startedAt,
uint256 updatedAt,
uint80 answeredInRound
)
{
return (
uint80(latestRound),
getAnswer[latestRound],
getStartedAt[latestRound],
getTimestamp[latestRound],
uint80(latestRound)
);
}
function description()
external
view
override
returns (string memory)
{
return "v0.6/tests/MockV3Aggregator.sol";
}
}
// MockOracle
// Function signatures, event signatures, log topics
// SPDX-License-Identifier: MIT
pragma solidity 0.6.6;
import "@chainlink/contracts/src/v0.6/interfaces/LinkTokenInterface.sol";
import "@chainlink/contracts/src/v0.6/VRFConsumerBase.sol";
contract VRFCoordinatorMock {
LinkTokenInterface public LINK;
event RandomnessRequest(address indexed sender, bytes32 indexed keyHash, uint256 indexed seed);
constructor(address linkAddress) public {
LINK = LinkTokenInterface(linkAddress);
}
function onTokenTransfer(address sender, uint256 fee, bytes memory _data)
public
onlyLINK
{
(bytes32 keyHash, uint256 seed) = abi.decode(_data, (bytes32, uint256));
emit RandomnessRequest(sender, keyHash, seed);
}
function callBackWithRandomness(
bytes32 requestId,
uint256 randomness,
address consumerContract
) public {
VRFConsumerBase v;
bytes memory resp = abi.encodeWithSelector(v.rawFulfillRandomness.selector, requestId, randomness);
uint256 b = 206000;
require(gasleft() >= b, "not enough gas for consumer");
(bool success,) = consumerContract.call(resp);
}
modifier onlyLINK() {
require(msg.sender == address(LINK), "Must use LINK token");
_;
}
}
This file has been truncated, but you can view the full file.
{
"id": "2f19740a4a9025dad9ad16d46206b1e8",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.6.6",
"solcLongVersion": "0.6.6+commit.6c089d02",
"input": {
"language": "Solidity",
"sources": {
"contracts/test_contracts/MockOracle.sol": {
"content": "// SPDX-License-Identifier: MIT\r\npragma solidity ^0.6.0;\r\n\r\nimport \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\";\r\nimport \"@chainlink/contracts/src/v0.6/interfaces/ChainlinkRequestInterface.sol\";\r\nimport \"@chainlink/contracts/src/v0.6/interfaces/LinkTokenInterface.sol\";\r\nimport \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\";\r\n\r\n/**\r\n * @title The Chainlink Mock Oracle contract\r\n * @notice Chainlink smart contract developers can use this to test their contracts\r\n */\r\ncontract MockOracle is ChainlinkRequestInterface, LinkTokenReceiver {\r\n using SafeMathChainlink for uint256;\r\n\r\n uint256 constant public EXPIRY_TIME = 5 minutes;\r\n uint256 constant private MINIMUM_CONSUMER_GAS_LIMIT = 400000;\r\n \r\n struct Request {\r\n address callbackAddr;\r\n bytes4 callbackFunctionId;\r\n }\r\n\r\n LinkTokenInterface internal LinkToken;\r\n mapping(bytes32 => Request) private commitments;\r\n\r\n event OracleRequest(\r\n bytes32 indexed specId,\r\n address requester,\r\n bytes32 requestId,\r\n uint256 payment,\r\n address callbackAddr,\r\n bytes4 callbackFunctionId,\r\n uint256 cancelExpiration,\r\n uint256 dataVersion,\r\n bytes data\r\n );\r\n\r\n event CancelOracleRequest(\r\n bytes32 indexed requestId\r\n );\r\n\r\n /**\r\n * @notice Deploy with the address of the LINK token\r\n * @dev Sets the LinkToken address for the imported LinkTokenInterface\r\n * @param _link The address of the LINK token\r\n */\r\n constructor(address _link)\r\n public\r\n {\r\n LinkToken = LinkTokenInterface(_link); // external but already deployed and unalterable\r\n }\r\n\r\n /**\r\n * @notice Creates the Chainlink request\r\n * @dev Stores the hash of the params as the on-chain commitment for the request.\r\n * Emits OracleRequest event for the Chainlink node to detect.\r\n * @param _sender The sender of the request\r\n * @param _payment The amount of payment given (specified in wei)\r\n * @param _specId The Job Specification ID\r\n * @param _callbackAddress The callback address for the response\r\n * @param _callbackFunctionId The callback function ID for the response\r\n * @param _nonce The nonce sent by the requester\r\n * @param _dataVersion The specified data version\r\n * @param _data The CBOR payload of the request\r\n */\r\n function oracleRequest(\r\n address _sender,\r\n uint256 _payment,\r\n bytes32 _specId,\r\n address _callbackAddress,\r\n bytes4 _callbackFunctionId,\r\n uint256 _nonce,\r\n uint256 _dataVersion,\r\n bytes calldata _data\r\n )\r\n external\r\n override\r\n onlyLINK()\r\n checkCallbackAddress(_callbackAddress)\r\n {\r\n bytes32 requestId = keccak256(abi.encodePacked(_sender, _nonce));\r\n require(commitments[requestId].callbackAddr == address(0), \"Must use a unique ID\");\r\n // solhint-disable-next-line not-rely-on-time\r\n uint256 expiration = now.add(EXPIRY_TIME);\r\n\r\n commitments[requestId] = Request(\r\n _callbackAddress,\r\n _callbackFunctionId\r\n );\r\n\r\n emit OracleRequest(\r\n _specId,\r\n _sender,\r\n requestId,\r\n _payment,\r\n _callbackAddress,\r\n _callbackFunctionId,\r\n expiration,\r\n _dataVersion,\r\n _data);\r\n }\r\n\r\n /**\r\n * @notice Called by the Chainlink node to fulfill requests\r\n * @dev Given params must hash back to the commitment stored from `oracleRequest`.\r\n * Will call the callback address' callback function without bubbling up error\r\n * checking in a `require` so that the node can get paid.\r\n * @param _requestId The fulfillment request ID that must match the requester's\r\n * @param _data The data to return to the consuming contract\r\n * @return Status if the external call was successful\r\n */\r\n function fulfillOracleRequest(\r\n bytes32 _requestId,\r\n bytes32 _data\r\n )\r\n external\r\n isValidRequest(_requestId)\r\n returns (bool)\r\n {\r\n Request memory req = commitments[_requestId];\r\n delete commitments[_requestId];\r\n require(gasleft() >= MINIMUM_CONSUMER_GAS_LIMIT, \"Must provide consumer enough gas\");\r\n // All updates to the oracle's fulfillment should come before calling the\r\n // callback(addr+functionId) as it is untrusted.\r\n // See: https://solidity.readthedocs.io/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern\r\n (bool success, ) = req.callbackAddr.call(abi.encodeWithSelector(req.callbackFunctionId, _requestId, _data)); // solhint-disable-line avoid-low-level-calls\r\n return success;\r\n }\r\n\r\n /**\r\n * @notice Allows requesters to cancel requests sent to this oracle contract. Will transfer the LINK\r\n * sent for the request back to the requester's address.\r\n * @dev Given params must hash to a commitment stored on the contract in order for the request to be valid\r\n * Emits CancelOracleRequest event.\r\n * @param _requestId The request ID\r\n * @param _payment The amount of payment given (specified in wei)\r\n * @param _expiration The time of the expiration for the request\r\n */\r\n function cancelOracleRequest(\r\n bytes32 _requestId,\r\n uint256 _payment,\r\n bytes4,\r\n uint256 _expiration\r\n )\r\n external\r\n override\r\n {\r\n require(commitments[_requestId].callbackAddr != address(0), \"Must use a unique ID\");\r\n // solhint-disable-next-line not-rely-on-time\r\n require(_expiration <= now, \"Request is not expired\");\r\n\r\n delete commitments[_requestId];\r\n emit CancelOracleRequest(_requestId);\r\n\r\n assert(LinkToken.transfer(msg.sender, _payment));\r\n }\r\n\r\n /**\r\n * @notice Returns the address of the LINK token\r\n * @dev This is the public implementation for chainlinkTokenAddress, which is\r\n * an internal method of the ChainlinkClient contract\r\n */\r\n function getChainlinkToken()\r\n public\r\n view\r\n override\r\n returns (address)\r\n {\r\n return address(LinkToken);\r\n }\r\n\r\n // MODIFIERS\r\n\r\n /**\r\n * @dev Reverts if request ID does not exist\r\n * @param _requestId The given request ID to check in stored `commitments`\r\n */\r\n modifier isValidRequest(bytes32 _requestId) {\r\n require(commitments[_requestId].callbackAddr != address(0), \"Must have a valid requestId\");\r\n _;\r\n }\r\n\r\n\r\n /**\r\n * @dev Reverts if the callback address is the LINK token\r\n * @param _to The callback address\r\n */\r\n modifier checkCallbackAddress(address _to) {\r\n require(_to != address(LinkToken), \"Cannot callback to LINK\");\r\n _;\r\n }\r\n\r\n}"
},
"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol": {
"content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.6.0;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMathChainlink {\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a, \"SafeMath: addition overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b <= a, \"SafeMath: subtraction overflow\");\n uint256 c = a - b;\n\n return c;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\n if (a == 0) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b, \"SafeMath: multiplication overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers. Reverts on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n // Solidity only automatically asserts when dividing by 0\n require(b > 0, \"SafeMath: division by zero\");\n uint256 c = a / b;\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n return c;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b != 0, \"SafeMath: modulo by zero\");\n return a % b;\n }\n}\n"
},
"@chainlink/contracts/src/v0.6/interfaces/LinkTokenInterface.sol": {
"content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.6.0;\n\ninterface LinkTokenInterface {\n function allowance(address owner, address spender) external view returns (uint256 remaining);\n function approve(address spender, uint256 value) external returns (bool success);\n function balanceOf(address owner) external view returns (uint256 balance);\n function decimals() external view returns (uint8 decimalPlaces);\n function decreaseApproval(address spender, uint256 addedValue) external returns (bool success);\n function increaseApproval(address spender, uint256 subtractedValue) external;\n function name() external view returns (string memory tokenName);\n function symbol() external view returns (string memory tokenSymbol);\n function totalSupply() external view returns (uint256 totalTokensIssued);\n function transfer(address to, uint256 value) external returns (bool success);\n function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool success);\n function transferFrom(address from, address to, uint256 value) external returns (bool success);\n}\n"
},
"@chainlink/contracts/src/v0.6/interfaces/ChainlinkRequestInterface.sol": {
"content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.6.0;\n\ninterface ChainlinkRequestInterface {\n function oracleRequest(\n address sender,\n uint256 requestPrice,\n bytes32 serviceAgreementID,\n address callbackAddress,\n bytes4 callbackFunctionId,\n uint256 nonce,\n uint256 dataVersion,\n bytes calldata data\n ) external;\n\n function cancelOracleRequest(\n bytes32 requestId,\n uint256 payment,\n bytes4 callbackFunctionId,\n uint256 expiration\n ) external;\n}\n"
},
"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol": {
"content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.6.0;\n\nabstract contract LinkTokenReceiver {\n\n bytes4 constant private ORACLE_REQUEST_SELECTOR = 0x40429946;\n uint256 constant private SELECTOR_LENGTH = 4;\n uint256 constant private EXPECTED_REQUEST_WORDS = 2;\n uint256 constant private MINIMUM_REQUEST_LENGTH = SELECTOR_LENGTH + (32 * EXPECTED_REQUEST_WORDS);\n /**\n * @notice Called when LINK is sent to the contract via `transferAndCall`\n * @dev The data payload's first 2 words will be overwritten by the `_sender` and `_amount`\n * values to ensure correctness. Calls oracleRequest.\n * @param _sender Address of the sender\n * @param _amount Amount of LINK sent (specified in wei)\n * @param _data Payload of the transaction\n */\n function onTokenTransfer(\n address _sender,\n uint256 _amount,\n bytes memory _data\n )\n public\n onlyLINK\n validRequestLength(_data)\n permittedFunctionsForLINK(_data)\n {\n assembly {\n // solhint-disable-next-line avoid-low-level-calls\n mstore(add(_data, 36), _sender) // ensure correct sender is passed\n // solhint-disable-next-line avoid-low-level-calls\n mstore(add(_data, 68), _amount) // ensure correct amount is passed\n }\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, ) = address(this).delegatecall(_data); // calls oracleRequest\n require(success, \"Unable to create request\");\n }\n\n function getChainlinkToken() public view virtual returns (address);\n\n /**\n * @dev Reverts if not sent from the LINK token\n */\n modifier onlyLINK() {\n require(msg.sender == getChainlinkToken(), \"Must use LINK token\");\n _;\n }\n\n /**\n * @dev Reverts if the given data does not begin with the `oracleRequest` function selector\n * @param _data The data payload of the request\n */\n modifier permittedFunctionsForLINK(bytes memory _data) {\n bytes4 funcSelector;\n assembly {\n // solhint-disable-next-line avoid-low-level-calls\n funcSelector := mload(add(_data, 32))\n }\n require(funcSelector == ORACLE_REQUEST_SELECTOR, \"Must use whitelisted functions\");\n _;\n }\n\n /**\n * @dev Reverts if the given payload is less than needed to create a request\n * @param _data The request payload\n */\n modifier validRequestLength(bytes memory _data) {\n require(_data.length >= MINIMUM_REQUEST_LENGTH, \"Invalid request length\");\n _;\n }\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
}
}
},
"output": {
"contracts": {
"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol": {
"LinkTokenReceiver": {
"abi": [
{
"inputs": [],
"name": "getChainlinkToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "onTokenTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"methods": {
"onTokenTransfer(address,uint256,bytes)": {
"details": "The data payload's first 2 words will be overwritten by the `_sender` and `_amount` values to ensure correctness. Calls oracleRequest.",
"params": {
"_amount": "Amount of LINK sent (specified in wei)",
"_data": "Payload of the transaction",
"_sender": "Address of the sender"
}
}
}
},
"evm": {
"assembly": "",
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"getChainlinkToken()": "165d35e1",
"onTokenTransfer(address,uint256,bytes)": "a4c0ed36"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getChainlinkToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"onTokenTransfer(address,uint256,bytes)\":{\"details\":\"The data payload's first 2 words will be overwritten by the `_sender` and `_amount` values to ensure correctness. Calls oracleRequest.\",\"params\":{\"_amount\":\"Amount of LINK sent (specified in wei)\",\"_data\":\"Payload of the transaction\",\"_sender\":\"Address of the sender\"}}}},\"userdoc\":{\"methods\":{\"onTokenTransfer(address,uint256,bytes)\":{\"notice\":\"Called when LINK is sent to the contract via `transferAndCall`\"}}}},\"settings\":{\"compilationTarget\":{\"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":\"LinkTokenReceiver\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":{\"keccak256\":\"0xcbde7153731a1cd229fbef4dcbb0b5a7a3ff4782bca40cbc12f836c39e054769\",\"urls\":[\"bzz-raw://83a7d0e4f1704c3b5474eb98342fbeee00782232d797f4446d7413463d17e58c\",\"dweb:/ipfs/QmTWtHy88hXLaX1K3EzuEN11F2aAT3G2QjL2WnDwPg7Mqa\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"methods": {
"onTokenTransfer(address,uint256,bytes)": {
"notice": "Called when LINK is sent to the contract via `transferAndCall`"
}
}
}
}
},
"@chainlink/contracts/src/v0.6/interfaces/ChainlinkRequestInterface.sol": {
"ChainlinkRequestInterface": {
"abi": [
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "payment",
"type": "uint256"
},
{
"internalType": "bytes4",
"name": "callbackFunctionId",
"type": "bytes4"
},
{
"internalType": "uint256",
"name": "expiration",
"type": "uint256"
}
],
"name": "cancelOracleRequest",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "requestPrice",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "serviceAgreementID",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callbackAddress",
"type": "address"
},
{
"internalType": "bytes4",
"name": "callbackFunctionId",
"type": "bytes4"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "dataVersion",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "oracleRequest",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"methods": {}
},
"evm": {
"assembly": "",
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"cancelOracleRequest(bytes32,uint256,bytes4,uint256)": "6ee4d553",
"oracleRequest(address,uint256,bytes32,address,bytes4,uint256,uint256,bytes)": "40429946"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bytes4\",\"name\":\"callbackFunctionId\",\"type\":\"bytes4\"},{\"internalType\":\"uint256\",\"name\":\"expiration\",\"type\":\"uint256\"}],\"name\":\"cancelOracleRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestPrice\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"serviceAgreementID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"callbackFunctionId\",\"type\":\"bytes4\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dataVersion\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"oracleRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@chainlink/contracts/src/v0.6/interfaces/ChainlinkRequestInterface.sol\":\"ChainlinkRequestInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.6/interfaces/ChainlinkRequestInterface.sol\":{\"keccak256\":\"0xe513c0f60edf13da7d82625489cf2008c7b66170f3b1ed1606b84c73f95b17ad\",\"urls\":[\"bzz-raw://78e083ef252b80bb63a5aa126bc7283cd9b88767dfdf0190d46802bc32756ecf\",\"dweb:/ipfs/QmdTyEQwX5ecoXR1rBh8DLDJpCYVDM85JjjR2sEJdE9wAA\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"methods": {}
}
}
},
"@chainlink/contracts/src/v0.6/interfaces/LinkTokenInterface.sol": {
"LinkTokenInterface": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "remaining",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "success",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "decimalPlaces",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "decreaseApproval",
"outputs": [
{
"internalType": "bool",
"name": "success",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "increaseApproval",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "tokenName",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "tokenSymbol",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "totalTokensIssued",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "success",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "transferAndCall",
"outputs": [
{
"internalType": "bool",
"name": "success",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "success",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"methods": {}
},
"evm": {
"assembly": "",
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"decimals()": "313ce567",
"decreaseApproval(address,uint256)": "66188463",
"increaseApproval(address,uint256)": "d73dd623",
"name()": "06fdde03",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferAndCall(address,uint256,bytes)": "4000aea0",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"decimalPlaces\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"increaseApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalTokensIssued\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@chainlink/contracts/src/v0.6/interfaces/LinkTokenInterface.sol\":\"LinkTokenInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.6/interfaces/LinkTokenInterface.sol\":{\"keccak256\":\"0xe245a7be950c94d87bb775ae9ee9fbd693fbe2987778e6ce0b04605ea44b7b68\",\"urls\":[\"bzz-raw://bd2c3165d949fc66fe407b96eb3dc2092c7e800f4c073b411bf7b96de3e156c9\",\"dweb:/ipfs/QmcfJhR1Np4GsLWnww2Duqks2wEzYk8VDTvCAYy7MisG1r\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"methods": {}
}
}
},
"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol": {
"SafeMathChainlink": {
"abi": [],
"devdoc": {
"details": "Wrappers over Solidity's arithmetic operations with added overflow checks. * Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. * Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.",
"methods": {}
},
"evm": {
"assembly": " /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":621:3404 library SafeMathChainlink {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n /* \"--CODEGEN--\":132:134 */\n 0x0b\n /* \"--CODEGEN--\":166:173 */\n dup3\n /* \"--CODEGEN--\":155:164 */\n dup3\n /* \"--CODEGEN--\":146:153 */\n dup3\n /* \"--CODEGEN--\":137:174 */\n codecopy\n /* \"--CODEGEN--\":255:262 */\n dup1\n /* \"--CODEGEN--\":249:263 */\n mload\n /* \"--CODEGEN--\":246:247 */\n 0x00\n /* \"--CODEGEN--\":241:264 */\n byte\n /* \"--CODEGEN--\":235:239 */\n 0x73\n /* \"--CODEGEN--\":232:265 */\n eq\n /* \"--CODEGEN--\":222:224 */\n tag_1\n jumpi\n /* \"--CODEGEN--\":269:278 */\n invalid\n /* \"--CODEGEN--\":222:224 */\ntag_1:\n /* \"--CODEGEN--\":293:302 */\n address\n /* \"--CODEGEN--\":290:291 */\n 0x00\n /* \"--CODEGEN--\":283:303 */\n mstore\n /* \"--CODEGEN--\":323:327 */\n 0x73\n /* \"--CODEGEN--\":314:321 */\n dup2\n /* \"--CODEGEN--\":306:328 */\n mstore8\n /* \"--CODEGEN--\":347:354 */\n dup3\n /* \"--CODEGEN--\":338:345 */\n dup2\n /* \"--CODEGEN--\":331:355 */\n return\nstop\n\nsub_0: assembly {\n /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":621:3404 library SafeMathChainlink {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n /* \"--CODEGEN--\":12:13 */\n 0x00\n /* \"--CODEGEN--\":9:10 */\n dup1\n /* \"--CODEGEN--\":2:14 */\n revert\n\n auxdata: 0xa2646970667358221220592a4870abda3a80acd1314c3b0154594dc009f65149c29ccd09c440b5ee4ab864736f6c63430006060033\n}\n",
"bytecode": {
"linkReferences": {},
"object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220592a4870abda3a80acd1314c3b0154594dc009f65149c29ccd09c440b5ee4ab864736f6c63430006060033",
"opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSIZE 0x2A 0x48 PUSH17 0xABDA3A80ACD1314C3B0154594DC009F651 0x49 0xC2 SWAP13 0xCD MULMOD 0xC4 BLOCKHASH 0xB5 0xEE 0x4A 0xB8 PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
"sourceMap": "621:2783:3:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220592a4870abda3a80acd1314c3b0154594dc009f65149c29ccd09c440b5ee4ab864736f6c63430006060033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSIZE 0x2A 0x48 PUSH17 0xABDA3A80ACD1314C3B0154594DC009F651 0x49 0xC2 SWAP13 0xCD MULMOD 0xC4 BLOCKHASH 0xB5 0xEE 0x4A 0xB8 PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
"sourceMap": "621:2783:3:-:0;;;;;;12:1:-1;9;2:12"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "97",
"totalCost": "17297"
},
"internal": {
"add(uint256,uint256)": "infinite",
"div(uint256,uint256)": "infinite",
"mod(uint256,uint256)": "infinite",
"mul(uint256,uint256)": "infinite",
"sub(uint256,uint256)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 621,
"end": 3404,
"name": "PUSH #[$]",
"source": 3,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 621,
"end": 3404,
"name": "PUSH [$]",
"source": 3,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 132,
"end": 134,
"name": "PUSH",
"source": -1,
"value": "B"
},
{
"begin": 166,
"end": 173,
"name": "DUP3",
"source": -1
},
{
"begin": 155,
"end": 164,
"name": "DUP3",
"source": -1
},
{
"begin": 146,
"end": 153,
"name": "DUP3",
"source": -1
},
{
"begin": 137,
"end": 174,
"name": "CODECOPY",
"source": -1
},
{
"begin": 255,
"end": 262,
"name": "DUP1",
"source": -1
},
{
"begin": 249,
"end": 263,
"name": "MLOAD",
"source": -1
},
{
"begin": 246,
"end": 247,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 241,
"end": 264,
"name": "BYTE",
"source": -1
},
{
"begin": 235,
"end": 239,
"name": "PUSH",
"source": -1,
"value": "73"
},
{
"begin": 232,
"end": 265,
"name": "EQ",
"source": -1
},
{
"begin": 222,
"end": 224,
"name": "PUSH [tag]",
"source": -1,
"value": "1"
},
{
"begin": 222,
"end": 224,
"name": "JUMPI",
"source": -1
},
{
"begin": 269,
"end": 278,
"name": "INVALID",
"source": -1
},
{
"begin": 222,
"end": 224,
"name": "tag",
"source": -1,
"value": "1"
},
{
"begin": 222,
"end": 224,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 293,
"end": 302,
"name": "ADDRESS",
"source": -1
},
{
"begin": 290,
"end": 291,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 283,
"end": 303,
"name": "MSTORE",
"source": -1
},
{
"begin": 323,
"end": 327,
"name": "PUSH",
"source": -1,
"value": "73"
},
{
"begin": 314,
"end": 321,
"name": "DUP2",
"source": -1
},
{
"begin": 306,
"end": 328,
"name": "MSTORE8",
"source": -1
},
{
"begin": 347,
"end": 354,
"name": "DUP3",
"source": -1
},
{
"begin": 338,
"end": 345,
"name": "DUP2",
"source": -1
},
{
"begin": 331,
"end": 355,
"name": "RETURN",
"source": -1
}
],
".data": {
"0": {
".auxdata": "a2646970667358221220592a4870abda3a80acd1314c3b0154594dc009f65149c29ccd09c440b5ee4ab864736f6c63430006060033",
".code": [
{
"begin": 621,
"end": 3404,
"name": "PUSHDEPLOYADDRESS",
"source": 3
},
{
"begin": 621,
"end": 3404,
"name": "ADDRESS",
"source": 3
},
{
"begin": 621,
"end": 3404,
"name": "EQ",
"source": 3
},
{
"begin": 621,
"end": 3404,
"name": "PUSH",
"source": 3,
"value": "80"
},
{
"begin": 621,
"end": 3404,
"name": "PUSH",
"source": 3,
"value": "40"
},
{
"begin": 621,
"end": 3404,
"name": "MSTORE",
"source": 3
},
{
"begin": 12,
"end": 13,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 9,
"end": 10,
"name": "DUP1",
"source": -1
},
{
"begin": 2,
"end": 14,
"name": "REVERT",
"source": -1
}
]
}
}
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. * Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. * Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":\"SafeMathChainlink\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":{\"keccak256\":\"0x105f5e9491f3d0bbdd4f1c7627eb839d69b944bfd803028a01cc083597692c1f\",\"urls\":[\"bzz-raw://ec45a2748a024a947a921183d4102d5e206808588501d85ddc4f5668a009bc73\",\"dweb:/ipfs/QmRNAMpq7LdWFnJ7wWKGbUuAcURaGSS42PMxtQ4vjrHmp9\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"methods": {}
}
}
},
"contracts/test_contracts/MockOracle.sol": {
"MockOracle": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_link",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
}
],
"name": "CancelOracleRequest",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "specId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "requester",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "payment",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "callbackAddr",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes4",
"name": "callbackFunctionId",
"type": "bytes4"
},
{
"indexed": false,
"internalType": "uint256",
"name": "cancelExpiration",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "dataVersion",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "OracleRequest",
"type": "event"
},
{
"inputs": [],
"name": "EXPIRY_TIME",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_requestId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_payment",
"type": "uint256"
},
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
},
{
"internalType": "uint256",
"name": "_expiration",
"type": "uint256"
}
],
"name": "cancelOracleRequest",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_requestId",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_data",
"type": "bytes32"
}
],
"name": "fulfillOracleRequest",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getChainlinkToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "onTokenTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_payment",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "_specId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_callbackAddress",
"type": "address"
},
{
"internalType": "bytes4",
"name": "_callbackFunctionId",
"type": "bytes4"
},
{
"internalType": "uint256",
"name": "_nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_dataVersion",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "oracleRequest",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"methods": {
"cancelOracleRequest(bytes32,uint256,bytes4,uint256)": {
"details": "Given params must hash to a commitment stored on the contract in order for the request to be valid Emits CancelOracleRequest event.",
"params": {
"_expiration": "The time of the expiration for the request",
"_payment": "The amount of payment given (specified in wei)",
"_requestId": "The request ID"
}
},
"constructor": {
"details": "Sets the LinkToken address for the imported LinkTokenInterface",
"params": {
"_link": "The address of the LINK token"
}
},
"fulfillOracleRequest(bytes32,bytes32)": {
"details": "Given params must hash back to the commitment stored from `oracleRequest`. Will call the callback address' callback function without bubbling up error checking in a `require` so that the node can get paid.",
"params": {
"_data": "The data to return to the consuming contract",
"_requestId": "The fulfillment request ID that must match the requester's"
},
"returns": {
"_0": "Status if the external call was successful"
}
},
"getChainlinkToken()": {
"details": "This is the public implementation for chainlinkTokenAddress, which is an internal method of the ChainlinkClient contract"
},
"onTokenTransfer(address,uint256,bytes)": {
"details": "The data payload's first 2 words will be overwritten by the `_sender` and `_amount` values to ensure correctness. Calls oracleRequest.",
"params": {
"_amount": "Amount of LINK sent (specified in wei)",
"_data": "Payload of the transaction",
"_sender": "Address of the sender"
}
},
"oracleRequest(address,uint256,bytes32,address,bytes4,uint256,uint256,bytes)": {
"details": "Stores the hash of the params as the on-chain commitment for the request. Emits OracleRequest event for the Chainlink node to detect.",
"params": {
"_callbackAddress": "The callback address for the response",
"_callbackFunctionId": "The callback function ID for the response",
"_data": "The CBOR payload of the request",
"_dataVersion": "The specified data version",
"_nonce": "The nonce sent by the requester",
"_payment": "The amount of payment given (specified in wei)",
"_sender": "The sender of the request",
"_specId": "The Job Specification ID"
}
}
},
"title": "The Chainlink Mock Oracle contract"
},
"evm": {
"assembly": " /* \"contracts/test_contracts/MockOracle.sol\":493:6363 contract MockOracle is ChainlinkRequestInterface, LinkTokenReceiver {\r... */\n mstore(0x40, 0x80)\n /* \"contracts/test_contracts/MockOracle.sol\":1440:1581 constructor(address _link)\r... */\n callvalue\n /* \"--CODEGEN--\":5:14 */\n dup1\n /* \"--CODEGEN--\":2:4 */\n iszero\n tag_1\n jumpi\n /* \"--CODEGEN--\":27:28 */\n 0x00\n /* \"--CODEGEN--\":24:25 */\n dup1\n /* \"--CODEGEN--\":17:29 */\n revert\n /* \"--CODEGEN--\":2:4 */\ntag_1:\n /* \"contracts/test_contracts/MockOracle.sol\":1440:1581 constructor(address _link)\r... */\n pop\n mload(0x40)\n sub(codesize, bytecodeSize)\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n dup2\n add\n 0x40\n mstore\n /* \"--CODEGEN--\":15:17 */\n 0x20\n /* \"--CODEGEN--\":10:13 */\n dup2\n /* \"--CODEGEN--\":7:18 */\n lt\n /* \"--CODEGEN--\":4:6 */\n iszero\n tag_2\n jumpi\n /* \"--CODEGEN--\":31:32 */\n 0x00\n /* \"--CODEGEN--\":28:29 */\n dup1\n /* \"--CODEGEN--\":21:33 */\n revert\n /* \"--CODEGEN--\":4:6 */\ntag_2:\n /* \"contracts/test_contracts/MockOracle.sol\":1440:1581 constructor(address _link)\r... */\n dup2\n add\n swap1\n dup1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":1520:1525 _link */\n dup1\n /* \"contracts/test_contracts/MockOracle.sol\":1489:1498 LinkToken */\n 0x00\n dup1\n /* \"contracts/test_contracts/MockOracle.sol\":1489:1526 LinkToken = LinkTokenInterface(_link) */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":1440:1581 constructor(address _link)\r... */\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":493:6363 contract MockOracle is ChainlinkRequestInterface, LinkTokenReceiver {\r... */\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/test_contracts/MockOracle.sol\":493:6363 contract MockOracle is ChainlinkRequestInterface, LinkTokenReceiver {\r... */\n mstore(0x40, 0x80)\n callvalue\n /* \"--CODEGEN--\":5:14 */\n dup1\n /* \"--CODEGEN--\":2:4 */\n iszero\n tag_1\n jumpi\n /* \"--CODEGEN--\":27:28 */\n 0x00\n /* \"--CODEGEN--\":24:25 */\n dup1\n /* \"--CODEGEN--\":17:29 */\n revert\n /* \"--CODEGEN--\":2:4 */\n tag_1:\n /* \"contracts/test_contracts/MockOracle.sol\":493:6363 contract MockOracle is ChainlinkRequestInterface, LinkTokenReceiver {\r... */\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x165d35e1\n eq\n tag_3\n jumpi\n dup1\n 0x1f8f238c\n eq\n tag_4\n jumpi\n dup1\n 0x40429946\n eq\n tag_5\n jumpi\n dup1\n 0x4b602282\n eq\n tag_6\n jumpi\n dup1\n 0x6ee4d553\n eq\n tag_7\n jumpi\n dup1\n 0xa4c0ed36\n eq\n tag_8\n jumpi\n tag_2:\n /* \"--CODEGEN--\":12:13 */\n 0x00\n /* \"--CODEGEN--\":9:10 */\n dup1\n /* \"--CODEGEN--\":2:14 */\n revert\n /* \"contracts/test_contracts/MockOracle.sol\":5664:5793 function getChainlinkToken()\r... */\n tag_3:\n tag_9\n tag_10\n jump\t// in\n tag_9:\n mload(0x40)\n dup1\n dup3\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/test_contracts/MockOracle.sol\":3670:4447 function fulfillOracleRequest(\r... */\n tag_4:\n tag_11\n 0x04\n dup1\n calldatasize\n sub\n /* \"--CODEGEN--\":15:17 */\n 0x40\n /* \"--CODEGEN--\":10:13 */\n dup2\n /* \"--CODEGEN--\":7:18 */\n lt\n /* \"--CODEGEN--\":4:6 */\n iszero\n tag_12\n jumpi\n /* \"--CODEGEN--\":31:32 */\n 0x00\n /* \"--CODEGEN--\":28:29 */\n dup1\n /* \"--CODEGEN--\":21:33 */\n revert\n /* \"--CODEGEN--\":4:6 */\n tag_12:\n /* \"contracts/test_contracts/MockOracle.sol\":3670:4447 function fulfillOracleRequest(\r... */\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n tag_13\n jump\t// in\n tag_11:\n mload(0x40)\n dup1\n dup3\n iszero\n iszero\n iszero\n iszero\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/test_contracts/MockOracle.sol\":2257:3154 function oracleRequest(\r... */\n tag_5:\n tag_14\n 0x04\n dup1\n calldatasize\n sub\n /* \"--CODEGEN--\":15:18 */\n 0x0100\n /* \"--CODEGEN--\":10:13 */\n dup2\n /* \"--CODEGEN--\":7:19 */\n lt\n /* \"--CODEGEN--\":4:6 */\n iszero\n tag_15\n jumpi\n /* \"--CODEGEN--\":32:33 */\n 0x00\n /* \"--CODEGEN--\":29:30 */\n dup1\n /* \"--CODEGEN--\":22:34 */\n revert\n /* \"--CODEGEN--\":4:6 */\n tag_15:\n /* \"contracts/test_contracts/MockOracle.sol\":2257:3154 function oracleRequest(\r... */\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n dup1\n calldataload\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n dup1\n calldataload\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n /* \"--CODEGEN--\":27:38 */\n 0x0100000000\n /* \"--CODEGEN--\":14:25 */\n dup2\n /* \"--CODEGEN--\":11:39 */\n gt\n /* \"--CODEGEN--\":8:10 */\n iszero\n tag_16\n jumpi\n /* \"--CODEGEN--\":52:53 */\n 0x00\n /* \"--CODEGEN--\":49:50 */\n dup1\n /* \"--CODEGEN--\":42:54 */\n revert\n /* \"--CODEGEN--\":8:10 */\n tag_16:\n /* \"contracts/test_contracts/MockOracle.sol\":2257:3154 function oracleRequest(\r... */\n dup3\n add\n /* \"--CODEGEN--\":41:50 */\n dup4\n /* \"--CODEGEN--\":34:38 */\n 0x20\n /* \"--CODEGEN--\":18:32 */\n dup3\n /* \"--CODEGEN--\":14:39 */\n add\n /* \"--CODEGEN--\":11:51 */\n gt\n /* \"--CODEGEN--\":8:10 */\n iszero\n tag_17\n jumpi\n /* \"--CODEGEN--\":64:65 */\n 0x00\n /* \"--CODEGEN--\":61:62 */\n dup1\n /* \"--CODEGEN--\":54:66 */\n revert\n /* \"--CODEGEN--\":8:10 */\n tag_17:\n /* \"contracts/test_contracts/MockOracle.sol\":2257:3154 function oracleRequest(\r... */\n dup1\n calldataload\n swap1\n 0x20\n add\n swap2\n /* \"--CODEGEN--\":100:109 */\n dup5\n /* \"--CODEGEN--\":95:96 */\n 0x01\n /* \"--CODEGEN--\":81:93 */\n dup4\n /* \"--CODEGEN--\":77:97 */\n mul\n /* \"--CODEGEN--\":67:75 */\n dup5\n /* \"--CODEGEN--\":63:98 */\n add\n /* \"--CODEGEN--\":60:110 */\n gt\n /* \"--CODEGEN--\":39:50 */\n 0x0100000000\n /* \"--CODEGEN--\":25:37 */\n dup4\n /* \"--CODEGEN--\":22:51 */\n gt\n /* \"--CODEGEN--\":11:118 */\n or\n /* \"--CODEGEN--\":8:10 */\n iszero\n tag_18\n jumpi\n /* \"--CODEGEN--\":131:132 */\n 0x00\n /* \"--CODEGEN--\":128:129 */\n dup1\n /* \"--CODEGEN--\":121:133 */\n revert\n /* \"--CODEGEN--\":8:10 */\n tag_18:\n /* \"contracts/test_contracts/MockOracle.sol\":2257:3154 function oracleRequest(\r... */\n swap1\n swap2\n swap3\n swap4\n swap2\n swap3\n swap4\n swap1\n pop\n pop\n pop\n tag_19\n jump\t// in\n tag_14:\n stop\n /* \"contracts/test_contracts/MockOracle.sol\":608:655 uint256 constant public EXPIRY_TIME = 5 minutes */\n tag_6:\n tag_20\n tag_21\n jump\t// in\n tag_20:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/test_contracts/MockOracle.sol\":4956:5454 function cancelOracleRequest(\r... */\n tag_7:\n tag_22\n 0x04\n dup1\n calldatasize\n sub\n /* \"--CODEGEN--\":15:18 */\n 0x80\n /* \"--CODEGEN--\":10:13 */\n dup2\n /* \"--CODEGEN--\":7:19 */\n lt\n /* \"--CODEGEN--\":4:6 */\n iszero\n tag_23\n jumpi\n /* \"--CODEGEN--\":32:33 */\n 0x00\n /* \"--CODEGEN--\":29:30 */\n dup1\n /* \"--CODEGEN--\":22:34 */\n revert\n /* \"--CODEGEN--\":4:6 */\n tag_23:\n /* \"contracts/test_contracts/MockOracle.sol\":4956:5454 function cancelOracleRequest(\r... */\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n dup1\n calldataload\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n tag_24\n jump\t// in\n tag_22:\n stop\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":750:1413 function onTokenTransfer(... */\n tag_8:\n tag_25\n 0x04\n dup1\n calldatasize\n sub\n /* \"--CODEGEN--\":15:17 */\n 0x60\n /* \"--CODEGEN--\":10:13 */\n dup2\n /* \"--CODEGEN--\":7:18 */\n lt\n /* \"--CODEGEN--\":4:6 */\n iszero\n tag_26\n jumpi\n /* \"--CODEGEN--\":31:32 */\n 0x00\n /* \"--CODEGEN--\":28:29 */\n dup1\n /* \"--CODEGEN--\":21:33 */\n revert\n /* \"--CODEGEN--\":4:6 */\n tag_26:\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":750:1413 function onTokenTransfer(... */\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n /* \"--CODEGEN--\":27:38 */\n 0x0100000000\n /* \"--CODEGEN--\":14:25 */\n dup2\n /* \"--CODEGEN--\":11:39 */\n gt\n /* \"--CODEGEN--\":8:10 */\n iszero\n tag_27\n jumpi\n /* \"--CODEGEN--\":52:53 */\n 0x00\n /* \"--CODEGEN--\":49:50 */\n dup1\n /* \"--CODEGEN--\":42:54 */\n revert\n /* \"--CODEGEN--\":8:10 */\n tag_27:\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":750:1413 function onTokenTransfer(... */\n dup3\n add\n /* \"--CODEGEN--\":41:50 */\n dup4\n /* \"--CODEGEN--\":34:38 */\n 0x20\n /* \"--CODEGEN--\":18:32 */\n dup3\n /* \"--CODEGEN--\":14:39 */\n add\n /* \"--CODEGEN--\":11:51 */\n gt\n /* \"--CODEGEN--\":8:10 */\n iszero\n tag_28\n jumpi\n /* \"--CODEGEN--\":64:65 */\n 0x00\n /* \"--CODEGEN--\":61:62 */\n dup1\n /* \"--CODEGEN--\":54:66 */\n revert\n /* \"--CODEGEN--\":8:10 */\n tag_28:\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":750:1413 function onTokenTransfer(... */\n dup1\n calldataload\n swap1\n 0x20\n add\n swap2\n /* \"--CODEGEN--\":100:109 */\n dup5\n /* \"--CODEGEN--\":95:96 */\n 0x01\n /* \"--CODEGEN--\":81:93 */\n dup4\n /* \"--CODEGEN--\":77:97 */\n mul\n /* \"--CODEGEN--\":67:75 */\n dup5\n /* \"--CODEGEN--\":63:98 */\n add\n /* \"--CODEGEN--\":60:110 */\n gt\n /* \"--CODEGEN--\":39:50 */\n 0x0100000000\n /* \"--CODEGEN--\":25:37 */\n dup4\n /* \"--CODEGEN--\":22:51 */\n gt\n /* \"--CODEGEN--\":11:118 */\n or\n /* \"--CODEGEN--\":8:10 */\n iszero\n tag_29\n jumpi\n /* \"--CODEGEN--\":131:132 */\n 0x00\n /* \"--CODEGEN--\":128:129 */\n dup1\n /* \"--CODEGEN--\":121:133 */\n revert\n /* \"--CODEGEN--\":8:10 */\n tag_29:\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":750:1413 function onTokenTransfer(... */\n swap2\n swap1\n dup1\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap4\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup4\n dup4\n /* \"--CODEGEN--\":30:33 */\n dup1\n /* \"--CODEGEN--\":22:28 */\n dup3\n /* \"--CODEGEN--\":14:20 */\n dup5\n /* \"--CODEGEN--\":1:34 */\n calldatacopy\n /* \"--CODEGEN--\":99:100 */\n 0x00\n /* \"--CODEGEN--\":93:96 */\n dup2\n /* \"--CODEGEN--\":85:91 */\n dup5\n /* \"--CODEGEN--\":81:97 */\n add\n /* \"--CODEGEN--\":74:101 */\n mstore\n /* \"--CODEGEN--\":137:141 */\n 0x1f\n /* \"--CODEGEN--\":133:142 */\n not\n /* \"--CODEGEN--\":126:130 */\n 0x1f\n /* \"--CODEGEN--\":121:124 */\n dup3\n /* \"--CODEGEN--\":117:131 */\n add\n /* \"--CODEGEN--\":113:143 */\n and\n /* \"--CODEGEN--\":106:143 */\n swap1\n pop\n /* \"--CODEGEN--\":169:172 */\n dup1\n /* \"--CODEGEN--\":161:167 */\n dup4\n /* \"--CODEGEN--\":157:173 */\n add\n /* \"--CODEGEN--\":147:173 */\n swap3\n pop\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":750:1413 function onTokenTransfer(... */\n pop\n pop\n pop\n pop\n pop\n pop\n swap2\n swap3\n swap2\n swap3\n swap1\n pop\n pop\n pop\n tag_30\n jump\t// in\n tag_25:\n stop\n /* \"contracts/test_contracts/MockOracle.sol\":5664:5793 function getChainlinkToken()\r... */\n tag_10:\n /* \"contracts/test_contracts/MockOracle.sol\":5743:5750 address */\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":5777:5786 LinkToken */\n dup1\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/test_contracts/MockOracle.sol\":5762:5787 return address(LinkToken) */\n swap1\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":5664:5793 function getChainlinkToken()\r... */\n swap1\n jump\t// out\n /* \"contracts/test_contracts/MockOracle.sol\":3670:4447 function fulfillOracleRequest(\r... */\n tag_13:\n /* \"contracts/test_contracts/MockOracle.sol\":3810:3814 bool */\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":3784:3794 _requestId */\n dup3\n /* \"contracts/test_contracts/MockOracle.sol\":6064:6065 0 */\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":6016:6066 commitments[_requestId].callbackAddr != address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/test_contracts/MockOracle.sol\":6016:6027 commitments */\n 0x01\n /* \"contracts/test_contracts/MockOracle.sol\":6016:6039 commitments[_requestId] */\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":6028:6038 _requestId */\n dup4\n /* \"contracts/test_contracts/MockOracle.sol\":6016:6039 commitments[_requestId] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"contracts/test_contracts/MockOracle.sol\":6016:6052 commitments[_requestId].callbackAddr */\n 0x00\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/test_contracts/MockOracle.sol\":6016:6066 commitments[_requestId].callbackAddr != address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n iszero\n /* \"contracts/test_contracts/MockOracle.sol\":6008:6098 require(commitments[_requestId].callbackAddr != address(0), \"Must have a valid requestId\") */\n tag_33\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n dup1\n dup1\n 0x20\n add\n dup3\n dup2\n sub\n dup3\n mstore\n 0x1b\n dup2\n mstore\n 0x20\n add\n dup1\n 0x4d757374206861766520612076616c6964207265717565737449640000000000\n dup2\n mstore\n pop\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_33:\n /* \"contracts/test_contracts/MockOracle.sol\":3826:3844 Request memory req */\n tag_35\n tag_36\n jump\t// in\n tag_35:\n /* \"contracts/test_contracts/MockOracle.sol\":3847:3858 commitments */\n 0x01\n /* \"contracts/test_contracts/MockOracle.sol\":3847:3870 commitments[_requestId] */\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":3859:3869 _requestId */\n dup7\n /* \"contracts/test_contracts/MockOracle.sol\":3847:3870 commitments[_requestId] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"contracts/test_contracts/MockOracle.sol\":3826:3870 Request memory req = commitments[_requestId] */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n swap1\n dup2\n 0x00\n dup3\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n 0x00\n dup3\n add\n 0x14\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xe0\n shl\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n dup2\n mstore\n pop\n pop\n swap1\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":3884:3895 commitments */\n 0x01\n /* \"contracts/test_contracts/MockOracle.sol\":3884:3907 commitments[_requestId] */\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":3896:3906 _requestId */\n dup7\n /* \"contracts/test_contracts/MockOracle.sol\":3884:3907 commitments[_requestId] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":3877:3907 delete commitments[_requestId] */\n dup1\n dup3\n add\n exp(0x0100, 0x00)\n dup2\n sload\n swap1\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n sstore\n 0x00\n dup3\n add\n exp(0x0100, 0x14)\n dup2\n sload\n swap1\n 0xffffffff\n mul\n not\n and\n swap1\n sstore\n pop\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":714:720 400000 */\n 0x061a80\n /* \"contracts/test_contracts/MockOracle.sol\":3922:3931 gasleft() */\n gas\n /* \"contracts/test_contracts/MockOracle.sol\":3922:3961 gasleft() >= MINIMUM_CONSUMER_GAS_LIMIT */\n lt\n iszero\n /* \"contracts/test_contracts/MockOracle.sol\":3914:3998 require(gasleft() >= MINIMUM_CONSUMER_GAS_LIMIT, \"Must provide consumer enough gas\") */\n tag_37\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n dup1\n dup1\n 0x20\n add\n dup3\n dup2\n sub\n dup3\n mstore\n 0x20\n dup2\n mstore\n 0x20\n add\n dup1\n 0x4d7573742070726f7669646520636f6e73756d657220656e6f75676820676173\n dup2\n mstore\n pop\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_37:\n /* \"contracts/test_contracts/MockOracle.sol\":4268:4280 bool success */\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":4286:4289 req */\n dup2\n /* \"contracts/test_contracts/MockOracle.sol\":4286:4302 req.callbackAddr */\n 0x00\n add\n mload\n /* \"contracts/test_contracts/MockOracle.sol\":4286:4307 req.callbackAddr.call */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/test_contracts/MockOracle.sol\":4331:4334 req */\n dup3\n /* \"contracts/test_contracts/MockOracle.sol\":4331:4353 req.callbackFunctionId */\n 0x20\n add\n mload\n /* \"contracts/test_contracts/MockOracle.sol\":4355:4365 _requestId */\n dup8\n /* \"contracts/test_contracts/MockOracle.sol\":4367:4372 _data */\n dup8\n /* \"contracts/test_contracts/MockOracle.sol\":4308:4373 abi.encodeWithSelector(req.callbackFunctionId, _requestId, _data) */\n add(0x24, mload(0x40))\n dup1\n dup4\n dup2\n mstore\n 0x20\n add\n dup3\n dup2\n mstore\n 0x20\n add\n swap3\n pop\n pop\n pop\n mload(0x40)\n /* \"--CODEGEN--\":49:53 */\n 0x20\n /* \"--CODEGEN--\":39:46 */\n dup2\n /* \"--CODEGEN--\":30:37 */\n dup4\n /* \"--CODEGEN--\":26:47 */\n sub\n /* \"--CODEGEN--\":22:54 */\n sub\n /* \"--CODEGEN--\":13:20 */\n dup2\n /* \"--CODEGEN--\":6:55 */\n mstore\n /* \"contracts/test_contracts/MockOracle.sol\":4308:4373 abi.encodeWithSelector(req.callbackFunctionId, _requestId, _data) */\n swap1\n 0x40\n mstore\n swap1\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n /* \"--CODEGEN--\":38:42 */\n 0x20\n /* \"--CODEGEN--\":29:36 */\n dup3\n /* \"--CODEGEN--\":25:43 */\n add\n /* \"--CODEGEN--\":67:77 */\n dup1\n /* \"--CODEGEN--\":61:78 */\n mload\n /* \"--CODEGEN--\":96:154 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"--CODEGEN--\":199:207 */\n dup4\n /* \"--CODEGEN--\":192:196 */\n dup2\n /* \"--CODEGEN--\":186:190 */\n dup4\n /* \"--CODEGEN--\":182:197 */\n and\n /* \"--CODEGEN--\":179:208 */\n or\n /* \"--CODEGEN--\":167:177 */\n dup4\n /* \"--CODEGEN--\":160:209 */\n mstore\n /* \"--CODEGEN--\":0:215 */\n pop\n pop\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":4308:4373 abi.encodeWithSelector(req.callbackFunctionId, _requestId, _data) */\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":4286:4374 req.callbackAddr.call(abi.encodeWithSelector(req.callbackFunctionId, _requestId, _data)) */\n mload(0x40)\n dup1\n dup3\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n dup1\n dup4\n dup4\n /* \"--CODEGEN--\":36:189 */\n tag_38:\n /* \"--CODEGEN--\":66:68 */\n 0x20\n /* \"--CODEGEN--\":61:64 */\n dup4\n /* \"--CODEGEN--\":58:69 */\n lt\n /* \"--CODEGEN--\":36:189 */\n tag_40\n jumpi\n /* \"--CODEGEN--\":182:185 */\n dup1\n /* \"--CODEGEN--\":176:186 */\n mload\n /* \"--CODEGEN--\":171:174 */\n dup3\n /* \"--CODEGEN--\":164:187 */\n mstore\n /* \"--CODEGEN--\":98:100 */\n 0x20\n /* \"--CODEGEN--\":93:96 */\n dup3\n /* \"--CODEGEN--\":89:101 */\n add\n /* \"--CODEGEN--\":82:101 */\n swap2\n pop\n /* \"--CODEGEN--\":123:125 */\n 0x20\n /* \"--CODEGEN--\":118:121 */\n dup2\n /* \"--CODEGEN--\":114:126 */\n add\n /* \"--CODEGEN--\":107:126 */\n swap1\n pop\n /* \"--CODEGEN--\":148:150 */\n 0x20\n /* \"--CODEGEN--\":143:146 */\n dup4\n /* \"--CODEGEN--\":139:151 */\n sub\n /* \"--CODEGEN--\":132:151 */\n swap3\n pop\n /* \"--CODEGEN--\":36:189 */\n jump(tag_38)\n tag_40:\n /* \"--CODEGEN--\":274:275 */\n 0x01\n /* \"--CODEGEN--\":267:270 */\n dup4\n /* \"--CODEGEN--\":263:265 */\n 0x20\n /* \"--CODEGEN--\":259:271 */\n sub\n /* \"--CODEGEN--\":254:257 */\n 0x0100\n /* \"--CODEGEN--\":250:272 */\n exp\n /* \"--CODEGEN--\":246:276 */\n sub\n /* \"--CODEGEN--\":315:319 */\n dup1\n /* \"--CODEGEN--\":311:320 */\n not\n /* \"--CODEGEN--\":305:308 */\n dup3\n /* \"--CODEGEN--\":299:309 */\n mload\n /* \"--CODEGEN--\":295:321 */\n and\n /* \"--CODEGEN--\":356:360 */\n dup2\n /* \"--CODEGEN--\":350:353 */\n dup5\n /* \"--CODEGEN--\":344:354 */\n mload\n /* \"--CODEGEN--\":340:361 */\n and\n /* \"--CODEGEN--\":389:396 */\n dup1\n /* \"--CODEGEN--\":380:387 */\n dup3\n /* \"--CODEGEN--\":377:397 */\n or\n /* \"--CODEGEN--\":372:375 */\n dup6\n /* \"--CODEGEN--\":365:398 */\n mstore\n /* \"--CODEGEN--\":3:402 */\n pop\n pop\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":4286:4374 req.callbackAddr.call(abi.encodeWithSelector(req.callbackFunctionId, _requestId, _data)) */\n pop\n pop\n pop\n swap1\n pop\n add\n swap2\n pop\n pop\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup7\n gas\n call\n swap2\n pop\n pop\n returndatasize\n /* \"--CODEGEN--\":12:13 */\n dup1\n /* \"--CODEGEN--\":19:20 */\n 0x00\n /* \"--CODEGEN--\":14:41 */\n dup2\n eq\n tag_43\n jumpi\n /* \"--CODEGEN--\":67:71 */\n 0x40\n /* \"--CODEGEN--\":61:72 */\n mload\n /* \"--CODEGEN--\":56:72 */\n swap2\n pop\n /* \"--CODEGEN--\":134:138 */\n 0x1f\n /* \"--CODEGEN--\":130:139 */\n not\n /* \"--CODEGEN--\":123:127 */\n 0x3f\n /* \"--CODEGEN--\":105:121 */\n returndatasize\n /* \"--CODEGEN--\":101:128 */\n add\n /* \"--CODEGEN--\":97:140 */\n and\n /* \"--CODEGEN--\":94:95 */\n dup3\n /* \"--CODEGEN--\":90:141 */\n add\n /* \"--CODEGEN--\":84:88 */\n 0x40\n /* \"--CODEGEN--\":77:142 */\n mstore\n /* \"--CODEGEN--\":157:173 */\n returndatasize\n /* \"--CODEGEN--\":154:155 */\n dup3\n /* \"--CODEGEN--\":147:174 */\n mstore\n /* \"--CODEGEN--\":211:227 */\n returndatasize\n /* \"--CODEGEN--\":208:209 */\n 0x00\n /* \"--CODEGEN--\":201:205 */\n 0x20\n /* \"--CODEGEN--\":198:199 */\n dup5\n /* \"--CODEGEN--\":194:206 */\n add\n /* \"--CODEGEN--\":179:228 */\n returndatacopy\n /* \"--CODEGEN--\":5:233 */\n jump(tag_42)\n /* \"--CODEGEN--\":14:41 */\n tag_43:\n /* \"--CODEGEN--\":32:36 */\n 0x60\n /* \"--CODEGEN--\":27:36 */\n swap2\n pop\n /* \"--CODEGEN--\":5:233 */\n tag_42:\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":4267:4374 (bool success, ) = req.callbackAddr.call(abi.encodeWithSelector(req.callbackFunctionId, _requestId, _data)) */\n pop\n swap1\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":4434:4441 success */\n dup1\n /* \"contracts/test_contracts/MockOracle.sol\":4427:4441 return success */\n swap4\n pop\n pop\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":3670:4447 function fulfillOracleRequest(\r... */\n pop\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"contracts/test_contracts/MockOracle.sol\":2257:3154 function oracleRequest(\r... */\n tag_19:\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1598:1617 getChainlinkToken() */\n tag_45\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1598:1615 getChainlinkToken */\n tag_10\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1598:1617 getChainlinkToken() */\n jump\t// in\n tag_45:\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1584:1617 msg.sender == getChainlinkToken() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1584:1594 msg.sender */\n caller\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1584:1617 msg.sender == getChainlinkToken() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1576:1641 require(msg.sender == getChainlinkToken(), \"Must use LINK token\") */\n tag_46\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n dup1\n dup1\n 0x20\n add\n dup3\n dup2\n sub\n dup3\n mstore\n 0x13\n dup2\n mstore\n 0x20\n add\n dup1\n 0x4d75737420757365204c494e4b20746f6b656e00000000000000000000000000\n dup2\n mstore\n pop\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_46:\n /* \"contracts/test_contracts/MockOracle.sol\":2561:2577 _callbackAddress */\n dup6\n /* \"contracts/test_contracts/MockOracle.sol\":6306:6315 LinkToken */\n 0x00\n dup1\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/test_contracts/MockOracle.sol\":6291:6316 _to != address(LinkToken) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/test_contracts/MockOracle.sol\":6291:6294 _to */\n dup2\n /* \"contracts/test_contracts/MockOracle.sol\":6291:6316 _to != address(LinkToken) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n iszero\n /* \"contracts/test_contracts/MockOracle.sol\":6283:6344 require(_to != address(LinkToken), \"Cannot callback to LINK\") */\n tag_48\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n dup1\n dup1\n 0x20\n add\n dup3\n dup2\n sub\n dup3\n mstore\n 0x17\n dup2\n mstore\n 0x20\n add\n dup1\n 0x43616e6e6f742063616c6c6261636b20746f204c494e4b000000000000000000\n dup2\n mstore\n pop\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_48:\n /* \"contracts/test_contracts/MockOracle.sol\":2589:2606 bytes32 requestId */\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":2636:2643 _sender */\n dup11\n /* \"contracts/test_contracts/MockOracle.sol\":2645:2651 _nonce */\n dup7\n /* \"contracts/test_contracts/MockOracle.sol\":2619:2652 abi.encodePacked(_sender, _nonce) */\n add(0x20, mload(0x40))\n dup1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x60\n shl\n dup2\n mstore\n 0x14\n add\n dup3\n dup2\n mstore\n 0x20\n add\n swap3\n pop\n pop\n pop\n mload(0x40)\n /* \"--CODEGEN--\":49:53 */\n 0x20\n /* \"--CODEGEN--\":39:46 */\n dup2\n /* \"--CODEGEN--\":30:37 */\n dup4\n /* \"--CODEGEN--\":26:47 */\n sub\n /* \"--CODEGEN--\":22:54 */\n sub\n /* \"--CODEGEN--\":13:20 */\n dup2\n /* \"--CODEGEN--\":6:55 */\n mstore\n /* \"contracts/test_contracts/MockOracle.sol\":2619:2652 abi.encodePacked(_sender, _nonce) */\n swap1\n 0x40\n mstore\n /* \"contracts/test_contracts/MockOracle.sol\":2609:2653 keccak256(abi.encodePacked(_sender, _nonce)) */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"contracts/test_contracts/MockOracle.sol\":2589:2653 bytes32 requestId = keccak256(abi.encodePacked(_sender, _nonce)) */\n swap1\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":2715:2716 0 */\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":2668:2717 commitments[requestId].callbackAddr == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/test_contracts/MockOracle.sol\":2668:2679 commitments */\n 0x01\n /* \"contracts/test_contracts/MockOracle.sol\":2668:2690 commitments[requestId] */\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":2680:2689 requestId */\n dup4\n /* \"contracts/test_contracts/MockOracle.sol\":2668:2690 commitments[requestId] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"contracts/test_contracts/MockOracle.sol\":2668:2703 commitments[requestId].callbackAddr */\n 0x00\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/test_contracts/MockOracle.sol\":2668:2717 commitments[requestId].callbackAddr == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"contracts/test_contracts/MockOracle.sol\":2660:2742 require(commitments[requestId].callbackAddr == address(0), \"Must use a unique ID\") */\n tag_50\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n dup1\n dup1\n 0x20\n add\n dup3\n dup2\n sub\n dup3\n mstore\n 0x14\n dup2\n mstore\n 0x20\n add\n dup1\n 0x4d75737420757365206120756e69717565204944000000000000000000000000\n dup2\n mstore\n pop\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_50:\n /* \"contracts/test_contracts/MockOracle.sol\":2800:2818 uint256 expiration */\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":2821:2841 now.add(EXPIRY_TIME) */\n tag_51\n /* \"contracts/test_contracts/MockOracle.sol\":646:655 5 minutes */\n 0x012c\n /* \"contracts/test_contracts/MockOracle.sol\":2821:2824 now */\n timestamp\n /* \"contracts/test_contracts/MockOracle.sol\":2821:2828 now.add */\n tag_52\n swap1\n /* \"contracts/test_contracts/MockOracle.sol\":2821:2841 now.add(EXPIRY_TIME) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_51:\n /* \"contracts/test_contracts/MockOracle.sol\":2800:2841 uint256 expiration = now.add(EXPIRY_TIME) */\n swap1\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":2875:2946 Request(\r... */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n /* \"contracts/test_contracts/MockOracle.sol\":2893:2909 _callbackAddress */\n dup11\n /* \"contracts/test_contracts/MockOracle.sol\":2875:2946 Request(\r... */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n /* \"contracts/test_contracts/MockOracle.sol\":2920:2939 _callbackFunctionId */\n dup10\n /* \"contracts/test_contracts/MockOracle.sol\":2875:2946 Request(\r... */\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n dup2\n mstore\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":2850:2861 commitments */\n 0x01\n /* \"contracts/test_contracts/MockOracle.sol\":2850:2872 commitments[requestId] */\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":2862:2871 requestId */\n dup5\n /* \"contracts/test_contracts/MockOracle.sol\":2850:2872 commitments[requestId] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"contracts/test_contracts/MockOracle.sol\":2850:2946 commitments[requestId] = Request(\r... */\n 0x00\n dup3\n add\n mload\n dup2\n 0x00\n add\n exp(0x0100, 0x00)\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n 0x20\n dup3\n add\n mload\n dup2\n 0x00\n add\n exp(0x0100, 0x14)\n dup2\n sload\n dup2\n 0xffffffff\n mul\n not\n and\n swap1\n dup4\n 0xe0\n shr\n mul\n or\n swap1\n sstore\n pop\n swap1\n pop\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":2982:2989 _specId */\n dup10\n /* \"contracts/test_contracts/MockOracle.sol\":2960:3148 OracleRequest(\r... */\n 0xd8d7ecc4800d25fa53ce0372f13a416d98907a7ef3d8d3bdd79cf4fe75529c65\n /* \"contracts/test_contracts/MockOracle.sol\":2998:3005 _sender */\n dup14\n /* \"contracts/test_contracts/MockOracle.sol\":3014:3023 requestId */\n dup5\n /* \"contracts/test_contracts/MockOracle.sol\":3032:3040 _payment */\n dup15\n /* \"contracts/test_contracts/MockOracle.sol\":3049:3065 _callbackAddress */\n dup14\n /* \"contracts/test_contracts/MockOracle.sol\":3074:3093 _callbackFunctionId */\n dup14\n /* \"contracts/test_contracts/MockOracle.sol\":3102:3112 expiration */\n dup8\n /* \"contracts/test_contracts/MockOracle.sol\":3121:3133 _dataVersion */\n dup14\n /* \"contracts/test_contracts/MockOracle.sol\":3142:3147 _data */\n dup14\n dup14\n /* \"contracts/test_contracts/MockOracle.sol\":2960:3148 OracleRequest(\r... */\n mload(0x40)\n dup1\n dup11\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n dup10\n dup2\n mstore\n 0x20\n add\n dup9\n dup2\n mstore\n 0x20\n add\n dup8\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n dup7\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n dup2\n mstore\n 0x20\n add\n dup6\n dup2\n mstore\n 0x20\n add\n dup5\n dup2\n mstore\n 0x20\n add\n dup1\n 0x20\n add\n dup3\n dup2\n sub\n dup3\n mstore\n dup5\n dup5\n dup3\n dup2\n dup2\n mstore\n 0x20\n add\n swap3\n pop\n /* \"--CODEGEN--\":30:33 */\n dup1\n /* \"--CODEGEN--\":22:28 */\n dup3\n /* \"--CODEGEN--\":14:20 */\n dup5\n /* \"--CODEGEN--\":1:34 */\n calldatacopy\n /* \"--CODEGEN--\":99:100 */\n 0x00\n /* \"--CODEGEN--\":93:96 */\n dup2\n /* \"--CODEGEN--\":85:91 */\n dup5\n /* \"--CODEGEN--\":81:97 */\n add\n /* \"--CODEGEN--\":74:101 */\n mstore\n /* \"--CODEGEN--\":137:141 */\n 0x1f\n /* \"--CODEGEN--\":133:142 */\n not\n /* \"--CODEGEN--\":126:130 */\n 0x1f\n /* \"--CODEGEN--\":121:124 */\n dup3\n /* \"--CODEGEN--\":117:131 */\n add\n /* \"--CODEGEN--\":113:143 */\n and\n /* \"--CODEGEN--\":106:143 */\n swap1\n pop\n /* \"--CODEGEN--\":169:172 */\n dup1\n /* \"--CODEGEN--\":161:167 */\n dup4\n /* \"--CODEGEN--\":157:173 */\n add\n /* \"--CODEGEN--\":147:173 */\n swap3\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":2960:3148 OracleRequest(\r... */\n pop\n pop\n swap11\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"contracts/test_contracts/MockOracle.sol\":6351:6352 _ */\n pop\n pop\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1647:1648 _ */\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":2257:3154 function oracleRequest(\r... */\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/test_contracts/MockOracle.sol\":608:655 uint256 constant public EXPIRY_TIME = 5 minutes */\n tag_21:\n /* \"contracts/test_contracts/MockOracle.sol\":646:655 5 minutes */\n 0x012c\n /* \"contracts/test_contracts/MockOracle.sol\":608:655 uint256 constant public EXPIRY_TIME = 5 minutes */\n dup2\n jump\t// out\n /* \"contracts/test_contracts/MockOracle.sol\":4956:5454 function cancelOracleRequest(\r... */\n tag_24:\n /* \"contracts/test_contracts/MockOracle.sol\":5171:5172 0 */\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":5123:5173 commitments[_requestId].callbackAddr != address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/test_contracts/MockOracle.sol\":5123:5134 commitments */\n 0x01\n /* \"contracts/test_contracts/MockOracle.sol\":5123:5146 commitments[_requestId] */\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":5135:5145 _requestId */\n dup7\n /* \"contracts/test_contracts/MockOracle.sol\":5123:5146 commitments[_requestId] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"contracts/test_contracts/MockOracle.sol\":5123:5159 commitments[_requestId].callbackAddr */\n 0x00\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/test_contracts/MockOracle.sol\":5123:5173 commitments[_requestId].callbackAddr != address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n iszero\n /* \"contracts/test_contracts/MockOracle.sol\":5115:5198 require(commitments[_requestId].callbackAddr != address(0), \"Must use a unique ID\") */\n tag_54\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n dup1\n dup1\n 0x20\n add\n dup3\n dup2\n sub\n dup3\n mstore\n 0x14\n dup2\n mstore\n 0x20\n add\n dup1\n 0x4d75737420757365206120756e69717565204944000000000000000000000000\n dup2\n mstore\n pop\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_54:\n /* \"contracts/test_contracts/MockOracle.sol\":5279:5282 now */\n timestamp\n /* \"contracts/test_contracts/MockOracle.sol\":5264:5275 _expiration */\n dup2\n /* \"contracts/test_contracts/MockOracle.sol\":5264:5282 _expiration <= now */\n gt\n iszero\n /* \"contracts/test_contracts/MockOracle.sol\":5256:5309 require(_expiration <= now, \"Request is not expired\") */\n tag_55\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n dup1\n dup1\n 0x20\n add\n dup3\n dup2\n sub\n dup3\n mstore\n 0x16\n dup2\n mstore\n 0x20\n add\n dup1\n 0x52657175657374206973206e6f74206578706972656400000000000000000000\n dup2\n mstore\n pop\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_55:\n /* \"contracts/test_contracts/MockOracle.sol\":5325:5336 commitments */\n 0x01\n /* \"contracts/test_contracts/MockOracle.sol\":5325:5348 commitments[_requestId] */\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":5337:5347 _requestId */\n dup6\n /* \"contracts/test_contracts/MockOracle.sol\":5325:5348 commitments[_requestId] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n /* \"contracts/test_contracts/MockOracle.sol\":5318:5348 delete commitments[_requestId] */\n dup1\n dup3\n add\n exp(0x0100, 0x00)\n dup2\n sload\n swap1\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n sstore\n 0x00\n dup3\n add\n exp(0x0100, 0x14)\n dup2\n sload\n swap1\n 0xffffffff\n mul\n not\n and\n swap1\n sstore\n pop\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":5380:5390 _requestId */\n dup4\n /* \"contracts/test_contracts/MockOracle.sol\":5360:5391 CancelOracleRequest(_requestId) */\n 0xa7842b9ec549398102c0d91b1b9919b2f20558aefdadf57528a95c6cd3292e93\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"contracts/test_contracts/MockOracle.sol\":5407:5416 LinkToken */\n 0x00\n dup1\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/test_contracts/MockOracle.sol\":5407:5425 LinkToken.transfer */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xa9059cbb\n /* \"contracts/test_contracts/MockOracle.sol\":5426:5436 msg.sender */\n caller\n /* \"contracts/test_contracts/MockOracle.sol\":5438:5446 _payment */\n dup6\n /* \"contracts/test_contracts/MockOracle.sol\":5407:5447 LinkToken.transfer(msg.sender, _payment) */\n mload(0x40)\n dup4\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n dup1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n dup3\n dup2\n mstore\n 0x20\n add\n swap3\n pop\n pop\n pop\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n /* \"--CODEGEN--\":5:14 */\n dup1\n /* \"--CODEGEN--\":2:4 */\n iszero\n tag_56\n jumpi\n /* \"--CODEGEN--\":27:28 */\n 0x00\n /* \"--CODEGEN--\":24:25 */\n dup1\n /* \"--CODEGEN--\":17:29 */\n revert\n /* \"--CODEGEN--\":2:4 */\n tag_56:\n /* \"contracts/test_contracts/MockOracle.sol\":5407:5447 LinkToken.transfer(msg.sender, _payment) */\n pop\n gas\n call\n iszero\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_58\n jumpi\n /* \"--CODEGEN--\":45:61 */\n returndatasize\n /* \"--CODEGEN--\":42:43 */\n 0x00\n /* \"--CODEGEN--\":39:40 */\n dup1\n /* \"--CODEGEN--\":24:62 */\n returndatacopy\n /* \"--CODEGEN--\":77:93 */\n returndatasize\n /* \"--CODEGEN--\":74:75 */\n 0x00\n /* \"--CODEGEN--\":67:94 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_58:\n /* \"contracts/test_contracts/MockOracle.sol\":5407:5447 LinkToken.transfer(msg.sender, _payment) */\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n /* \"--CODEGEN--\":15:17 */\n 0x20\n /* \"--CODEGEN--\":10:13 */\n dup2\n /* \"--CODEGEN--\":7:18 */\n lt\n /* \"--CODEGEN--\":4:6 */\n iszero\n tag_59\n jumpi\n /* \"--CODEGEN--\":31:32 */\n 0x00\n /* \"--CODEGEN--\":28:29 */\n dup1\n /* \"--CODEGEN--\":21:33 */\n revert\n /* \"--CODEGEN--\":4:6 */\n tag_59:\n /* \"contracts/test_contracts/MockOracle.sol\":5407:5447 LinkToken.transfer(msg.sender, _payment) */\n dup2\n add\n swap1\n dup1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n /* \"contracts/test_contracts/MockOracle.sol\":5400:5448 assert(LinkToken.transfer(msg.sender, _payment)) */\n tag_60\n jumpi\n invalid\n tag_60:\n /* \"contracts/test_contracts/MockOracle.sol\":4956:5454 function cancelOracleRequest(\r... */\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":750:1413 function onTokenTransfer(... */\n tag_30:\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1598:1617 getChainlinkToken() */\n tag_62\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1598:1615 getChainlinkToken */\n tag_10\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1598:1617 getChainlinkToken() */\n jump\t// in\n tag_62:\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1584:1617 msg.sender == getChainlinkToken() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1584:1594 msg.sender */\n caller\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1584:1617 msg.sender == getChainlinkToken() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1576:1641 require(msg.sender == getChainlinkToken(), \"Must use LINK token\") */\n tag_63\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n dup1\n dup1\n 0x20\n add\n dup3\n dup2\n sub\n dup3\n mstore\n 0x13\n dup2\n mstore\n 0x20\n add\n dup1\n 0x4d75737420757365204c494e4b20746f6b656e00000000000000000000000000\n dup2\n mstore\n pop\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_63:\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":892:897 _data */\n dup1\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":260:261 2 */\n 0x02\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":334:336 32 */\n 0x20\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":334:361 32 * EXPECTED_REQUEST_WORDS */\n mul\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":205:206 4 */\n 0x04\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":315:362 SELECTOR_LENGTH + (32 * EXPECTED_REQUEST_WORDS) */\n add\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":2310:2315 _data */\n dup2\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":2310:2322 _data.length */\n mload\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":2310:2348 _data.length >= MINIMUM_REQUEST_LENGTH */\n lt\n iszero\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":2302:2375 require(_data.length >= MINIMUM_REQUEST_LENGTH, \"Invalid request length\") */\n tag_65\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n dup1\n dup1\n 0x20\n add\n dup3\n dup2\n sub\n dup3\n mstore\n 0x16\n dup2\n mstore\n 0x20\n add\n dup1\n 0x496e76616c69642072657175657374206c656e67746800000000000000000000\n dup2\n mstore\n pop\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_65:\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":929:934 _data */\n dup2\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1874:1893 bytes4 funcSelector */\n 0x00\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":2006:2008 32 */\n 0x20\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1999:2004 _data */\n dup3\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1995:2009 add(_data, 32) */\n add\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1989:2010 mload(add(_data, 32)) */\n mload\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1973:2010 funcSelector := mload(add(_data, 32)) */\n swap1\n pop\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":148:158 0x40429946 */\n 0x40429946\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":2045:2068 ORACLE_REQUEST_SELECTOR */\n 0xe0\n shl\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":2029:2068 funcSelector == ORACLE_REQUEST_SELECTOR */\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":2029:2041 funcSelector */\n dup2\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":2029:2068 funcSelector == ORACLE_REQUEST_SELECTOR */\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n eq\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":2021:2103 require(funcSelector == ORACLE_REQUEST_SELECTOR, \"Must use whitelisted functions\") */\n tag_67\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n dup1\n dup1\n 0x20\n add\n dup3\n dup2\n sub\n dup3\n mstore\n 0x1e\n dup2\n mstore\n 0x20\n add\n dup1\n 0x4d757374207573652077686974656c69737465642066756e6374696f6e730000\n dup2\n mstore\n pop\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_67:\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1041:1048 _sender */\n dup6\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1036:1038 36 */\n 0x24\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1029:1034 _data */\n dup6\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1025:1039 add(_data, 36) */\n add\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1018:1049 mstore(add(_data, 36), _sender) */\n mstore\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1171:1178 _amount */\n dup5\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1166:1168 68 */\n 0x44\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1159:1164 _data */\n dup6\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1155:1169 add(_data, 68) */\n add\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1148:1179 mstore(add(_data, 68), _amount) */\n mstore\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1284:1296 bool success */\n 0x00\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1310:1314 this */\n address\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1302:1328 address(this).delegatecall */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1329:1334 _data */\n dup6\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1302:1335 address(this).delegatecall(_data) */\n mload(0x40)\n dup1\n dup3\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n dup1\n dup4\n dup4\n /* \"--CODEGEN--\":36:189 */\n tag_69:\n /* \"--CODEGEN--\":66:68 */\n 0x20\n /* \"--CODEGEN--\":61:64 */\n dup4\n /* \"--CODEGEN--\":58:69 */\n lt\n /* \"--CODEGEN--\":36:189 */\n tag_71\n jumpi\n /* \"--CODEGEN--\":182:185 */\n dup1\n /* \"--CODEGEN--\":176:186 */\n mload\n /* \"--CODEGEN--\":171:174 */\n dup3\n /* \"--CODEGEN--\":164:187 */\n mstore\n /* \"--CODEGEN--\":98:100 */\n 0x20\n /* \"--CODEGEN--\":93:96 */\n dup3\n /* \"--CODEGEN--\":89:101 */\n add\n /* \"--CODEGEN--\":82:101 */\n swap2\n pop\n /* \"--CODEGEN--\":123:125 */\n 0x20\n /* \"--CODEGEN--\":118:121 */\n dup2\n /* \"--CODEGEN--\":114:126 */\n add\n /* \"--CODEGEN--\":107:126 */\n swap1\n pop\n /* \"--CODEGEN--\":148:150 */\n 0x20\n /* \"--CODEGEN--\":143:146 */\n dup4\n /* \"--CODEGEN--\":139:151 */\n sub\n /* \"--CODEGEN--\":132:151 */\n swap3\n pop\n /* \"--CODEGEN--\":36:189 */\n jump(tag_69)\n tag_71:\n /* \"--CODEGEN--\":274:275 */\n 0x01\n /* \"--CODEGEN--\":267:270 */\n dup4\n /* \"--CODEGEN--\":263:265 */\n 0x20\n /* \"--CODEGEN--\":259:271 */\n sub\n /* \"--CODEGEN--\":254:257 */\n 0x0100\n /* \"--CODEGEN--\":250:272 */\n exp\n /* \"--CODEGEN--\":246:276 */\n sub\n /* \"--CODEGEN--\":315:319 */\n dup1\n /* \"--CODEGEN--\":311:320 */\n not\n /* \"--CODEGEN--\":305:308 */\n dup3\n /* \"--CODEGEN--\":299:309 */\n mload\n /* \"--CODEGEN--\":295:321 */\n and\n /* \"--CODEGEN--\":356:360 */\n dup2\n /* \"--CODEGEN--\":350:353 */\n dup5\n /* \"--CODEGEN--\":344:354 */\n mload\n /* \"--CODEGEN--\":340:361 */\n and\n /* \"--CODEGEN--\":389:396 */\n dup1\n /* \"--CODEGEN--\":380:387 */\n dup3\n /* \"--CODEGEN--\":377:397 */\n or\n /* \"--CODEGEN--\":372:375 */\n dup6\n /* \"--CODEGEN--\":365:398 */\n mstore\n /* \"--CODEGEN--\":3:402 */\n pop\n pop\n pop\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1302:1335 address(this).delegatecall(_data) */\n pop\n pop\n pop\n swap1\n pop\n add\n swap2\n pop\n pop\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n gas\n delegatecall\n swap2\n pop\n pop\n returndatasize\n /* \"--CODEGEN--\":12:13 */\n dup1\n /* \"--CODEGEN--\":19:20 */\n 0x00\n /* \"--CODEGEN--\":14:41 */\n dup2\n eq\n tag_74\n jumpi\n /* \"--CODEGEN--\":67:71 */\n 0x40\n /* \"--CODEGEN--\":61:72 */\n mload\n /* \"--CODEGEN--\":56:72 */\n swap2\n pop\n /* \"--CODEGEN--\":134:138 */\n 0x1f\n /* \"--CODEGEN--\":130:139 */\n not\n /* \"--CODEGEN--\":123:127 */\n 0x3f\n /* \"--CODEGEN--\":105:121 */\n returndatasize\n /* \"--CODEGEN--\":101:128 */\n add\n /* \"--CODEGEN--\":97:140 */\n and\n /* \"--CODEGEN--\":94:95 */\n dup3\n /* \"--CODEGEN--\":90:141 */\n add\n /* \"--CODEGEN--\":84:88 */\n 0x40\n /* \"--CODEGEN--\":77:142 */\n mstore\n /* \"--CODEGEN--\":157:173 */\n returndatasize\n /* \"--CODEGEN--\":154:155 */\n dup3\n /* \"--CODEGEN--\":147:174 */\n mstore\n /* \"--CODEGEN--\":211:227 */\n returndatasize\n /* \"--CODEGEN--\":208:209 */\n 0x00\n /* \"--CODEGEN--\":201:205 */\n 0x20\n /* \"--CODEGEN--\":198:199 */\n dup5\n /* \"--CODEGEN--\":194:206 */\n add\n /* \"--CODEGEN--\":179:228 */\n returndatacopy\n /* \"--CODEGEN--\":5:233 */\n jump(tag_73)\n /* \"--CODEGEN--\":14:41 */\n tag_74:\n /* \"--CODEGEN--\":32:36 */\n 0x60\n /* \"--CODEGEN--\":27:36 */\n swap2\n pop\n /* \"--CODEGEN--\":5:233 */\n tag_73:\n pop\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1283:1335 (bool success, ) = address(this).delegatecall(_data) */\n pop\n swap1\n pop\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1372:1379 success */\n dup1\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1364:1408 require(success, \"Unable to create request\") */\n tag_75\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n dup1\n dup1\n 0x20\n add\n dup3\n dup2\n sub\n dup3\n mstore\n 0x18\n dup2\n mstore\n 0x20\n add\n dup1\n 0x556e61626c6520746f2063726561746520726571756573740000000000000000\n dup2\n mstore\n pop\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_75:\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":2109:2110 _ */\n pop\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":2381:2382 _ */\n pop\n pop\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":1647:1648 _ */\n pop\n /* \"@chainlink/contracts/src/v0.6/LinkTokenReceiver.sol\":750:1413 function onTokenTransfer(... */\n pop\n pop\n pop\n jump\t// out\n /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":863:1025 function add(uint256 a, uint256 b) internal pure returns (uint256) {... */\n tag_52:\n /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":921:928 uint256 */\n 0x00\n /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":936:945 uint256 c */\n dup1\n /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":952:953 b */\n dup3\n /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":948:949 a */\n dup5\n /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":948:953 a + b */\n add\n /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":936:953 uint256 c = a + b */\n swap1\n pop\n /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":972:973 a */\n dup4\n /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":967:968 c */\n dup2\n /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":967:973 c >= a */\n lt\n iszero\n /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":959:1005 require(c >= a, \"SafeMath: addition overflow\") */\n tag_77\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n dup1\n dup1\n 0x20\n add\n dup3\n dup2\n sub\n dup3\n mstore\n 0x1b\n dup2\n mstore\n 0x20\n add\n dup1\n 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000\n dup2\n mstore\n pop\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_77:\n /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":1019:1020 c */\n dup1\n /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":1012:1020 return c */\n swap2\n pop\n pop\n /* \"@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol\":863:1025 function add(uint256 a, uint256 b) internal pure returns (uint256) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"contracts/test_contracts/MockOracle.sol\":493:6363 contract MockOracle is ChainlinkRequestInterface, LinkTokenReceiver {\r... */\n tag_36:\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n and(0xffffffffffffffffffffffffffffffffffffffff, 0x00)\n dup2\n mstore\n 0x20\n add\n and(not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff), 0x00)\n dup2\n mstore\n pop\n swap1\n jump\t// out\n\n auxdata: 0xa2646970667358221220dd87fc10b55ea590fc91ca089bfcdcc4bbf4c4ad058be582d19c78c7cec1415b64736f6c63430006060033\n}\n",
"bytecode": {
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506040516113ba3803806113ba8339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611326806100946000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063165d35e1146100675780631f8f238c146100b157806340429946146101015780634b6022821461020c5780636ee4d5531461022a578063a4c0ed3614610295575b600080fd5b61006f61037a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100e7600480360360408110156100c757600080fd5b8101908080359060200190929190803590602001909291905050506103a3565b604051808215151515815260200191505060405180910390f35b61020a600480360361010081101561011857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156101c657600080fd5b8201836020820111156101d857600080fd5b803590602001918460018302840111640100000000831117156101fa57600080fd5b9091929391929390505050610761565b005b610214610c2b565b6040518082815260200191505060405180910390f35b6102936004803603608081101561024057600080fd5b81019080803590602001909291908035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190929190505050610c31565b005b610378600480360360608110156102ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156102f257600080fd5b82018360208201111561030457600080fd5b8035906020019184600183028401116401000000008311171561032657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ef0565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600082600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4d757374206861766520612076616c696420726571756573744964000000000081525060200191505060405180910390fd5b6104876112a1565b600160008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050905060016000868152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549063ffffffff0219169055505062061a805a101561061f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4d7573742070726f7669646520636f6e73756d657220656e6f7567682067617381525060200191505060405180910390fd5b6000816000015173ffffffffffffffffffffffffffffffffffffffff16826020015187876040516024018083815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106106ea57805182526020820191506020810190506020830392506106c7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461074c576040519150601f19603f3d011682016040523d82523d6000602084013e610751565b606091505b5050905080935050505092915050565b61076961037a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d75737420757365204c494e4b20746f6b656e0000000000000000000000000081525060200191505060405180910390fd5b856000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f742063616c6c6261636b20746f204c494e4b00000000000000000081525060200191505060405180910390fd5b60008a86604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140182815260200192505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d75737420757365206120756e6971756520494400000000000000000000000081525060200191505060405180910390fd5b6000610a1e61012c4261121990919063ffffffff16565b905060405180604001604052808a73ffffffffffffffffffffffffffffffffffffffff168152602001897bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152506001600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908360e01c0217905550905050897fd8d7ecc4800d25fa53ce0372f13a416d98907a7ef3d8d3bdd79cf4fe75529c658d848e8d8d878d8d8d604051808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509a505050505050505050505060405180910390a2505050505050505050505050565b61012c81565b600073ffffffffffffffffffffffffffffffffffffffff166001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d75737420757365206120756e6971756520494400000000000000000000000081525060200191505060405180910390fd5b42811115610d80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f52657175657374206973206e6f7420657870697265640000000000000000000081525060200191505060405180910390fd5b60016000858152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549063ffffffff02191690555050837fa7842b9ec549398102c0d91b1b9919b2f20558aefdadf57528a95c6cd3292e9360405160405180910390a26000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050506040513d6020811015610ed357600080fd5b8101908080519060200190929190505050610eea57fe5b50505050565b610ef861037a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d75737420757365204c494e4b20746f6b656e0000000000000000000000000081525060200191505060405180910390fd5b80600260200260040181511015611017576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496e76616c69642072657175657374206c656e6774680000000000000000000081525060200191505060405180910390fd5b81600060208201519050634042994660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146110db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4d757374207573652077686974656c69737465642066756e6374696f6e73000081525060200191505060405180910390fd5b85602485015284604485015260003073ffffffffffffffffffffffffffffffffffffffff16856040518082805190602001908083835b602083106111345780518252602082019150602081019050602083039250611111565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611194576040519150601f19603f3d011682016040523d82523d6000602084013e611199565b606091505b5050905080611210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f556e61626c6520746f206372656174652072657175657374000000000000000081525060200191505060405180910390fd5b50505050505050565b600080828401905083811015611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152509056fea2646970667358221220dd87fc10b55ea590fc91ca089bfcdcc4bbf4c4ad058be582d19c78c7cec1415b64736f6c63430006060033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x13BA CODESIZE SUB DUP1 PUSH2 0x13BA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x1326 DUP1 PUSH2 0x94 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x165D35E1 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x1F8F238C EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0x40429946 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x4B602282 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x6EE4D553 EQ PUSH2 0x22A JUMPI DUP1 PUSH4 0xA4C0ED36 EQ PUSH2 0x295 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x37A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x761 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x214 PUSH2 0xC2B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xC31 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x304 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0xEF0 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x47F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D757374206861766520612076616C6964207265717565737449640000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x487 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE POP POP SWAP1 POP PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH3 0x61A80 GAS LT ISZERO PUSH2 0x61F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D7573742070726F7669646520636F6E73756D657220656E6F75676820676173 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x6EA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x6C7 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x74C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x751 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x769 PUSH2 0x37A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x809 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365204C494E4B20746F6B656E00000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x8CD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E6E6F742063616C6C6261636B20746F204C494E4B000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA07 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365206120756E69717565204944000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA1E PUSH2 0x12C TIMESTAMP PUSH2 0x1219 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE POP PUSH1 0x1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP SWAP1 POP POP DUP10 PUSH32 0xD8D7ECC4800D25FA53CE0372F13A416D98907A7EF3D8D3BDD79CF4FE75529C65 DUP14 DUP5 DUP15 DUP14 DUP14 DUP8 DUP14 DUP14 DUP14 PUSH1 0x40 MLOAD DUP1 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x12C DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xD0A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365206120756E69717565204944000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP2 GT ISZERO PUSH2 0xD80 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x52657175657374206973206E6F74206578706972656400000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP4 PUSH32 0xA7842B9EC549398102C0D91B1B9919B2F20558AEFDADF57528A95C6CD3292E93 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEBD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xED3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xEEA JUMPI INVALID JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xEF8 PUSH2 0x37A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xF98 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365204C494E4B20746F6B656E00000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x20 MUL PUSH1 0x4 ADD DUP2 MLOAD LT ISZERO PUSH2 0x1017 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x496E76616C69642072657175657374206C656E67746800000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x0 PUSH1 0x20 DUP3 ADD MLOAD SWAP1 POP PUSH4 0x40429946 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ PUSH2 0x10DB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D757374207573652077686974656C69737465642066756E6374696F6E730000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x24 DUP6 ADD MSTORE DUP5 PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1134 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x1111 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1194 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1199 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1210 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x556E61626C6520746F2063726561746520726571756573740000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x1297 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDD DUP8 0xFC LT 0xB5 0x5E 0xA5 SWAP1 0xFC SWAP2 0xCA ADDMOD SWAP12 0xFC 0xDC 0xC4 0xBB DELEGATECALL 0xC4 0xAD SDIV DUP12 0xE5 DUP3 0xD1 SWAP13 PUSH25 0xC7CEC1415B64736F6C63430006060033000000000000000000 ",
"sourceMap": "493:5870:4:-:0;;;1440:141;5:9:-1;2:2;;;27:1;24;17:12;2:2;1440:141:4;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1440:141:4;;;;;;;;;;;;;;;;1520:5;1489:9;;:37;;;;;;;;;;;;;;;;;;1440:141;493:5870;;;;;;"
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100625760003560e01c8063165d35e1146100675780631f8f238c146100b157806340429946146101015780634b6022821461020c5780636ee4d5531461022a578063a4c0ed3614610295575b600080fd5b61006f61037a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100e7600480360360408110156100c757600080fd5b8101908080359060200190929190803590602001909291905050506103a3565b604051808215151515815260200191505060405180910390f35b61020a600480360361010081101561011857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156101c657600080fd5b8201836020820111156101d857600080fd5b803590602001918460018302840111640100000000831117156101fa57600080fd5b9091929391929390505050610761565b005b610214610c2b565b6040518082815260200191505060405180910390f35b6102936004803603608081101561024057600080fd5b81019080803590602001909291908035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190929190505050610c31565b005b610378600480360360608110156102ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156102f257600080fd5b82018360208201111561030457600080fd5b8035906020019184600183028401116401000000008311171561032657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ef0565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600082600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4d757374206861766520612076616c696420726571756573744964000000000081525060200191505060405180910390fd5b6104876112a1565b600160008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050905060016000868152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549063ffffffff0219169055505062061a805a101561061f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4d7573742070726f7669646520636f6e73756d657220656e6f7567682067617381525060200191505060405180910390fd5b6000816000015173ffffffffffffffffffffffffffffffffffffffff16826020015187876040516024018083815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106106ea57805182526020820191506020810190506020830392506106c7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461074c576040519150601f19603f3d011682016040523d82523d6000602084013e610751565b606091505b5050905080935050505092915050565b61076961037a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d75737420757365204c494e4b20746f6b656e0000000000000000000000000081525060200191505060405180910390fd5b856000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f742063616c6c6261636b20746f204c494e4b00000000000000000081525060200191505060405180910390fd5b60008a86604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140182815260200192505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d75737420757365206120756e6971756520494400000000000000000000000081525060200191505060405180910390fd5b6000610a1e61012c4261121990919063ffffffff16565b905060405180604001604052808a73ffffffffffffffffffffffffffffffffffffffff168152602001897bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152506001600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908360e01c0217905550905050897fd8d7ecc4800d25fa53ce0372f13a416d98907a7ef3d8d3bdd79cf4fe75529c658d848e8d8d878d8d8d604051808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509a505050505050505050505060405180910390a2505050505050505050505050565b61012c81565b600073ffffffffffffffffffffffffffffffffffffffff166001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d75737420757365206120756e6971756520494400000000000000000000000081525060200191505060405180910390fd5b42811115610d80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f52657175657374206973206e6f7420657870697265640000000000000000000081525060200191505060405180910390fd5b60016000858152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549063ffffffff02191690555050837fa7842b9ec549398102c0d91b1b9919b2f20558aefdadf57528a95c6cd3292e9360405160405180910390a26000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050506040513d6020811015610ed357600080fd5b8101908080519060200190929190505050610eea57fe5b50505050565b610ef861037a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d75737420757365204c494e4b20746f6b656e0000000000000000000000000081525060200191505060405180910390fd5b80600260200260040181511015611017576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496e76616c69642072657175657374206c656e6774680000000000000000000081525060200191505060405180910390fd5b81600060208201519050634042994660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146110db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4d757374207573652077686974656c69737465642066756e6374696f6e73000081525060200191505060405180910390fd5b85602485015284604485015260003073ffffffffffffffffffffffffffffffffffffffff16856040518082805190602001908083835b602083106111345780518252602082019150602081019050602083039250611111565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611194576040519150601f19603f3d011682016040523d82523d6000602084013e611199565b606091505b5050905080611210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f556e61626c6520746f206372656174652072657175657374000000000000000081525060200191505060405180910390fd5b50505050505050565b600080828401905083811015611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152509056fea2646970667358221220dd87fc10b55ea590fc91ca089bfcdcc4bbf4c4ad058be582d19c78c7cec1415b64736f6c63430006060033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x165D35E1 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x1F8F238C EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0x40429946 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x4B602282 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x6EE4D553 EQ PUSH2 0x22A JUMPI DUP1 PUSH4 0xA4C0ED36 EQ PUSH2 0x295 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x37A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x761 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x214 PUSH2 0xC2B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xC31 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x378 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x304 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0xEF0 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x47F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D757374206861766520612076616C6964207265717565737449640000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x487 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE POP POP SWAP1 POP PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH3 0x61A80 GAS LT ISZERO PUSH2 0x61F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D7573742070726F7669646520636F6E73756D657220656E6F75676820676173 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x6EA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x6C7 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x74C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x751 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x769 PUSH2 0x37A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x809 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365204C494E4B20746F6B656E00000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x8CD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E6E6F742063616C6C6261636B20746F204C494E4B000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP11 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA07 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365206120756E69717565204944000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA1E PUSH2 0x12C TIMESTAMP PUSH2 0x1219 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE POP PUSH1 0x1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP SWAP1 POP POP DUP10 PUSH32 0xD8D7ECC4800D25FA53CE0372F13A416D98907A7EF3D8D3BDD79CF4FE75529C65 DUP14 DUP5 DUP15 DUP14 DUP14 DUP8 DUP14 DUP14 DUP14 PUSH1 0x40 MLOAD DUP1 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP11 POP POP POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x12C DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xD0A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365206120756E69717565204944000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP2 GT ISZERO PUSH2 0xD80 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x52657175657374206973206E6F74206578706972656400000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP4 PUSH32 0xA7842B9EC549398102C0D91B1B9919B2F20558AEFDADF57528A95C6CD3292E93 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEBD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xED3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xEEA JUMPI INVALID JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xEF8 PUSH2 0x37A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xF98 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D75737420757365204C494E4B20746F6B656E00000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x20 MUL PUSH1 0x4 ADD DUP2 MLOAD LT ISZERO PUSH2 0x1017 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x496E76616C69642072657175657374206C656E67746800000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x0 PUSH1 0x20 DUP3 ADD MLOAD SWAP1 POP PUSH4 0x40429946 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ PUSH2 0x10DB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D757374207573652077686974656C69737465642066756E6374696F6E730000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x24 DUP6 ADD MSTORE DUP5 PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1134 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x1111 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1194 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1199 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1210 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x556E61626C6520746F2063726561746520726571756573740000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x1297 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDD DUP8 0xFC LT 0xB5 0x5E 0xA5 SWAP1 0xFC SWAP2 0xCA ADDMOD SWAP12 0xFC 0xDC 0xC4 0xBB DELEGATECALL 0xC4 0xAD SDIV DUP12 0xE5 DUP3 0xD1 SWAP13 PUSH25 0xC7CEC1415B64736F6C63430006060033000000000000000000 ",
"sourceMap": "493:5870:4:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;493:5870:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;5664:129:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3670:777;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3670:777:4;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2257:897;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;2257:897:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;2257:897:4;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;2257:897:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2257:897:4;;;;;;;;;;;;:::i;:::-;;608:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4956:498;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;4956:498:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;750:663:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;750:663:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;750:663:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;750:663:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;750:663:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;750:663:0;;;;;;;;;;;;;;;:::i;:::-;;5664:129:4;5743:7;5777:9;;;;;;;;;;;5762:25;;5664:129;:::o;3670:777::-;3810:4;3784:10;6064:1;6016:50;;:11;:23;6028:10;6016:23;;;;;;;;;;;:36;;;;;;;;;;;;:50;;;;6008:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3826:18:::1;;:::i;:::-;3847:11;:23;3859:10;3847:23;;;;;;;;;;;3826:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;3884:11;:23;3896:10;3884:23;;;;;;;;;;;;3877:30:::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;714:6;3922:9;:39;;3914:84;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;4268:12;4286:3;:16;;;:21;;4331:3;:22;;;4355:10;4367:5;4308:65;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4308:65:4;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;4308:65:4;4286:88;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4286:88:4;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;4267:107:4;;;4434:7;4427:14;;;;3670:777:::0;;;;;:::o;2257:897::-;1598:19:0;:17;:19::i;:::-;1584:33;;:10;:33;;;1576:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2561:16:4::1;6306:9;::::0;::::1;;;;;;;;;6291:25;;:3;:25;;;;6283:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;2589:17:::2;2636:7;2645:6;2619:33;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2619:33:4;;;2609:44;;;;;;2589:64;;2715:1;2668:49;;:11;:22;2680:9;2668:22;;;;;;;;;;;:35;;;;;;;;;;;;:49;;;2660:82;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;2800:18;2821:20;646:9;2821:3;:7;;:20;;;;:::i;:::-;2800:41;;2875:71;;;;;;;;2893:16;2875:71;;;;;;2920:19;2875:71;;;;;::::0;2850:11:::2;:22;2862:9;2850:22;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2982:7;2960:188;2998:7;3014:9;3032:8;3049:16;3074:19;3102:10;3121:12;3142:5;;2960:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2960:188:4;;;;;;;;;;;;;;;;;;;;;6351:1;;1647::0::1;2257:897:4::0;;;;;;;;;:::o;608:47::-;646:9;608:47;:::o;4956:498::-;5171:1;5123:50;;:11;:23;5135:10;5123:23;;;;;;;;;;;:36;;;;;;;;;;;;:50;;;;5115:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5279:3;5264:11;:18;;5256:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5325:11;:23;5337:10;5325:23;;;;;;;;;;;;5318:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5380:10;5360:31;;;;;;;;;;5407:9;;;;;;;;;;;:18;;;5426:10;5438:8;5407:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5407:40:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5407:40:4;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5407:40:4;;;;;;;;;;;;;;;;5400:48;;;;4956:498;;;;:::o;750:663:0:-;1598:19;:17;:19::i;:::-;1584:33;;:10;:33;;;1576:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;892:5:::1;260:1;334:2;:27;205:1;315:47;2310:5;:12;:38;;2302:73;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;929:5:::2;1874:19;2006:2;1999:5;1995:14;1989:21;1973:37;;148:10;2045:23;;2029:39;;;:12;:39;;;;2021:82;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;1041:7:::3;1036:2;1029:5;1025:14;1018:31;1171:7;1166:2;1159:5;1155:14;1148:31;1284:12;1310:4;1302:26;;1329:5;1302:33;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1302:33:0;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1283:52:0;;;1372:7;1364:44;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;2109:1;2381::::2;;1647::::1;750:663:::0;;;:::o;863:162:3:-;921:7;936:9;952:1;948;:5;936:17;;972:1;967;:6;;959:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1019:1;1012:8;;;863:162;;;;:::o;493:5870:4:-;;;;;;;;;;;;;;;;;;;;;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "980400",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"EXPIRY_TIME()": "249",
"cancelOracleRequest(bytes32,uint256,bytes4,uint256)": "infinite",
"fulfillOracleRequest(bytes32,bytes32)": "infinite",
"getChainlinkToken()": "1039",
"onTokenTransfer(address,uint256,bytes)": "infinite",
"oracleRequest(address,uint256,bytes32,address,bytes4,uint256,uint256,bytes)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 493,
"end": 6363,
"name": "PUSH",
"source": 4,
"value": "80"
},
{
"begin": 493,
"end": 6363,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 493,
"end": 6363,
"name": "MSTORE",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "CALLVALUE",
"source": 4
},
{
"begin": 5,
"end": 14,
"name": "DUP1",
"source": -1
},
{
"begin": 2,
"end": 4,
"name": "ISZERO",
"source": -1
},
{
"begin": 2,
"end": 4,
"name": "PUSH [tag]",
"source": -1,
"value": "1"
},
{
"begin": 2,
"end": 4,
"name": "JUMPI",
"source": -1
},
{
"begin": 27,
"end": 28,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 24,
"end": 25,
"name": "DUP1",
"source": -1
},
{
"begin": 17,
"end": 29,
"name": "REVERT",
"source": -1
},
{
"begin": 2,
"end": 4,
"name": "tag",
"source": -1,
"value": "1"
},
{
"begin": 2,
"end": 4,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 1440,
"end": 1581,
"name": "POP",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 1440,
"end": 1581,
"name": "MLOAD",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "PUSHSIZE",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "CODESIZE",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "SUB",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "DUP1",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "PUSHSIZE",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "DUP4",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "CODECOPY",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "DUP2",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "DUP2",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "ADD",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 1440,
"end": 1581,
"name": "MSTORE",
"source": 4
},
{
"begin": 15,
"end": 17,
"name": "PUSH",
"source": -1,
"value": "20"
},
{
"begin": 10,
"end": 13,
"name": "DUP2",
"source": -1
},
{
"begin": 7,
"end": 18,
"name": "LT",
"source": -1
},
{
"begin": 4,
"end": 6,
"name": "ISZERO",
"source": -1
},
{
"begin": 4,
"end": 6,
"name": "PUSH [tag]",
"source": -1,
"value": "2"
},
{
"begin": 4,
"end": 6,
"name": "JUMPI",
"source": -1
},
{
"begin": 31,
"end": 32,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 28,
"end": 29,
"name": "DUP1",
"source": -1
},
{
"begin": 21,
"end": 33,
"name": "REVERT",
"source": -1
},
{
"begin": 4,
"end": 6,
"name": "tag",
"source": -1,
"value": "2"
},
{
"begin": 4,
"end": 6,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 1440,
"end": 1581,
"name": "DUP2",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "ADD",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "SWAP1",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "DUP1",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "DUP1",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "MLOAD",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "SWAP1",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 1440,
"end": 1581,
"name": "ADD",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "SWAP1",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "SWAP3",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "SWAP2",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "SWAP1",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "POP",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "POP",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "POP",
"source": 4
},
{
"begin": 1520,
"end": 1525,
"name": "DUP1",
"source": 4
},
{
"begin": 1489,
"end": 1498,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 1489,
"end": 1498,
"name": "DUP1",
"source": 4
},
{
"begin": 1489,
"end": 1526,
"name": "PUSH",
"source": 4,
"value": "100"
},
{
"begin": 1489,
"end": 1526,
"name": "EXP",
"source": 4
},
{
"begin": 1489,
"end": 1526,
"name": "DUP2",
"source": 4
},
{
"begin": 1489,
"end": 1526,
"name": "SLOAD",
"source": 4
},
{
"begin": 1489,
"end": 1526,
"name": "DUP2",
"source": 4
},
{
"begin": 1489,
"end": 1526,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1489,
"end": 1526,
"name": "MUL",
"source": 4
},
{
"begin": 1489,
"end": 1526,
"name": "NOT",
"source": 4
},
{
"begin": 1489,
"end": 1526,
"name": "AND",
"source": 4
},
{
"begin": 1489,
"end": 1526,
"name": "SWAP1",
"source": 4
},
{
"begin": 1489,
"end": 1526,
"name": "DUP4",
"source": 4
},
{
"begin": 1489,
"end": 1526,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1489,
"end": 1526,
"name": "AND",
"source": 4
},
{
"begin": 1489,
"end": 1526,
"name": "MUL",
"source": 4
},
{
"begin": 1489,
"end": 1526,
"name": "OR",
"source": 4
},
{
"begin": 1489,
"end": 1526,
"name": "SWAP1",
"source": 4
},
{
"begin": 1489,
"end": 1526,
"name": "SSTORE",
"source": 4
},
{
"begin": 1489,
"end": 1526,
"name": "POP",
"source": 4
},
{
"begin": 1440,
"end": 1581,
"name": "POP",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH #[$]",
"source": 4,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 493,
"end": 6363,
"name": "DUP1",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH [$]",
"source": 4,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 493,
"end": 6363,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 493,
"end": 6363,
"name": "CODECOPY",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 493,
"end": 6363,
"name": "RETURN",
"source": 4
}
],
".data": {
"0": {
".auxdata": "a2646970667358221220dd87fc10b55ea590fc91ca089bfcdcc4bbf4c4ad058be582d19c78c7cec1415b64736f6c63430006060033",
".code": [
{
"begin": 493,
"end": 6363,
"name": "PUSH",
"source": 4,
"value": "80"
},
{
"begin": 493,
"end": 6363,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 493,
"end": 6363,
"name": "MSTORE",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "CALLVALUE",
"source": 4
},
{
"begin": 5,
"end": 14,
"name": "DUP1",
"source": -1
},
{
"begin": 2,
"end": 4,
"name": "ISZERO",
"source": -1
},
{
"begin": 2,
"end": 4,
"name": "PUSH [tag]",
"source": -1,
"value": "1"
},
{
"begin": 2,
"end": 4,
"name": "JUMPI",
"source": -1
},
{
"begin": 27,
"end": 28,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 24,
"end": 25,
"name": "DUP1",
"source": -1
},
{
"begin": 17,
"end": 29,
"name": "REVERT",
"source": -1
},
{
"begin": 2,
"end": 4,
"name": "tag",
"source": -1,
"value": "1"
},
{
"begin": 2,
"end": 4,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 493,
"end": 6363,
"name": "POP",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH",
"source": 4,
"value": "4"
},
{
"begin": 493,
"end": 6363,
"name": "CALLDATASIZE",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "LT",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH [tag]",
"source": 4,
"value": "2"
},
{
"begin": 493,
"end": 6363,
"name": "JUMPI",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 493,
"end": 6363,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH",
"source": 4,
"value": "E0"
},
{
"begin": 493,
"end": 6363,
"name": "SHR",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "DUP1",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH",
"source": 4,
"value": "165D35E1"
},
{
"begin": 493,
"end": 6363,
"name": "EQ",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH [tag]",
"source": 4,
"value": "3"
},
{
"begin": 493,
"end": 6363,
"name": "JUMPI",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "DUP1",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH",
"source": 4,
"value": "1F8F238C"
},
{
"begin": 493,
"end": 6363,
"name": "EQ",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH [tag]",
"source": 4,
"value": "4"
},
{
"begin": 493,
"end": 6363,
"name": "JUMPI",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "DUP1",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH",
"source": 4,
"value": "40429946"
},
{
"begin": 493,
"end": 6363,
"name": "EQ",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH [tag]",
"source": 4,
"value": "5"
},
{
"begin": 493,
"end": 6363,
"name": "JUMPI",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "DUP1",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH",
"source": 4,
"value": "4B602282"
},
{
"begin": 493,
"end": 6363,
"name": "EQ",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH [tag]",
"source": 4,
"value": "6"
},
{
"begin": 493,
"end": 6363,
"name": "JUMPI",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "DUP1",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH",
"source": 4,
"value": "6EE4D553"
},
{
"begin": 493,
"end": 6363,
"name": "EQ",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH [tag]",
"source": 4,
"value": "7"
},
{
"begin": 493,
"end": 6363,
"name": "JUMPI",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "DUP1",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH",
"source": 4,
"value": "A4C0ED36"
},
{
"begin": 493,
"end": 6363,
"name": "EQ",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "PUSH [tag]",
"source": 4,
"value": "8"
},
{
"begin": 493,
"end": 6363,
"name": "JUMPI",
"source": 4
},
{
"begin": 493,
"end": 6363,
"name": "tag",
"source": 4,
"value": "2"
},
{
"begin": 493,
"end": 6363,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 12,
"end": 13,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 9,
"end": 10,
"name": "DUP1",
"source": -1
},
{
"begin": 2,
"end": 14,
"name": "REVERT",
"source": -1
},
{
"begin": 5664,
"end": 5793,
"name": "tag",
"source": 4,
"value": "3"
},
{
"begin": 5664,
"end": 5793,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "PUSH [tag]",
"source": 4,
"value": "9"
},
{
"begin": 5664,
"end": 5793,
"name": "PUSH [tag]",
"source": 4,
"value": "10"
},
{
"begin": 5664,
"end": 5793,
"name": "JUMP",
"source": 4,
"value": "[in]"
},
{
"begin": 5664,
"end": 5793,
"name": "tag",
"source": 4,
"value": "9"
},
{
"begin": 5664,
"end": 5793,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 5664,
"end": 5793,
"name": "MLOAD",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "DUP1",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "DUP3",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 5664,
"end": 5793,
"name": "AND",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 5664,
"end": 5793,
"name": "AND",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "DUP2",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "MSTORE",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 5664,
"end": 5793,
"name": "ADD",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "SWAP2",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "POP",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "POP",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 5664,
"end": 5793,
"name": "MLOAD",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "DUP1",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "SWAP2",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "SUB",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "SWAP1",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "RETURN",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "tag",
"source": 4,
"value": "4"
},
{
"begin": 3670,
"end": 4447,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "PUSH [tag]",
"source": 4,
"value": "11"
},
{
"begin": 3670,
"end": 4447,
"name": "PUSH",
"source": 4,
"value": "4"
},
{
"begin": 3670,
"end": 4447,
"name": "DUP1",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "CALLDATASIZE",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SUB",
"source": 4
},
{
"begin": 15,
"end": 17,
"name": "PUSH",
"source": -1,
"value": "40"
},
{
"begin": 10,
"end": 13,
"name": "DUP2",
"source": -1
},
{
"begin": 7,
"end": 18,
"name": "LT",
"source": -1
},
{
"begin": 4,
"end": 6,
"name": "ISZERO",
"source": -1
},
{
"begin": 4,
"end": 6,
"name": "PUSH [tag]",
"source": -1,
"value": "12"
},
{
"begin": 4,
"end": 6,
"name": "JUMPI",
"source": -1
},
{
"begin": 31,
"end": 32,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 28,
"end": 29,
"name": "DUP1",
"source": -1
},
{
"begin": 21,
"end": 33,
"name": "REVERT",
"source": -1
},
{
"begin": 4,
"end": 6,
"name": "tag",
"source": -1,
"value": "12"
},
{
"begin": 4,
"end": 6,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 3670,
"end": 4447,
"name": "DUP2",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "ADD",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP1",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "DUP1",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "DUP1",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP1",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 3670,
"end": 4447,
"name": "ADD",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP1",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP3",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP2",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP1",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "DUP1",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP1",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 3670,
"end": 4447,
"name": "ADD",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP1",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP3",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP2",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP1",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "POP",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "POP",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "POP",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "PUSH [tag]",
"source": 4,
"value": "13"
},
{
"begin": 3670,
"end": 4447,
"name": "JUMP",
"source": 4,
"value": "[in]"
},
{
"begin": 3670,
"end": 4447,
"name": "tag",
"source": 4,
"value": "11"
},
{
"begin": 3670,
"end": 4447,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 3670,
"end": 4447,
"name": "MLOAD",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "DUP1",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "DUP3",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "ISZERO",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "ISZERO",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "ISZERO",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "ISZERO",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "DUP2",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "MSTORE",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 3670,
"end": 4447,
"name": "ADD",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP2",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "POP",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "POP",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 3670,
"end": 4447,
"name": "MLOAD",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "DUP1",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP2",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SUB",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP1",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "RETURN",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "tag",
"source": 4,
"value": "5"
},
{
"begin": 2257,
"end": 3154,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "PUSH [tag]",
"source": 4,
"value": "14"
},
{
"begin": 2257,
"end": 3154,
"name": "PUSH",
"source": 4,
"value": "4"
},
{
"begin": 2257,
"end": 3154,
"name": "DUP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "CALLDATASIZE",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SUB",
"source": 4
},
{
"begin": 15,
"end": 18,
"name": "PUSH",
"source": -1,
"value": "100"
},
{
"begin": 10,
"end": 13,
"name": "DUP2",
"source": -1
},
{
"begin": 7,
"end": 19,
"name": "LT",
"source": -1
},
{
"begin": 4,
"end": 6,
"name": "ISZERO",
"source": -1
},
{
"begin": 4,
"end": 6,
"name": "PUSH [tag]",
"source": -1,
"value": "15"
},
{
"begin": 4,
"end": 6,
"name": "JUMPI",
"source": -1
},
{
"begin": 32,
"end": 33,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 29,
"end": 30,
"name": "DUP1",
"source": -1
},
{
"begin": 22,
"end": 34,
"name": "REVERT",
"source": -1
},
{
"begin": 4,
"end": 6,
"name": "tag",
"source": -1,
"value": "15"
},
{
"begin": 4,
"end": 6,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 2257,
"end": 3154,
"name": "DUP2",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "ADD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "DUP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "DUP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2257,
"end": 3154,
"name": "AND",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2257,
"end": 3154,
"name": "ADD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP3",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP2",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "DUP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2257,
"end": 3154,
"name": "ADD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP3",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP2",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "DUP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2257,
"end": 3154,
"name": "ADD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP3",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP2",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "DUP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2257,
"end": 3154,
"name": "AND",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2257,
"end": 3154,
"name": "ADD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP3",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP2",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "DUP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2257,
"end": 3154,
"name": "NOT",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "AND",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2257,
"end": 3154,
"name": "ADD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP3",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP2",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "DUP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2257,
"end": 3154,
"name": "ADD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP3",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP2",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "DUP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2257,
"end": 3154,
"name": "ADD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP3",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP2",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "DUP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2257,
"end": 3154,
"name": "ADD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 27,
"end": 38,
"name": "PUSH",
"source": -1,
"value": "100000000"
},
{
"begin": 14,
"end": 25,
"name": "DUP2",
"source": -1
},
{
"begin": 11,
"end": 39,
"name": "GT",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "ISZERO",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "PUSH [tag]",
"source": -1,
"value": "16"
},
{
"begin": 8,
"end": 10,
"name": "JUMPI",
"source": -1
},
{
"begin": 52,
"end": 53,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 49,
"end": 50,
"name": "DUP1",
"source": -1
},
{
"begin": 42,
"end": 54,
"name": "REVERT",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "tag",
"source": -1,
"value": "16"
},
{
"begin": 8,
"end": 10,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 2257,
"end": 3154,
"name": "DUP3",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "ADD",
"source": 4
},
{
"begin": 41,
"end": 50,
"name": "DUP4",
"source": -1
},
{
"begin": 34,
"end": 38,
"name": "PUSH",
"source": -1,
"value": "20"
},
{
"begin": 18,
"end": 32,
"name": "DUP3",
"source": -1
},
{
"begin": 14,
"end": 39,
"name": "ADD",
"source": -1
},
{
"begin": 11,
"end": 51,
"name": "GT",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "ISZERO",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "PUSH [tag]",
"source": -1,
"value": "17"
},
{
"begin": 8,
"end": 10,
"name": "JUMPI",
"source": -1
},
{
"begin": 64,
"end": 65,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 61,
"end": 62,
"name": "DUP1",
"source": -1
},
{
"begin": 54,
"end": 66,
"name": "REVERT",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "tag",
"source": -1,
"value": "17"
},
{
"begin": 8,
"end": 10,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 2257,
"end": 3154,
"name": "DUP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2257,
"end": 3154,
"name": "ADD",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP2",
"source": 4
},
{
"begin": 100,
"end": 109,
"name": "DUP5",
"source": -1
},
{
"begin": 95,
"end": 96,
"name": "PUSH",
"source": -1,
"value": "1"
},
{
"begin": 81,
"end": 93,
"name": "DUP4",
"source": -1
},
{
"begin": 77,
"end": 97,
"name": "MUL",
"source": -1
},
{
"begin": 67,
"end": 75,
"name": "DUP5",
"source": -1
},
{
"begin": 63,
"end": 98,
"name": "ADD",
"source": -1
},
{
"begin": 60,
"end": 110,
"name": "GT",
"source": -1
},
{
"begin": 39,
"end": 50,
"name": "PUSH",
"source": -1,
"value": "100000000"
},
{
"begin": 25,
"end": 37,
"name": "DUP4",
"source": -1
},
{
"begin": 22,
"end": 51,
"name": "GT",
"source": -1
},
{
"begin": 11,
"end": 118,
"name": "OR",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "ISZERO",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "PUSH [tag]",
"source": -1,
"value": "18"
},
{
"begin": 8,
"end": 10,
"name": "JUMPI",
"source": -1
},
{
"begin": 131,
"end": 132,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 128,
"end": 129,
"name": "DUP1",
"source": -1
},
{
"begin": 121,
"end": 133,
"name": "REVERT",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "tag",
"source": -1,
"value": "18"
},
{
"begin": 8,
"end": 10,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP2",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP3",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP4",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP2",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP3",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP4",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "SWAP1",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "POP",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "POP",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "POP",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "PUSH [tag]",
"source": 4,
"value": "19"
},
{
"begin": 2257,
"end": 3154,
"name": "JUMP",
"source": 4,
"value": "[in]"
},
{
"begin": 2257,
"end": 3154,
"name": "tag",
"source": 4,
"value": "14"
},
{
"begin": 2257,
"end": 3154,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "STOP",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "tag",
"source": 4,
"value": "6"
},
{
"begin": 608,
"end": 655,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "PUSH [tag]",
"source": 4,
"value": "20"
},
{
"begin": 608,
"end": 655,
"name": "PUSH [tag]",
"source": 4,
"value": "21"
},
{
"begin": 608,
"end": 655,
"name": "JUMP",
"source": 4,
"value": "[in]"
},
{
"begin": 608,
"end": 655,
"name": "tag",
"source": 4,
"value": "20"
},
{
"begin": 608,
"end": 655,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 608,
"end": 655,
"name": "MLOAD",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "DUP1",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "DUP3",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "DUP2",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "MSTORE",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 608,
"end": 655,
"name": "ADD",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "SWAP2",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "POP",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "POP",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 608,
"end": 655,
"name": "MLOAD",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "DUP1",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "SWAP2",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "SUB",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "SWAP1",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "RETURN",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "tag",
"source": 4,
"value": "7"
},
{
"begin": 4956,
"end": 5454,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "PUSH [tag]",
"source": 4,
"value": "22"
},
{
"begin": 4956,
"end": 5454,
"name": "PUSH",
"source": 4,
"value": "4"
},
{
"begin": 4956,
"end": 5454,
"name": "DUP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "CALLDATASIZE",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SUB",
"source": 4
},
{
"begin": 15,
"end": 18,
"name": "PUSH",
"source": -1,
"value": "80"
},
{
"begin": 10,
"end": 13,
"name": "DUP2",
"source": -1
},
{
"begin": 7,
"end": 19,
"name": "LT",
"source": -1
},
{
"begin": 4,
"end": 6,
"name": "ISZERO",
"source": -1
},
{
"begin": 4,
"end": 6,
"name": "PUSH [tag]",
"source": -1,
"value": "23"
},
{
"begin": 4,
"end": 6,
"name": "JUMPI",
"source": -1
},
{
"begin": 32,
"end": 33,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 29,
"end": 30,
"name": "DUP1",
"source": -1
},
{
"begin": 22,
"end": 34,
"name": "REVERT",
"source": -1
},
{
"begin": 4,
"end": 6,
"name": "tag",
"source": -1,
"value": "23"
},
{
"begin": 4,
"end": 6,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 4956,
"end": 5454,
"name": "DUP2",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "ADD",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "DUP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "DUP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 4956,
"end": 5454,
"name": "ADD",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP3",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP2",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "DUP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 4956,
"end": 5454,
"name": "ADD",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP3",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP2",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "DUP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 4956,
"end": 5454,
"name": "NOT",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "AND",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 4956,
"end": 5454,
"name": "ADD",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP3",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP2",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "DUP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "CALLDATALOAD",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 4956,
"end": 5454,
"name": "ADD",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP3",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP2",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "SWAP1",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "POP",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "POP",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "POP",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "PUSH [tag]",
"source": 4,
"value": "24"
},
{
"begin": 4956,
"end": 5454,
"name": "JUMP",
"source": 4,
"value": "[in]"
},
{
"begin": 4956,
"end": 5454,
"name": "tag",
"source": 4,
"value": "22"
},
{
"begin": 4956,
"end": 5454,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 4956,
"end": 5454,
"name": "STOP",
"source": 4
},
{
"begin": 750,
"end": 1413,
"name": "tag",
"source": 0,
"value": "8"
},
{
"begin": 750,
"end": 1413,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "PUSH [tag]",
"source": 0,
"value": "25"
},
{
"begin": 750,
"end": 1413,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 750,
"end": 1413,
"name": "DUP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SUB",
"source": 0
},
{
"begin": 15,
"end": 17,
"name": "PUSH",
"source": -1,
"value": "60"
},
{
"begin": 10,
"end": 13,
"name": "DUP2",
"source": -1
},
{
"begin": 7,
"end": 18,
"name": "LT",
"source": -1
},
{
"begin": 4,
"end": 6,
"name": "ISZERO",
"source": -1
},
{
"begin": 4,
"end": 6,
"name": "PUSH [tag]",
"source": -1,
"value": "26"
},
{
"begin": 4,
"end": 6,
"name": "JUMPI",
"source": -1
},
{
"begin": 31,
"end": 32,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 28,
"end": 29,
"name": "DUP1",
"source": -1
},
{
"begin": 21,
"end": 33,
"name": "REVERT",
"source": -1
},
{
"begin": 4,
"end": 6,
"name": "tag",
"source": -1,
"value": "26"
},
{
"begin": 4,
"end": 6,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 750,
"end": 1413,
"name": "DUP2",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "ADD",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "DUP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "DUP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "CALLDATALOAD",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "PUSH",
"source": 0,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 750,
"end": 1413,
"name": "AND",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 750,
"end": 1413,
"name": "ADD",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP3",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP2",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "DUP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "CALLDATALOAD",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 750,
"end": 1413,
"name": "ADD",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP3",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP2",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "DUP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "CALLDATALOAD",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 750,
"end": 1413,
"name": "ADD",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP1",
"source": 0
},
{
"begin": 27,
"end": 38,
"name": "PUSH",
"source": -1,
"value": "100000000"
},
{
"begin": 14,
"end": 25,
"name": "DUP2",
"source": -1
},
{
"begin": 11,
"end": 39,
"name": "GT",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "ISZERO",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "PUSH [tag]",
"source": -1,
"value": "27"
},
{
"begin": 8,
"end": 10,
"name": "JUMPI",
"source": -1
},
{
"begin": 52,
"end": 53,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 49,
"end": 50,
"name": "DUP1",
"source": -1
},
{
"begin": 42,
"end": 54,
"name": "REVERT",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "tag",
"source": -1,
"value": "27"
},
{
"begin": 8,
"end": 10,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 750,
"end": 1413,
"name": "DUP3",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "ADD",
"source": 0
},
{
"begin": 41,
"end": 50,
"name": "DUP4",
"source": -1
},
{
"begin": 34,
"end": 38,
"name": "PUSH",
"source": -1,
"value": "20"
},
{
"begin": 18,
"end": 32,
"name": "DUP3",
"source": -1
},
{
"begin": 14,
"end": 39,
"name": "ADD",
"source": -1
},
{
"begin": 11,
"end": 51,
"name": "GT",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "ISZERO",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "PUSH [tag]",
"source": -1,
"value": "28"
},
{
"begin": 8,
"end": 10,
"name": "JUMPI",
"source": -1
},
{
"begin": 64,
"end": 65,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 61,
"end": 62,
"name": "DUP1",
"source": -1
},
{
"begin": 54,
"end": 66,
"name": "REVERT",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "tag",
"source": -1,
"value": "28"
},
{
"begin": 8,
"end": 10,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 750,
"end": 1413,
"name": "DUP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "CALLDATALOAD",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 750,
"end": 1413,
"name": "ADD",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP2",
"source": 0
},
{
"begin": 100,
"end": 109,
"name": "DUP5",
"source": -1
},
{
"begin": 95,
"end": 96,
"name": "PUSH",
"source": -1,
"value": "1"
},
{
"begin": 81,
"end": 93,
"name": "DUP4",
"source": -1
},
{
"begin": 77,
"end": 97,
"name": "MUL",
"source": -1
},
{
"begin": 67,
"end": 75,
"name": "DUP5",
"source": -1
},
{
"begin": 63,
"end": 98,
"name": "ADD",
"source": -1
},
{
"begin": 60,
"end": 110,
"name": "GT",
"source": -1
},
{
"begin": 39,
"end": 50,
"name": "PUSH",
"source": -1,
"value": "100000000"
},
{
"begin": 25,
"end": 37,
"name": "DUP4",
"source": -1
},
{
"begin": 22,
"end": 51,
"name": "GT",
"source": -1
},
{
"begin": 11,
"end": 118,
"name": "OR",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "ISZERO",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "PUSH [tag]",
"source": -1,
"value": "29"
},
{
"begin": 8,
"end": 10,
"name": "JUMPI",
"source": -1
},
{
"begin": 131,
"end": 132,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 128,
"end": 129,
"name": "DUP1",
"source": -1
},
{
"begin": 121,
"end": 133,
"name": "REVERT",
"source": -1
},
{
"begin": 8,
"end": 10,
"name": "tag",
"source": -1,
"value": "29"
},
{
"begin": 8,
"end": 10,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 750,
"end": 1413,
"name": "SWAP2",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "DUP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "DUP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "PUSH",
"source": 0,
"value": "1F"
},
{
"begin": 750,
"end": 1413,
"name": "ADD",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 750,
"end": 1413,
"name": "DUP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP2",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "DIV",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "MUL",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 750,
"end": 1413,
"name": "ADD",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 750,
"end": 1413,
"name": "MLOAD",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "DUP2",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "ADD",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 750,
"end": 1413,
"name": "MSTORE",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "DUP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP4",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP3",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP2",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "DUP2",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "DUP2",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "MSTORE",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 750,
"end": 1413,
"name": "ADD",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "DUP4",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "DUP4",
"source": 0
},
{
"begin": 30,
"end": 33,
"name": "DUP1",
"source": -1
},
{
"begin": 22,
"end": 28,
"name": "DUP3",
"source": -1
},
{
"begin": 14,
"end": 20,
"name": "DUP5",
"source": -1
},
{
"begin": 1,
"end": 34,
"name": "CALLDATACOPY",
"source": -1
},
{
"begin": 99,
"end": 100,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 93,
"end": 96,
"name": "DUP2",
"source": -1
},
{
"begin": 85,
"end": 91,
"name": "DUP5",
"source": -1
},
{
"begin": 81,
"end": 97,
"name": "ADD",
"source": -1
},
{
"begin": 74,
"end": 101,
"name": "MSTORE",
"source": -1
},
{
"begin": 137,
"end": 141,
"name": "PUSH",
"source": -1,
"value": "1F"
},
{
"begin": 133,
"end": 142,
"name": "NOT",
"source": -1
},
{
"begin": 126,
"end": 130,
"name": "PUSH",
"source": -1,
"value": "1F"
},
{
"begin": 121,
"end": 124,
"name": "DUP3",
"source": -1
},
{
"begin": 117,
"end": 131,
"name": "ADD",
"source": -1
},
{
"begin": 113,
"end": 143,
"name": "AND",
"source": -1
},
{
"begin": 106,
"end": 143,
"name": "SWAP1",
"source": -1
},
{
"begin": 106,
"end": 143,
"name": "POP",
"source": -1
},
{
"begin": 169,
"end": 172,
"name": "DUP1",
"source": -1
},
{
"begin": 161,
"end": 167,
"name": "DUP4",
"source": -1
},
{
"begin": 157,
"end": 173,
"name": "ADD",
"source": -1
},
{
"begin": 147,
"end": 173,
"name": "SWAP3",
"source": -1
},
{
"begin": 147,
"end": 173,
"name": "POP",
"source": -1
},
{
"begin": 750,
"end": 1413,
"name": "POP",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "POP",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "POP",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "POP",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "POP",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "POP",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP2",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP3",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP2",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP3",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "SWAP1",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "POP",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "POP",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "POP",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "PUSH [tag]",
"source": 0,
"value": "30"
},
{
"begin": 750,
"end": 1413,
"name": "JUMP",
"source": 0,
"value": "[in]"
},
{
"begin": 750,
"end": 1413,
"name": "tag",
"source": 0,
"value": "25"
},
{
"begin": 750,
"end": 1413,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 750,
"end": 1413,
"name": "STOP",
"source": 0
},
{
"begin": 5664,
"end": 5793,
"name": "tag",
"source": 4,
"value": "10"
},
{
"begin": 5664,
"end": 5793,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 5743,
"end": 5750,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 5777,
"end": 5786,
"name": "DUP1",
"source": 4
},
{
"begin": 5777,
"end": 5786,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 5777,
"end": 5786,
"name": "SWAP1",
"source": 4
},
{
"begin": 5777,
"end": 5786,
"name": "SLOAD",
"source": 4
},
{
"begin": 5777,
"end": 5786,
"name": "SWAP1",
"source": 4
},
{
"begin": 5777,
"end": 5786,
"name": "PUSH",
"source": 4,
"value": "100"
},
{
"begin": 5777,
"end": 5786,
"name": "EXP",
"source": 4
},
{
"begin": 5777,
"end": 5786,
"name": "SWAP1",
"source": 4
},
{
"begin": 5777,
"end": 5786,
"name": "DIV",
"source": 4
},
{
"begin": 5777,
"end": 5786,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 5777,
"end": 5786,
"name": "AND",
"source": 4
},
{
"begin": 5762,
"end": 5787,
"name": "SWAP1",
"source": 4
},
{
"begin": 5762,
"end": 5787,
"name": "POP",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "SWAP1",
"source": 4
},
{
"begin": 5664,
"end": 5793,
"name": "JUMP",
"source": 4,
"value": "[out]"
},
{
"begin": 3670,
"end": 4447,
"name": "tag",
"source": 4,
"value": "13"
},
{
"begin": 3670,
"end": 4447,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 3810,
"end": 3814,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 3784,
"end": 3794,
"name": "DUP3",
"source": 4
},
{
"begin": 6064,
"end": 6065,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 6016,
"end": 6066,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 6016,
"end": 6066,
"name": "AND",
"source": 4
},
{
"begin": 6016,
"end": 6027,
"name": "PUSH",
"source": 4,
"value": "1"
},
{
"begin": 6016,
"end": 6039,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 6028,
"end": 6038,
"name": "DUP4",
"source": 4
},
{
"begin": 6016,
"end": 6039,
"name": "DUP2",
"source": 4
},
{
"begin": 6016,
"end": 6039,
"name": "MSTORE",
"source": 4
},
{
"begin": 6016,
"end": 6039,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 6016,
"end": 6039,
"name": "ADD",
"source": 4
},
{
"begin": 6016,
"end": 6039,
"name": "SWAP1",
"source": 4
},
{
"begin": 6016,
"end": 6039,
"name": "DUP2",
"source": 4
},
{
"begin": 6016,
"end": 6039,
"name": "MSTORE",
"source": 4
},
{
"begin": 6016,
"end": 6039,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 6016,
"end": 6039,
"name": "ADD",
"source": 4
},
{
"begin": 6016,
"end": 6039,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 6016,
"end": 6039,
"name": "KECCAK256",
"source": 4
},
{
"begin": 6016,
"end": 6052,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 6016,
"end": 6052,
"name": "ADD",
"source": 4
},
{
"begin": 6016,
"end": 6052,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 6016,
"end": 6052,
"name": "SWAP1",
"source": 4
},
{
"begin": 6016,
"end": 6052,
"name": "SLOAD",
"source": 4
},
{
"begin": 6016,
"end": 6052,
"name": "SWAP1",
"source": 4
},
{
"begin": 6016,
"end": 6052,
"name": "PUSH",
"source": 4,
"value": "100"
},
{
"begin": 6016,
"end": 6052,
"name": "EXP",
"source": 4
},
{
"begin": 6016,
"end": 6052,
"name": "SWAP1",
"source": 4
},
{
"begin": 6016,
"end": 6052,
"name": "DIV",
"source": 4
},
{
"begin": 6016,
"end": 6052,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 6016,
"end": 6052,
"name": "AND",
"source": 4
},
{
"begin": 6016,
"end": 6066,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 6016,
"end": 6066,
"name": "AND",
"source": 4
},
{
"begin": 6016,
"end": 6066,
"name": "EQ",
"source": 4
},
{
"begin": 6016,
"end": 6066,
"name": "ISZERO",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "PUSH [tag]",
"source": 4,
"value": "33"
},
{
"begin": 6008,
"end": 6098,
"name": "JUMPI",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 6008,
"end": 6098,
"name": "MLOAD",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "PUSH",
"source": 4,
"value": "8C379A000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 6008,
"end": 6098,
"name": "DUP2",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "MSTORE",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "PUSH",
"source": 4,
"value": "4"
},
{
"begin": 6008,
"end": 6098,
"name": "ADD",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "DUP1",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "DUP1",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 6008,
"end": 6098,
"name": "ADD",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "DUP3",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "DUP2",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "SUB",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "DUP3",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "MSTORE",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "PUSH",
"source": 4,
"value": "1B"
},
{
"begin": 6008,
"end": 6098,
"name": "DUP2",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "MSTORE",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 6008,
"end": 6098,
"name": "ADD",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "DUP1",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "PUSH",
"source": 4,
"value": "4D757374206861766520612076616C6964207265717565737449640000000000"
},
{
"begin": 6008,
"end": 6098,
"name": "DUP2",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "MSTORE",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "POP",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 6008,
"end": 6098,
"name": "ADD",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "SWAP2",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "POP",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "POP",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 6008,
"end": 6098,
"name": "MLOAD",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "DUP1",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "SWAP2",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "SUB",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "SWAP1",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "REVERT",
"source": 4
},
{
"begin": 6008,
"end": 6098,
"name": "tag",
"source": 4,
"value": "33"
},
{
"begin": 6008,
"end": 6098,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 3826,
"end": 3844,
"name": "PUSH [tag]",
"source": 4,
"value": "35"
},
{
"begin": 3826,
"end": 3844,
"name": "PUSH [tag]",
"source": 4,
"value": "36"
},
{
"begin": 3826,
"end": 3844,
"name": "JUMP",
"source": 4,
"value": "[in]"
},
{
"begin": 3826,
"end": 3844,
"name": "tag",
"source": 4,
"value": "35"
},
{
"begin": 3826,
"end": 3844,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 3847,
"end": 3858,
"name": "PUSH",
"source": 4,
"value": "1"
},
{
"begin": 3847,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 3859,
"end": 3869,
"name": "DUP7",
"source": 4
},
{
"begin": 3847,
"end": 3870,
"name": "DUP2",
"source": 4
},
{
"begin": 3847,
"end": 3870,
"name": "MSTORE",
"source": 4
},
{
"begin": 3847,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 3847,
"end": 3870,
"name": "ADD",
"source": 4
},
{
"begin": 3847,
"end": 3870,
"name": "SWAP1",
"source": 4
},
{
"begin": 3847,
"end": 3870,
"name": "DUP2",
"source": 4
},
{
"begin": 3847,
"end": 3870,
"name": "MSTORE",
"source": 4
},
{
"begin": 3847,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 3847,
"end": 3870,
"name": "ADD",
"source": 4
},
{
"begin": 3847,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 3847,
"end": 3870,
"name": "KECCAK256",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 3826,
"end": 3870,
"name": "MLOAD",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "DUP1",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 3826,
"end": 3870,
"name": "ADD",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 3826,
"end": 3870,
"name": "MSTORE",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "SWAP1",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "DUP2",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 3826,
"end": 3870,
"name": "DUP3",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "ADD",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 3826,
"end": 3870,
"name": "SWAP1",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "SLOAD",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "SWAP1",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "100"
},
{
"begin": 3826,
"end": 3870,
"name": "EXP",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "SWAP1",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "DIV",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 3826,
"end": 3870,
"name": "AND",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 3826,
"end": 3870,
"name": "AND",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 3826,
"end": 3870,
"name": "AND",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "DUP2",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "MSTORE",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 3826,
"end": 3870,
"name": "ADD",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 3826,
"end": 3870,
"name": "DUP3",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "ADD",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "14"
},
{
"begin": 3826,
"end": 3870,
"name": "SWAP1",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "SLOAD",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "SWAP1",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "100"
},
{
"begin": 3826,
"end": 3870,
"name": "EXP",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "SWAP1",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "DIV",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "E0"
},
{
"begin": 3826,
"end": 3870,
"name": "SHL",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 3826,
"end": 3870,
"name": "NOT",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "AND",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 3826,
"end": 3870,
"name": "NOT",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "AND",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "DUP2",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "MSTORE",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "POP",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "POP",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "SWAP1",
"source": 4
},
{
"begin": 3826,
"end": 3870,
"name": "POP",
"source": 4
},
{
"begin": 3884,
"end": 3895,
"name": "PUSH",
"source": 4,
"value": "1"
},
{
"begin": 3884,
"end": 3907,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 3896,
"end": 3906,
"name": "DUP7",
"source": 4
},
{
"begin": 3884,
"end": 3907,
"name": "DUP2",
"source": 4
},
{
"begin": 3884,
"end": 3907,
"name": "MSTORE",
"source": 4
},
{
"begin": 3884,
"end": 3907,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 3884,
"end": 3907,
"name": "ADD",
"source": 4
},
{
"begin": 3884,
"end": 3907,
"name": "SWAP1",
"source": 4
},
{
"begin": 3884,
"end": 3907,
"name": "DUP2",
"source": 4
},
{
"begin": 3884,
"end": 3907,
"name": "MSTORE",
"source": 4
},
{
"begin": 3884,
"end": 3907,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 3884,
"end": 3907,
"name": "ADD",
"source": 4
},
{
"begin": 3884,
"end": 3907,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 3884,
"end": 3907,
"name": "KECCAK256",
"source": 4
},
{
"begin": 3884,
"end": 3907,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 3877,
"end": 3907,
"name": "DUP1",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "DUP3",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "ADD",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 3877,
"end": 3907,
"name": "PUSH",
"source": 4,
"value": "100"
},
{
"begin": 3877,
"end": 3907,
"name": "EXP",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "DUP2",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "SLOAD",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "SWAP1",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 3877,
"end": 3907,
"name": "MUL",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "NOT",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "AND",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "SWAP1",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "SSTORE",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 3877,
"end": 3907,
"name": "DUP3",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "ADD",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "PUSH",
"source": 4,
"value": "14"
},
{
"begin": 3877,
"end": 3907,
"name": "PUSH",
"source": 4,
"value": "100"
},
{
"begin": 3877,
"end": 3907,
"name": "EXP",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "DUP2",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "SLOAD",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "SWAP1",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFF"
},
{
"begin": 3877,
"end": 3907,
"name": "MUL",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "NOT",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "AND",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "SWAP1",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "SSTORE",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "POP",
"source": 4
},
{
"begin": 3877,
"end": 3907,
"name": "POP",
"source": 4
},
{
"begin": 714,
"end": 720,
"name": "PUSH",
"source": 4,
"value": "61A80"
},
{
"begin": 3922,
"end": 3931,
"name": "GAS",
"source": 4
},
{
"begin": 3922,
"end": 3961,
"name": "LT",
"source": 4
},
{
"begin": 3922,
"end": 3961,
"name": "ISZERO",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "PUSH [tag]",
"source": 4,
"value": "37"
},
{
"begin": 3914,
"end": 3998,
"name": "JUMPI",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 3914,
"end": 3998,
"name": "MLOAD",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "PUSH",
"source": 4,
"value": "8C379A000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 3914,
"end": 3998,
"name": "DUP2",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "MSTORE",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "PUSH",
"source": 4,
"value": "4"
},
{
"begin": 3914,
"end": 3998,
"name": "ADD",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "DUP1",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "DUP1",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 3914,
"end": 3998,
"name": "ADD",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "DUP3",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "DUP2",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "SUB",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "DUP3",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "MSTORE",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 3914,
"end": 3998,
"name": "DUP2",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "MSTORE",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 3914,
"end": 3998,
"name": "ADD",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "DUP1",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "PUSH",
"source": 4,
"value": "4D7573742070726F7669646520636F6E73756D657220656E6F75676820676173"
},
{
"begin": 3914,
"end": 3998,
"name": "DUP2",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "MSTORE",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "POP",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 3914,
"end": 3998,
"name": "ADD",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "SWAP2",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "POP",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "POP",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 3914,
"end": 3998,
"name": "MLOAD",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "DUP1",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "SWAP2",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "SUB",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "SWAP1",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "REVERT",
"source": 4
},
{
"begin": 3914,
"end": 3998,
"name": "tag",
"source": 4,
"value": "37"
},
{
"begin": 3914,
"end": 3998,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 4268,
"end": 4280,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 4286,
"end": 4289,
"name": "DUP2",
"source": 4
},
{
"begin": 4286,
"end": 4302,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 4286,
"end": 4302,
"name": "ADD",
"source": 4
},
{
"begin": 4286,
"end": 4302,
"name": "MLOAD",
"source": 4
},
{
"begin": 4286,
"end": 4307,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 4286,
"end": 4307,
"name": "AND",
"source": 4
},
{
"begin": 4331,
"end": 4334,
"name": "DUP3",
"source": 4
},
{
"begin": 4331,
"end": 4353,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 4331,
"end": 4353,
"name": "ADD",
"source": 4
},
{
"begin": 4331,
"end": 4353,
"name": "MLOAD",
"source": 4
},
{
"begin": 4355,
"end": 4365,
"name": "DUP8",
"source": 4
},
{
"begin": 4367,
"end": 4372,
"name": "DUP8",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 4308,
"end": 4373,
"name": "MLOAD",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "PUSH",
"source": 4,
"value": "24"
},
{
"begin": 4308,
"end": 4373,
"name": "ADD",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "DUP1",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "DUP4",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "DUP2",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "MSTORE",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 4308,
"end": 4373,
"name": "ADD",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "DUP3",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "DUP2",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "MSTORE",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 4308,
"end": 4373,
"name": "ADD",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "SWAP3",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "POP",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "POP",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "POP",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 4308,
"end": 4373,
"name": "MLOAD",
"source": 4
},
{
"begin": 49,
"end": 53,
"name": "PUSH",
"source": -1,
"value": "20"
},
{
"begin": 39,
"end": 46,
"name": "DUP2",
"source": -1
},
{
"begin": 30,
"end": 37,
"name": "DUP4",
"source": -1
},
{
"begin": 26,
"end": 47,
"name": "SUB",
"source": -1
},
{
"begin": 22,
"end": 54,
"name": "SUB",
"source": -1
},
{
"begin": 13,
"end": 20,
"name": "DUP2",
"source": -1
},
{
"begin": 6,
"end": 55,
"name": "MSTORE",
"source": -1
},
{
"begin": 4308,
"end": 4373,
"name": "SWAP1",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 4308,
"end": 4373,
"name": "MSTORE",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "SWAP1",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 4308,
"end": 4373,
"name": "NOT",
"source": 4
},
{
"begin": 4308,
"end": 4373,
"name": "AND",
"source": 4
},
{
"begin": 38,
"end": 42,
"name": "PUSH",
"source": -1,
"value": "20"
},
{
"begin": 29,
"end": 36,
"name": "DUP3",
"source": -1
},
{
"begin": 25,
"end": 43,
"name": "ADD",
"source": -1
},
{
"begin": 67,
"end": 77,
"name": "DUP1",
"source": -1
},
{
"begin": 61,
"end": 78,
"name": "MLOAD",
"source": -1
},
{
"begin": 96,
"end": 154,
"name": "PUSH",
"source": -1,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 199,
"end": 207,
"name": "DUP4",
"source": -1
},
{
"begin": 192,
"end": 196,
"name": "DUP2",
"source": -1
},
{
"begin": 186,
"end": 190,
"name": "DUP4",
"source": -1
},
{
"begin": 182,
"end": 197,
"name": "AND",
"source": -1
},
{
"begin": 179,
"end": 208,
"name": "OR",
"source": -1
},
{
"begin": 167,
"end": 177,
"name": "DUP4",
"source": -1
},
{
"begin": 160,
"end": 209,
"name": "MSTORE",
"source": -1
},
{
"begin": 0,
"end": 215,
"name": "POP",
"source": -1
},
{
"begin": 0,
"end": 215,
"name": "POP",
"source": -1
},
{
"begin": 0,
"end": 215,
"name": "POP",
"source": -1
},
{
"begin": 4308,
"end": 4373,
"name": "POP",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 4286,
"end": 4374,
"name": "MLOAD",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "DUP1",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "DUP3",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "DUP1",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "MLOAD",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "SWAP1",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 4286,
"end": 4374,
"name": "ADD",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "SWAP1",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "DUP1",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "DUP4",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "DUP4",
"source": 4
},
{
"begin": 36,
"end": 189,
"name": "tag",
"source": -1,
"value": "38"
},
{
"begin": 36,
"end": 189,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 66,
"end": 68,
"name": "PUSH",
"source": -1,
"value": "20"
},
{
"begin": 61,
"end": 64,
"name": "DUP4",
"source": -1
},
{
"begin": 58,
"end": 69,
"name": "LT",
"source": -1
},
{
"begin": 36,
"end": 189,
"name": "PUSH [tag]",
"source": -1,
"value": "40"
},
{
"begin": 36,
"end": 189,
"name": "JUMPI",
"source": -1
},
{
"begin": 182,
"end": 185,
"name": "DUP1",
"source": -1
},
{
"begin": 176,
"end": 186,
"name": "MLOAD",
"source": -1
},
{
"begin": 171,
"end": 174,
"name": "DUP3",
"source": -1
},
{
"begin": 164,
"end": 187,
"name": "MSTORE",
"source": -1
},
{
"begin": 98,
"end": 100,
"name": "PUSH",
"source": -1,
"value": "20"
},
{
"begin": 93,
"end": 96,
"name": "DUP3",
"source": -1
},
{
"begin": 89,
"end": 101,
"name": "ADD",
"source": -1
},
{
"begin": 82,
"end": 101,
"name": "SWAP2",
"source": -1
},
{
"begin": 82,
"end": 101,
"name": "POP",
"source": -1
},
{
"begin": 123,
"end": 125,
"name": "PUSH",
"source": -1,
"value": "20"
},
{
"begin": 118,
"end": 121,
"name": "DUP2",
"source": -1
},
{
"begin": 114,
"end": 126,
"name": "ADD",
"source": -1
},
{
"begin": 107,
"end": 126,
"name": "SWAP1",
"source": -1
},
{
"begin": 107,
"end": 126,
"name": "POP",
"source": -1
},
{
"begin": 148,
"end": 150,
"name": "PUSH",
"source": -1,
"value": "20"
},
{
"begin": 143,
"end": 146,
"name": "DUP4",
"source": -1
},
{
"begin": 139,
"end": 151,
"name": "SUB",
"source": -1
},
{
"begin": 132,
"end": 151,
"name": "SWAP3",
"source": -1
},
{
"begin": 132,
"end": 151,
"name": "POP",
"source": -1
},
{
"begin": 36,
"end": 189,
"name": "PUSH [tag]",
"source": -1,
"value": "38"
},
{
"begin": 36,
"end": 189,
"name": "JUMP",
"source": -1
},
{
"begin": 36,
"end": 189,
"name": "tag",
"source": -1,
"value": "40"
},
{
"begin": 36,
"end": 189,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 274,
"end": 275,
"name": "PUSH",
"source": -1,
"value": "1"
},
{
"begin": 267,
"end": 270,
"name": "DUP4",
"source": -1
},
{
"begin": 263,
"end": 265,
"name": "PUSH",
"source": -1,
"value": "20"
},
{
"begin": 259,
"end": 271,
"name": "SUB",
"source": -1
},
{
"begin": 254,
"end": 257,
"name": "PUSH",
"source": -1,
"value": "100"
},
{
"begin": 250,
"end": 272,
"name": "EXP",
"source": -1
},
{
"begin": 246,
"end": 276,
"name": "SUB",
"source": -1
},
{
"begin": 315,
"end": 319,
"name": "DUP1",
"source": -1
},
{
"begin": 311,
"end": 320,
"name": "NOT",
"source": -1
},
{
"begin": 305,
"end": 308,
"name": "DUP3",
"source": -1
},
{
"begin": 299,
"end": 309,
"name": "MLOAD",
"source": -1
},
{
"begin": 295,
"end": 321,
"name": "AND",
"source": -1
},
{
"begin": 356,
"end": 360,
"name": "DUP2",
"source": -1
},
{
"begin": 350,
"end": 353,
"name": "DUP5",
"source": -1
},
{
"begin": 344,
"end": 354,
"name": "MLOAD",
"source": -1
},
{
"begin": 340,
"end": 361,
"name": "AND",
"source": -1
},
{
"begin": 389,
"end": 396,
"name": "DUP1",
"source": -1
},
{
"begin": 380,
"end": 387,
"name": "DUP3",
"source": -1
},
{
"begin": 377,
"end": 397,
"name": "OR",
"source": -1
},
{
"begin": 372,
"end": 375,
"name": "DUP6",
"source": -1
},
{
"begin": 365,
"end": 398,
"name": "MSTORE",
"source": -1
},
{
"begin": 3,
"end": 402,
"name": "POP",
"source": -1
},
{
"begin": 3,
"end": 402,
"name": "POP",
"source": -1
},
{
"begin": 3,
"end": 402,
"name": "POP",
"source": -1
},
{
"begin": 4286,
"end": 4374,
"name": "POP",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "POP",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "POP",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "SWAP1",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "POP",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "ADD",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "SWAP2",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "POP",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "POP",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 4286,
"end": 4374,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 4286,
"end": 4374,
"name": "MLOAD",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "DUP1",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "DUP4",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "SUB",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "DUP2",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 4286,
"end": 4374,
"name": "DUP7",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "GAS",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "CALL",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "SWAP2",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "POP",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "POP",
"source": 4
},
{
"begin": 4286,
"end": 4374,
"name": "RETURNDATASIZE",
"source": 4
},
{
"begin": 12,
"end": 13,
"name": "DUP1",
"source": -1
},
{
"begin": 19,
"end": 20,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 14,
"end": 41,
"name": "DUP2",
"source": -1
},
{
"begin": 14,
"end": 41,
"name": "EQ",
"source": -1
},
{
"begin": 14,
"end": 41,
"name": "PUSH [tag]",
"source": -1,
"value": "43"
},
{
"begin": 14,
"end": 41,
"name": "JUMPI",
"source": -1
},
{
"begin": 67,
"end": 71,
"name": "PUSH",
"source": -1,
"value": "40"
},
{
"begin": 61,
"end": 72,
"name": "MLOAD",
"source": -1
},
{
"begin": 56,
"end": 72,
"name": "SWAP2",
"source": -1
},
{
"begin": 56,
"end": 72,
"name": "POP",
"source": -1
},
{
"begin": 134,
"end": 138,
"name": "PUSH",
"source": -1,
"value": "1F"
},
{
"begin": 130,
"end": 139,
"name": "NOT",
"source": -1
},
{
"begin": 123,
"end": 127,
"name": "PUSH",
"source": -1,
"value": "3F"
},
{
"begin": 105,
"end": 121,
"name": "RETURNDATASIZE",
"source": -1
},
{
"begin": 101,
"end": 128,
"name": "ADD",
"source": -1
},
{
"begin": 97,
"end": 140,
"name": "AND",
"source": -1
},
{
"begin": 94,
"end": 95,
"name": "DUP3",
"source": -1
},
{
"begin": 90,
"end": 141,
"name": "ADD",
"source": -1
},
{
"begin": 84,
"end": 88,
"name": "PUSH",
"source": -1,
"value": "40"
},
{
"begin": 77,
"end": 142,
"name": "MSTORE",
"source": -1
},
{
"begin": 157,
"end": 173,
"name": "RETURNDATASIZE",
"source": -1
},
{
"begin": 154,
"end": 155,
"name": "DUP3",
"source": -1
},
{
"begin": 147,
"end": 174,
"name": "MSTORE",
"source": -1
},
{
"begin": 211,
"end": 227,
"name": "RETURNDATASIZE",
"source": -1
},
{
"begin": 208,
"end": 209,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 201,
"end": 205,
"name": "PUSH",
"source": -1,
"value": "20"
},
{
"begin": 198,
"end": 199,
"name": "DUP5",
"source": -1
},
{
"begin": 194,
"end": 206,
"name": "ADD",
"source": -1
},
{
"begin": 179,
"end": 228,
"name": "RETURNDATACOPY",
"source": -1
},
{
"begin": 5,
"end": 233,
"name": "PUSH [tag]",
"source": -1,
"value": "42"
},
{
"begin": 5,
"end": 233,
"name": "JUMP",
"source": -1
},
{
"begin": 14,
"end": 41,
"name": "tag",
"source": -1,
"value": "43"
},
{
"begin": 14,
"end": 41,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 32,
"end": 36,
"name": "PUSH",
"source": -1,
"value": "60"
},
{
"begin": 27,
"end": 36,
"name": "SWAP2",
"source": -1
},
{
"begin": 27,
"end": 36,
"name": "POP",
"source": -1
},
{
"begin": 5,
"end": 233,
"name": "tag",
"source": -1,
"value": "42"
},
{
"begin": 5,
"end": 233,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 5,
"end": 233,
"name": "POP",
"source": -1
},
{
"begin": 4267,
"end": 4374,
"name": "POP",
"source": 4
},
{
"begin": 4267,
"end": 4374,
"name": "SWAP1",
"source": 4
},
{
"begin": 4267,
"end": 4374,
"name": "POP",
"source": 4
},
{
"begin": 4434,
"end": 4441,
"name": "DUP1",
"source": 4
},
{
"begin": 4427,
"end": 4441,
"name": "SWAP4",
"source": 4
},
{
"begin": 4427,
"end": 4441,
"name": "POP",
"source": 4
},
{
"begin": 4427,
"end": 4441,
"name": "POP",
"source": 4
},
{
"begin": 4427,
"end": 4441,
"name": "POP",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "POP",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP3",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "SWAP2",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "POP",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "POP",
"source": 4
},
{
"begin": 3670,
"end": 4447,
"name": "JUMP",
"source": 4,
"value": "[out]"
},
{
"begin": 2257,
"end": 3154,
"name": "tag",
"source": 4,
"value": "19"
},
{
"begin": 2257,
"end": 3154,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 1598,
"end": 1617,
"name": "PUSH [tag]",
"source": 0,
"value": "45"
},
{
"begin": 1598,
"end": 1615,
"name": "PUSH [tag]",
"source": 0,
"value": "10"
},
{
"begin": 1598,
"end": 1617,
"name": "JUMP",
"source": 0,
"value": "[in]"
},
{
"begin": 1598,
"end": 1617,
"name": "tag",
"source": 0,
"value": "45"
},
{
"begin": 1598,
"end": 1617,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 1584,
"end": 1617,
"name": "PUSH",
"source": 0,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1584,
"end": 1617,
"name": "AND",
"source": 0
},
{
"begin": 1584,
"end": 1594,
"name": "CALLER",
"source": 0
},
{
"begin": 1584,
"end": 1617,
"name": "PUSH",
"source": 0,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 1584,
"end": 1617,
"name": "AND",
"source": 0
},
{
"begin": 1584,
"end": 1617,
"name": "EQ",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "PUSH [tag]",
"source": 0,
"value": "46"
},
{
"begin": 1576,
"end": 1641,
"name": "JUMPI",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 1576,
"end": 1641,
"name": "MLOAD",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "PUSH",
"source": 0,
"value": "8C379A000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 1576,
"end": 1641,
"name": "DUP2",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "MSTORE",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 1576,
"end": 1641,
"name": "ADD",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "DUP1",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "DUP1",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 1576,
"end": 1641,
"name": "ADD",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "DUP3",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "DUP2",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "SUB",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "DUP3",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "MSTORE",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "PUSH",
"source": 0,
"value": "13"
},
{
"begin": 1576,
"end": 1641,
"name": "DUP2",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "MSTORE",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 1576,
"end": 1641,
"name": "ADD",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "DUP1",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "PUSH",
"source": 0,
"value": "4D75737420757365204C494E4B20746F6B656E00000000000000000000000000"
},
{
"begin": 1576,
"end": 1641,
"name": "DUP2",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "MSTORE",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "POP",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 1576,
"end": 1641,
"name": "ADD",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "SWAP2",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "POP",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "POP",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 1576,
"end": 1641,
"name": "MLOAD",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "DUP1",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "SWAP2",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "SUB",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "SWAP1",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "REVERT",
"source": 0
},
{
"begin": 1576,
"end": 1641,
"name": "tag",
"source": 0,
"value": "46"
},
{
"begin": 1576,
"end": 1641,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 2561,
"end": 2577,
"name": "DUP6",
"source": 4
},
{
"begin": 6306,
"end": 6315,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 6306,
"end": 6315,
"name": "DUP1",
"source": 4
},
{
"begin": 6306,
"end": 6315,
"name": "SWAP1",
"source": 4
},
{
"begin": 6306,
"end": 6315,
"name": "SLOAD",
"source": 4
},
{
"begin": 6306,
"end": 6315,
"name": "SWAP1",
"source": 4
},
{
"begin": 6306,
"end": 6315,
"name": "PUSH",
"source": 4,
"value": "100"
},
{
"begin": 6306,
"end": 6315,
"name": "EXP",
"source": 4
},
{
"begin": 6306,
"end": 6315,
"name": "SWAP1",
"source": 4
},
{
"begin": 6306,
"end": 6315,
"name": "DIV",
"source": 4
},
{
"begin": 6306,
"end": 6315,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 6306,
"end": 6315,
"name": "AND",
"source": 4
},
{
"begin": 6291,
"end": 6316,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 6291,
"end": 6316,
"name": "AND",
"source": 4
},
{
"begin": 6291,
"end": 6294,
"name": "DUP2",
"source": 4
},
{
"begin": 6291,
"end": 6316,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 6291,
"end": 6316,
"name": "AND",
"source": 4
},
{
"begin": 6291,
"end": 6316,
"name": "EQ",
"source": 4
},
{
"begin": 6291,
"end": 6316,
"name": "ISZERO",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "PUSH [tag]",
"source": 4,
"value": "48"
},
{
"begin": 6283,
"end": 6344,
"name": "JUMPI",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 6283,
"end": 6344,
"name": "MLOAD",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "PUSH",
"source": 4,
"value": "8C379A000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 6283,
"end": 6344,
"name": "DUP2",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "MSTORE",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "PUSH",
"source": 4,
"value": "4"
},
{
"begin": 6283,
"end": 6344,
"name": "ADD",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "DUP1",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "DUP1",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 6283,
"end": 6344,
"name": "ADD",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "DUP3",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "DUP2",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "SUB",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "DUP3",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "MSTORE",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "PUSH",
"source": 4,
"value": "17"
},
{
"begin": 6283,
"end": 6344,
"name": "DUP2",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "MSTORE",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 6283,
"end": 6344,
"name": "ADD",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "DUP1",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "PUSH",
"source": 4,
"value": "43616E6E6F742063616C6C6261636B20746F204C494E4B000000000000000000"
},
{
"begin": 6283,
"end": 6344,
"name": "DUP2",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "MSTORE",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "POP",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 6283,
"end": 6344,
"name": "ADD",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "SWAP2",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "POP",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "POP",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 6283,
"end": 6344,
"name": "MLOAD",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "DUP1",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "SWAP2",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "SUB",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "SWAP1",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "REVERT",
"source": 4
},
{
"begin": 6283,
"end": 6344,
"name": "tag",
"source": 4,
"value": "48"
},
{
"begin": 6283,
"end": 6344,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 2589,
"end": 2606,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 2636,
"end": 2643,
"name": "DUP11",
"source": 4
},
{
"begin": 2645,
"end": 2651,
"name": "DUP7",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 2619,
"end": 2652,
"name": "MLOAD",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2619,
"end": 2652,
"name": "ADD",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "DUP1",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "DUP4",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2619,
"end": 2652,
"name": "AND",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2619,
"end": 2652,
"name": "AND",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "PUSH",
"source": 4,
"value": "60"
},
{
"begin": 2619,
"end": 2652,
"name": "SHL",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "DUP2",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "MSTORE",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "PUSH",
"source": 4,
"value": "14"
},
{
"begin": 2619,
"end": 2652,
"name": "ADD",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "DUP3",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "DUP2",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "MSTORE",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2619,
"end": 2652,
"name": "ADD",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "SWAP3",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "POP",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "POP",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "POP",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 2619,
"end": 2652,
"name": "MLOAD",
"source": 4
},
{
"begin": 49,
"end": 53,
"name": "PUSH",
"source": -1,
"value": "20"
},
{
"begin": 39,
"end": 46,
"name": "DUP2",
"source": -1
},
{
"begin": 30,
"end": 37,
"name": "DUP4",
"source": -1
},
{
"begin": 26,
"end": 47,
"name": "SUB",
"source": -1
},
{
"begin": 22,
"end": 54,
"name": "SUB",
"source": -1
},
{
"begin": 13,
"end": 20,
"name": "DUP2",
"source": -1
},
{
"begin": 6,
"end": 55,
"name": "MSTORE",
"source": -1
},
{
"begin": 2619,
"end": 2652,
"name": "SWAP1",
"source": 4
},
{
"begin": 2619,
"end": 2652,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 2619,
"end": 2652,
"name": "MSTORE",
"source": 4
},
{
"begin": 2609,
"end": 2653,
"name": "DUP1",
"source": 4
},
{
"begin": 2609,
"end": 2653,
"name": "MLOAD",
"source": 4
},
{
"begin": 2609,
"end": 2653,
"name": "SWAP1",
"source": 4
},
{
"begin": 2609,
"end": 2653,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2609,
"end": 2653,
"name": "ADD",
"source": 4
},
{
"begin": 2609,
"end": 2653,
"name": "KECCAK256",
"source": 4
},
{
"begin": 2589,
"end": 2653,
"name": "SWAP1",
"source": 4
},
{
"begin": 2589,
"end": 2653,
"name": "POP",
"source": 4
},
{
"begin": 2715,
"end": 2716,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 2668,
"end": 2717,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2668,
"end": 2717,
"name": "AND",
"source": 4
},
{
"begin": 2668,
"end": 2679,
"name": "PUSH",
"source": 4,
"value": "1"
},
{
"begin": 2668,
"end": 2690,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 2680,
"end": 2689,
"name": "DUP4",
"source": 4
},
{
"begin": 2668,
"end": 2690,
"name": "DUP2",
"source": 4
},
{
"begin": 2668,
"end": 2690,
"name": "MSTORE",
"source": 4
},
{
"begin": 2668,
"end": 2690,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2668,
"end": 2690,
"name": "ADD",
"source": 4
},
{
"begin": 2668,
"end": 2690,
"name": "SWAP1",
"source": 4
},
{
"begin": 2668,
"end": 2690,
"name": "DUP2",
"source": 4
},
{
"begin": 2668,
"end": 2690,
"name": "MSTORE",
"source": 4
},
{
"begin": 2668,
"end": 2690,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2668,
"end": 2690,
"name": "ADD",
"source": 4
},
{
"begin": 2668,
"end": 2690,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 2668,
"end": 2690,
"name": "KECCAK256",
"source": 4
},
{
"begin": 2668,
"end": 2703,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 2668,
"end": 2703,
"name": "ADD",
"source": 4
},
{
"begin": 2668,
"end": 2703,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 2668,
"end": 2703,
"name": "SWAP1",
"source": 4
},
{
"begin": 2668,
"end": 2703,
"name": "SLOAD",
"source": 4
},
{
"begin": 2668,
"end": 2703,
"name": "SWAP1",
"source": 4
},
{
"begin": 2668,
"end": 2703,
"name": "PUSH",
"source": 4,
"value": "100"
},
{
"begin": 2668,
"end": 2703,
"name": "EXP",
"source": 4
},
{
"begin": 2668,
"end": 2703,
"name": "SWAP1",
"source": 4
},
{
"begin": 2668,
"end": 2703,
"name": "DIV",
"source": 4
},
{
"begin": 2668,
"end": 2703,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2668,
"end": 2703,
"name": "AND",
"source": 4
},
{
"begin": 2668,
"end": 2717,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2668,
"end": 2717,
"name": "AND",
"source": 4
},
{
"begin": 2668,
"end": 2717,
"name": "EQ",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "PUSH [tag]",
"source": 4,
"value": "50"
},
{
"begin": 2660,
"end": 2742,
"name": "JUMPI",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 2660,
"end": 2742,
"name": "MLOAD",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "PUSH",
"source": 4,
"value": "8C379A000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 2660,
"end": 2742,
"name": "DUP2",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "MSTORE",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "PUSH",
"source": 4,
"value": "4"
},
{
"begin": 2660,
"end": 2742,
"name": "ADD",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "DUP1",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "DUP1",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2660,
"end": 2742,
"name": "ADD",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "DUP3",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "DUP2",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "SUB",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "DUP3",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "MSTORE",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "PUSH",
"source": 4,
"value": "14"
},
{
"begin": 2660,
"end": 2742,
"name": "DUP2",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "MSTORE",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2660,
"end": 2742,
"name": "ADD",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "DUP1",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "PUSH",
"source": 4,
"value": "4D75737420757365206120756E69717565204944000000000000000000000000"
},
{
"begin": 2660,
"end": 2742,
"name": "DUP2",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "MSTORE",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "POP",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2660,
"end": 2742,
"name": "ADD",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "SWAP2",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "POP",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "POP",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 2660,
"end": 2742,
"name": "MLOAD",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "DUP1",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "SWAP2",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "SUB",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "SWAP1",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "REVERT",
"source": 4
},
{
"begin": 2660,
"end": 2742,
"name": "tag",
"source": 4,
"value": "50"
},
{
"begin": 2660,
"end": 2742,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 2800,
"end": 2818,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 2821,
"end": 2841,
"name": "PUSH [tag]",
"source": 4,
"value": "51"
},
{
"begin": 646,
"end": 655,
"name": "PUSH",
"source": 4,
"value": "12C"
},
{
"begin": 2821,
"end": 2824,
"name": "TIMESTAMP",
"source": 4
},
{
"begin": 2821,
"end": 2828,
"name": "PUSH [tag]",
"source": 4,
"value": "52"
},
{
"begin": 2821,
"end": 2828,
"name": "SWAP1",
"source": 4
},
{
"begin": 2821,
"end": 2841,
"name": "SWAP2",
"source": 4
},
{
"begin": 2821,
"end": 2841,
"name": "SWAP1",
"source": 4
},
{
"begin": 2821,
"end": 2841,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFF"
},
{
"begin": 2821,
"end": 2841,
"name": "AND",
"source": 4
},
{
"begin": 2821,
"end": 2841,
"name": "JUMP",
"source": 4,
"value": "[in]"
},
{
"begin": 2821,
"end": 2841,
"name": "tag",
"source": 4,
"value": "51"
},
{
"begin": 2821,
"end": 2841,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 2800,
"end": 2841,
"name": "SWAP1",
"source": 4
},
{
"begin": 2800,
"end": 2841,
"name": "POP",
"source": 4
},
{
"begin": 2875,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 2875,
"end": 2946,
"name": "MLOAD",
"source": 4
},
{
"begin": 2875,
"end": 2946,
"name": "DUP1",
"source": 4
},
{
"begin": 2875,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 2875,
"end": 2946,
"name": "ADD",
"source": 4
},
{
"begin": 2875,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 2875,
"end": 2946,
"name": "MSTORE",
"source": 4
},
{
"begin": 2875,
"end": 2946,
"name": "DUP1",
"source": 4
},
{
"begin": 2893,
"end": 2909,
"name": "DUP11",
"source": 4
},
{
"begin": 2875,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2875,
"end": 2946,
"name": "AND",
"source": 4
},
{
"begin": 2875,
"end": 2946,
"name": "DUP2",
"source": 4
},
{
"begin": 2875,
"end": 2946,
"name": "MSTORE",
"source": 4
},
{
"begin": 2875,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2875,
"end": 2946,
"name": "ADD",
"source": 4
},
{
"begin": 2920,
"end": 2939,
"name": "DUP10",
"source": 4
},
{
"begin": 2875,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2875,
"end": 2946,
"name": "NOT",
"source": 4
},
{
"begin": 2875,
"end": 2946,
"name": "AND",
"source": 4
},
{
"begin": 2875,
"end": 2946,
"name": "DUP2",
"source": 4
},
{
"begin": 2875,
"end": 2946,
"name": "MSTORE",
"source": 4
},
{
"begin": 2875,
"end": 2946,
"name": "POP",
"source": 4
},
{
"begin": 2850,
"end": 2861,
"name": "PUSH",
"source": 4,
"value": "1"
},
{
"begin": 2850,
"end": 2872,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 2862,
"end": 2871,
"name": "DUP5",
"source": 4
},
{
"begin": 2850,
"end": 2872,
"name": "DUP2",
"source": 4
},
{
"begin": 2850,
"end": 2872,
"name": "MSTORE",
"source": 4
},
{
"begin": 2850,
"end": 2872,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2850,
"end": 2872,
"name": "ADD",
"source": 4
},
{
"begin": 2850,
"end": 2872,
"name": "SWAP1",
"source": 4
},
{
"begin": 2850,
"end": 2872,
"name": "DUP2",
"source": 4
},
{
"begin": 2850,
"end": 2872,
"name": "MSTORE",
"source": 4
},
{
"begin": 2850,
"end": 2872,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2850,
"end": 2872,
"name": "ADD",
"source": 4
},
{
"begin": 2850,
"end": 2872,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 2850,
"end": 2872,
"name": "KECCAK256",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 2850,
"end": 2946,
"name": "DUP3",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "ADD",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "MLOAD",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "DUP2",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 2850,
"end": 2946,
"name": "ADD",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 2850,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "100"
},
{
"begin": 2850,
"end": 2946,
"name": "EXP",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "DUP2",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "SLOAD",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "DUP2",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2850,
"end": 2946,
"name": "MUL",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "NOT",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "AND",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "SWAP1",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "DUP4",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2850,
"end": 2946,
"name": "AND",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "MUL",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "OR",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "SWAP1",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "SSTORE",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "POP",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2850,
"end": 2946,
"name": "DUP3",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "ADD",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "MLOAD",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "DUP2",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 2850,
"end": 2946,
"name": "ADD",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "14"
},
{
"begin": 2850,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "100"
},
{
"begin": 2850,
"end": 2946,
"name": "EXP",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "DUP2",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "SLOAD",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "DUP2",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFF"
},
{
"begin": 2850,
"end": 2946,
"name": "MUL",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "NOT",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "AND",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "SWAP1",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "DUP4",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "PUSH",
"source": 4,
"value": "E0"
},
{
"begin": 2850,
"end": 2946,
"name": "SHR",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "MUL",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "OR",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "SWAP1",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "SSTORE",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "POP",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "SWAP1",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "POP",
"source": 4
},
{
"begin": 2850,
"end": 2946,
"name": "POP",
"source": 4
},
{
"begin": 2982,
"end": 2989,
"name": "DUP10",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "D8D7ECC4800D25FA53CE0372F13A416D98907A7EF3D8D3BDD79CF4FE75529C65"
},
{
"begin": 2998,
"end": 3005,
"name": "DUP14",
"source": 4
},
{
"begin": 3014,
"end": 3023,
"name": "DUP5",
"source": 4
},
{
"begin": 3032,
"end": 3040,
"name": "DUP15",
"source": 4
},
{
"begin": 3049,
"end": 3065,
"name": "DUP14",
"source": 4
},
{
"begin": 3074,
"end": 3093,
"name": "DUP14",
"source": 4
},
{
"begin": 3102,
"end": 3112,
"name": "DUP8",
"source": 4
},
{
"begin": 3121,
"end": 3133,
"name": "DUP14",
"source": 4
},
{
"begin": 3142,
"end": 3147,
"name": "DUP14",
"source": 4
},
{
"begin": 3142,
"end": 3147,
"name": "DUP14",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 2960,
"end": 3148,
"name": "MLOAD",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP1",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP11",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2960,
"end": 3148,
"name": "AND",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2960,
"end": 3148,
"name": "AND",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP2",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "MSTORE",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2960,
"end": 3148,
"name": "ADD",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP10",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP2",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "MSTORE",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2960,
"end": 3148,
"name": "ADD",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP9",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP2",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "MSTORE",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2960,
"end": 3148,
"name": "ADD",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP8",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2960,
"end": 3148,
"name": "AND",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2960,
"end": 3148,
"name": "AND",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP2",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "MSTORE",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2960,
"end": 3148,
"name": "ADD",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP7",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2960,
"end": 3148,
"name": "NOT",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "AND",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2960,
"end": 3148,
"name": "NOT",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "AND",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP2",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "MSTORE",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2960,
"end": 3148,
"name": "ADD",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP6",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP2",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "MSTORE",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2960,
"end": 3148,
"name": "ADD",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP5",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP2",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "MSTORE",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2960,
"end": 3148,
"name": "ADD",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP1",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2960,
"end": 3148,
"name": "ADD",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP3",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP2",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "SUB",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP3",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "MSTORE",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP5",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP5",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP3",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP2",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP2",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "MSTORE",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 2960,
"end": 3148,
"name": "ADD",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "SWAP3",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "POP",
"source": 4
},
{
"begin": 30,
"end": 33,
"name": "DUP1",
"source": -1
},
{
"begin": 22,
"end": 28,
"name": "DUP3",
"source": -1
},
{
"begin": 14,
"end": 20,
"name": "DUP5",
"source": -1
},
{
"begin": 1,
"end": 34,
"name": "CALLDATACOPY",
"source": -1
},
{
"begin": 99,
"end": 100,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 93,
"end": 96,
"name": "DUP2",
"source": -1
},
{
"begin": 85,
"end": 91,
"name": "DUP5",
"source": -1
},
{
"begin": 81,
"end": 97,
"name": "ADD",
"source": -1
},
{
"begin": 74,
"end": 101,
"name": "MSTORE",
"source": -1
},
{
"begin": 137,
"end": 141,
"name": "PUSH",
"source": -1,
"value": "1F"
},
{
"begin": 133,
"end": 142,
"name": "NOT",
"source": -1
},
{
"begin": 126,
"end": 130,
"name": "PUSH",
"source": -1,
"value": "1F"
},
{
"begin": 121,
"end": 124,
"name": "DUP3",
"source": -1
},
{
"begin": 117,
"end": 131,
"name": "ADD",
"source": -1
},
{
"begin": 113,
"end": 143,
"name": "AND",
"source": -1
},
{
"begin": 106,
"end": 143,
"name": "SWAP1",
"source": -1
},
{
"begin": 106,
"end": 143,
"name": "POP",
"source": -1
},
{
"begin": 169,
"end": 172,
"name": "DUP1",
"source": -1
},
{
"begin": 161,
"end": 167,
"name": "DUP4",
"source": -1
},
{
"begin": 157,
"end": 173,
"name": "ADD",
"source": -1
},
{
"begin": 147,
"end": 173,
"name": "SWAP3",
"source": -1
},
{
"begin": 147,
"end": 173,
"name": "POP",
"source": -1
},
{
"begin": 2960,
"end": 3148,
"name": "POP",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "POP",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "SWAP11",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "POP",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "POP",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "POP",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "POP",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "POP",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "POP",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "POP",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "POP",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "POP",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "POP",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "POP",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 2960,
"end": 3148,
"name": "MLOAD",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "DUP1",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "SWAP2",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "SUB",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "SWAP1",
"source": 4
},
{
"begin": 2960,
"end": 3148,
"name": "LOG2",
"source": 4
},
{
"begin": 6351,
"end": 6352,
"name": "POP",
"source": 4
},
{
"begin": 6351,
"end": 6352,
"name": "POP",
"source": 4
},
{
"begin": 1647,
"end": 1648,
"name": "POP",
"source": 0
},
{
"begin": 2257,
"end": 3154,
"name": "POP",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "POP",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "POP",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "POP",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "POP",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "POP",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "POP",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "POP",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "POP",
"source": 4
},
{
"begin": 2257,
"end": 3154,
"name": "JUMP",
"source": 4,
"value": "[out]"
},
{
"begin": 608,
"end": 655,
"name": "tag",
"source": 4,
"value": "21"
},
{
"begin": 608,
"end": 655,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 646,
"end": 655,
"name": "PUSH",
"source": 4,
"value": "12C"
},
{
"begin": 608,
"end": 655,
"name": "DUP2",
"source": 4
},
{
"begin": 608,
"end": 655,
"name": "JUMP",
"source": 4,
"value": "[out]"
},
{
"begin": 4956,
"end": 5454,
"name": "tag",
"source": 4,
"value": "24"
},
{
"begin": 4956,
"end": 5454,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 5171,
"end": 5172,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 5123,
"end": 5173,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 5123,
"end": 5173,
"name": "AND",
"source": 4
},
{
"begin": 5123,
"end": 5134,
"name": "PUSH",
"source": 4,
"value": "1"
},
{
"begin": 5123,
"end": 5146,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 5135,
"end": 5145,
"name": "DUP7",
"source": 4
},
{
"begin": 5123,
"end": 5146,
"name": "DUP2",
"source": 4
},
{
"begin": 5123,
"end": 5146,
"name": "MSTORE",
"source": 4
},
{
"begin": 5123,
"end": 5146,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 5123,
"end": 5146,
"name": "ADD",
"source": 4
},
{
"begin": 5123,
"end": 5146,
"name": "SWAP1",
"source": 4
},
{
"begin": 5123,
"end": 5146,
"name": "DUP2",
"source": 4
},
{
"begin": 5123,
"end": 5146,
"name": "MSTORE",
"source": 4
},
{
"begin": 5123,
"end": 5146,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 5123,
"end": 5146,
"name": "ADD",
"source": 4
},
{
"begin": 5123,
"end": 5146,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 5123,
"end": 5146,
"name": "KECCAK256",
"source": 4
},
{
"begin": 5123,
"end": 5159,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 5123,
"end": 5159,
"name": "ADD",
"source": 4
},
{
"begin": 5123,
"end": 5159,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 5123,
"end": 5159,
"name": "SWAP1",
"source": 4
},
{
"begin": 5123,
"end": 5159,
"name": "SLOAD",
"source": 4
},
{
"begin": 5123,
"end": 5159,
"name": "SWAP1",
"source": 4
},
{
"begin": 5123,
"end": 5159,
"name": "PUSH",
"source": 4,
"value": "100"
},
{
"begin": 5123,
"end": 5159,
"name": "EXP",
"source": 4
},
{
"begin": 5123,
"end": 5159,
"name": "SWAP1",
"source": 4
},
{
"begin": 5123,
"end": 5159,
"name": "DIV",
"source": 4
},
{
"begin": 5123,
"end": 5159,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 5123,
"end": 5159,
"name": "AND",
"source": 4
},
{
"begin": 5123,
"end": 5173,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 5123,
"end": 5173,
"name": "AND",
"source": 4
},
{
"begin": 5123,
"end": 5173,
"name": "EQ",
"source": 4
},
{
"begin": 5123,
"end": 5173,
"name": "ISZERO",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "PUSH [tag]",
"source": 4,
"value": "54"
},
{
"begin": 5115,
"end": 5198,
"name": "JUMPI",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 5115,
"end": 5198,
"name": "MLOAD",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "PUSH",
"source": 4,
"value": "8C379A000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 5115,
"end": 5198,
"name": "DUP2",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "MSTORE",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "PUSH",
"source": 4,
"value": "4"
},
{
"begin": 5115,
"end": 5198,
"name": "ADD",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "DUP1",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "DUP1",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 5115,
"end": 5198,
"name": "ADD",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "DUP3",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "DUP2",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "SUB",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "DUP3",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "MSTORE",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "PUSH",
"source": 4,
"value": "14"
},
{
"begin": 5115,
"end": 5198,
"name": "DUP2",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "MSTORE",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 5115,
"end": 5198,
"name": "ADD",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "DUP1",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "PUSH",
"source": 4,
"value": "4D75737420757365206120756E69717565204944000000000000000000000000"
},
{
"begin": 5115,
"end": 5198,
"name": "DUP2",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "MSTORE",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "POP",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 5115,
"end": 5198,
"name": "ADD",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "SWAP2",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "POP",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "POP",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 5115,
"end": 5198,
"name": "MLOAD",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "DUP1",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "SWAP2",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "SUB",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "SWAP1",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "REVERT",
"source": 4
},
{
"begin": 5115,
"end": 5198,
"name": "tag",
"source": 4,
"value": "54"
},
{
"begin": 5115,
"end": 5198,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 5279,
"end": 5282,
"name": "TIMESTAMP",
"source": 4
},
{
"begin": 5264,
"end": 5275,
"name": "DUP2",
"source": 4
},
{
"begin": 5264,
"end": 5282,
"name": "GT",
"source": 4
},
{
"begin": 5264,
"end": 5282,
"name": "ISZERO",
"source": 4
},
{
"begin": 5256,
"end": 5309,
"name": "PUSH [tag]",
"source": 4,
"value": "55"
},
{
"begin": 5256,
"end": 5309,
"name": "JUMPI",
"source": 4
},
{
"begin": 5256,
"end": 5309,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 5256,
"end": 5309,
"name": "MLOAD",
"source": 4
},
{
"begin": 5256,
"end": 5309,
"name": "PUSH",
"source": 4,
"value": "8C379A000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 5256,
"end": 5309,
"name": "DUP2",
"source": 4
},
{
"begin": 5256,
"end": 5309,
"name": "MSTORE",
"source": 4
},
{
"begin": 5256,
"end": 5309,
"name": "PUSH",
"source": 4,
"value": "4"
},
{
"begin": 5256,
"end": 5309,
"name": "ADD",
"source": 4
},
{
"begin": 5256,
"end": 5309,
"name": "DUP1",
"source": 4
},
{
"begin": 5256,
"end": 5309,
"name": "DUP1",
"source": 4
},
{
"begin": 5256,
"end": 5309,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 5256,
"end": 5309,
"name": "ADD",
"source": 4
},
{
"begin": 5256,
"end": 5309,
"name": "DUP3",
"source": 4
},
{
"begin": 5256,
"end": 5309,
"name": "DUP2",
"source": 4
},
{
"begin": 5256,
"end": 5309,
"name": "SUB",
"source": 4
},
{
"begin": 5256,
"end": 5309,
"name": "DUP3",
"source": 4
},
{
"begin": 5256,
"end": 5309,
"name": "MSTORE",
"source"
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment