Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save calchulus/b5dba70cec80135f4daeaad6ad36bfc4 to your computer and use it in GitHub Desktop.
Save calchulus/b5dba70cec80135f4daeaad6ad36bfc4 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.8.7+commit.e28d00a7.js&optimize=false&runs=200&gist=
pragma solidity ^0.5.2;
/**
* @title ERC20 interface
* @dev see https://eips.ethereum.org/EIPS/eip-20
*/
interface IERC20 {
function transfer(address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
function totalSupply() external view returns (uint256);
function balanceOf(address who) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
REMIX EXAMPLE PROJECT
Remix example project is present when Remix loads very first time or there are no files existing in the File Explorer.
It contains 3 directories:
1. 'contracts': Holds three contracts with different complexity level, denoted with number prefix in file name.
2. 'scripts': Holds two scripts to deploy a contract. It is explained below.
3. 'tests': Contains one test file for 'Ballot' contract with unit tests in Solidity.
SCRIPTS
The 'scripts' folder contains example async/await scripts for deploying the 'Storage' contract.
For the deployment of any other contract, 'contractName' and 'constructorArgs' should be updated (along with other code if required).
Scripts have full access to the web3.js and ethers.js libraries.
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.
{
"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
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220442e7d6d5b768b355e12ec46428a535d3ca239b29b4216a12fdc923a8139344464736f6c63430008070033",
"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 DIFFICULTY 0x2E PUSH30 0x6D5B768B355E12EC46428A535D3CA239B29B4216A12FDC923A8139344464 PUSH20 0x6F6C634300080700330000000000000000000000 ",
"sourceMap": "141:3616:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220442e7d6d5b768b355e12ec46428a535d3ca239b29b4216a12fdc923a8139344464736f6c63430008070033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIFFICULTY 0x2E PUSH30 0x6D5B768B355E12EC46428A535D3CA239B29B4216A12FDC923A8139344464 PUSH20 0x6F6C634300080700330000000000000000000000 ",
"sourceMap": "141:3616:7:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "97",
"totalCost": "17297"
},
"internal": {
"returnDataToString(bytes memory)": "infinite",
"safeDecimals(contract IERC20)": "infinite",
"safeName(contract IERC20)": "infinite",
"safeSymbol(contract IERC20)": "infinite",
"safeTransfer(contract IERC20,address,uint256)": "infinite",
"safeTransferFrom(contract IERC20,address,address,uint256)": "infinite"
}
},
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/ImpossibleChainlink.sol": "BoringERC20"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"@chainlink/contracts/src/v0.8/VRFConsumerBase.sol": {
"keccak256": "0x991e49ee47043d6667887d7ed6ab5a0f8e4e5550f92b09b0d75c1fb1a473cd8d",
"license": "MIT",
"urls": [
"bzz-raw://a688c48fa681a7958d5cbb4e1845290ae317e2dfa1a059faae44c69d83409414",
"dweb:/ipfs/Qmb5Gpjya5VJ9LnwkEBfMr5DtDH462VBjXcA6uAU2f1Vj9"
]
},
"@chainlink/contracts/src/v0.8/VRFRequestIDBase.sol": {
"keccak256": "0x7c8dad07e6c6c9269d97fd1191ccf9c0f0068683f1f88003e688eef9373de0d9",
"license": "MIT",
"urls": [
"bzz-raw://1d88c83a359c70f6b2e2e05d8f7611cce4a3d316a65e5175e14bcf9a6ced98af",
"dweb:/ipfs/QmeH3BEuVvaaQsz7sN5myEnFLoabTG4j85vS9Z6rfJkads"
]
},
"@chainlink/contracts/src/v0.8/interfaces/LinkTokenInterface.sol": {
"keccak256": "0x50528c237386c55ff122d047f91b32be7abe24e9dfdc609de21cd605aae83b9a",
"license": "MIT",
"urls": [
"bzz-raw://92037bd13b34432f9377cb205c0039bd0724af66ea605598db31d4ccd33f879f",
"dweb:/ipfs/QmdH6Ef5PZgcPrJuWboLX5MhmezzTFniZCwJ6fk2tYVua4"
]
},
"contracts/Context.sol": {
"keccak256": "0xf85ba24aca6a219be58ee82e453490f1358ac94d67f42e8c15ad93dd24b9d9dc",
"license": "MIT",
"urls": [
"bzz-raw://c1ff02d829b413a27234a2837b9adfd84693dcf508a2935967be9f4592160cc1",
"dweb:/ipfs/QmengRHPpNR9gtQDtbBPh8ugXYUnm23Z8V7txrxr6Whfrd"
]
},
"contracts/ERC20.sol": {
"keccak256": "0x8ba7d16b0287ff1bc020e8e1e2c28ba2a59c698b40ff1026f7853ae891c71f43",
"license": "MIT",
"urls": [
"bzz-raw://f1e3f1e154dfed1473cdcd7b012047ec3a64ebf504e0883974f092f096c765fd",
"dweb:/ipfs/QmSUu3LFgyNLgVgxXvJ3upBSAf8Qtqy2oxrRVuy57JVJ6E"
]
},
"contracts/IERC20.sol": {
"keccak256": "0xb55c91551ef864f86edd296378fc3430f19798c0d1de468ff772a83a842df24c",
"license": "MIT",
"urls": [
"bzz-raw://f118e5d475795b9e612bb6c139db18493e65f47f181ddcef446f4fa43e7f80f5",
"dweb:/ipfs/QmSRWmUWxpjp8jMtDHqWysWbZqFNVKAyLHcmBtjJRvmoLF"
]
},
"contracts/IERC20Metadata.sol": {
"keccak256": "0x4065401847859fdea8270079da0d5d94d4d6bcb16b83753f25d77c03bc9fa66d",
"license": "MIT",
"urls": [
"bzz-raw://ddc99a4763150db86205a0b0313dda9db3b4c1cc283933cb9228d63ea71a7495",
"dweb:/ipfs/QmaVKXyFDwYPZ1iRrjAEbbaFYWSfrYdz4jfaeFJ7EWzT6k"
]
},
"contracts/ImpossibleChainlink.sol": {
"keccak256": "0x6859e3df3cbb658fa0c4950457820a16d05d1dac9c92f05283a645d1861efbcc",
"license": "MIT",
"urls": [
"bzz-raw://3f17ed387dc0cf8a8f62f2fe2ebb044c3290d3a8a4b33b9d11085113739c17a6",
"dweb:/ipfs/QmeAKxxv7SyRb2AFUrcx9FvyEDyvTupJHVFUy6K5idS25d"
]
}
},
"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
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Context.sol": "Context"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Context.sol": {
"keccak256": "0xf85ba24aca6a219be58ee82e453490f1358ac94d67f42e8c15ad93dd24b9d9dc",
"license": "MIT",
"urls": [
"bzz-raw://c1ff02d829b413a27234a2837b9adfd84693dcf508a2935967be9f4592160cc1",
"dweb:/ipfs/QmengRHPpNR9gtQDtbBPh8ugXYUnm23Z8V7txrxr6Whfrd"
]
}
},
"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
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Interface of the ERC20 standard as defined in the EIP.",
"events": {
"Approval(address,address,uint256)": {
"details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
},
"Transfer(address,address,uint256)": {
"details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
},
"approve(address,uint256)": {
"details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."
},
"balanceOf(address)": {
"details": "Returns the amount of tokens owned by `account`."
},
"totalSupply()": {
"details": "Returns the amount of tokens in existence."
},
"transfer(address,uint256)": {
"details": "Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
},
"transferFrom(address,address,uint256)": {
"details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/3_Ballot.sol": "IERC20"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/3_Ballot.sol": {
"keccak256": "0xb55c91551ef864f86edd296378fc3430f19798c0d1de468ff772a83a842df24c",
"license": "MIT",
"urls": [
"bzz-raw://f118e5d475795b9e612bb6c139db18493e65f47f181ddcef446f4fa43e7f80f5",
"dweb:/ipfs/QmSRWmUWxpjp8jMtDHqWysWbZqFNVKAyLHcmBtjJRvmoLF"
]
}
},
"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
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"decimals()": "313ce567",
"name()": "06fdde03",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._",
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
},
"approve(address,uint256)": {
"details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."
},
"balanceOf(address)": {
"details": "Returns the amount of tokens owned by `account`."
},
"decimals()": {
"details": "Returns the decimals places of the token."
},
"name()": {
"details": "Returns the name of the token."
},
"symbol()": {
"details": "Returns the symbol of the token."
},
"totalSupply()": {
"details": "Returns the amount of tokens in existence."
},
"transfer(address,uint256)": {
"details": "Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
},
"transferFrom(address,address,uint256)": {
"details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/IERC20Metadata.sol": "IERC20Metadata"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/IERC20.sol": {
"keccak256": "0xb55c91551ef864f86edd296378fc3430f19798c0d1de468ff772a83a842df24c",
"license": "MIT",
"urls": [
"bzz-raw://f118e5d475795b9e612bb6c139db18493e65f47f181ddcef446f4fa43e7f80f5",
"dweb:/ipfs/QmSRWmUWxpjp8jMtDHqWysWbZqFNVKAyLHcmBtjJRvmoLF"
]
},
"contracts/IERC20Metadata.sol": {
"keccak256": "0x4065401847859fdea8270079da0d5d94d4d6bcb16b83753f25d77c03bc9fa66d",
"license": "MIT",
"urls": [
"bzz-raw://ddc99a4763150db86205a0b0313dda9db3b4c1cc283933cb9228d63ea71a7495",
"dweb:/ipfs/QmaVKXyFDwYPZ1iRrjAEbbaFYWSfrYdz4jfaeFJ7EWzT6k"
]
}
},
"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
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_1296": {
"entryPoint": null,
"id": 1296,
"parameterSlots": 0,
"returnSlots": 0
},
"@_98": {
"entryPoint": null,
"id": 98,
"parameterSlots": 2,
"returnSlots": 0
}
},
"generatedSources": [],
"linkReferences": {},
"object": "60c06040527331050af1f1b26b6cbfd0ea277b775c268b7ecb07600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b0897686c545045afc77cf20ec7a532e3120e0f1600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156100ba57600080fd5b50733d2341adb2d31f1c5530cdc622016af293177ae073b0897686c545045afc77cf20ec7a532e3120e0f18173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505050507ff86195cf7690c55907b2b611ebb7343a6f649bff128701cc542f0569e2c549da60001b600181905550655af3107a400060028190555060805160601c60a05160601c6112af6101c56000396000818161041701526107cb0152600081816104de015261078f01526112af6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806394985ddd1161005b57806394985ddd14610129578063bb0602cd14610145578063dbdff2c114610163578063f851a4401461018157610088565b80631b0c27da1461008d57806342619f66146100bd578063874b3afc146100db5780638dc654a21461010b575b600080fd5b6100a760048036038101906100a29190610a1a565b61019f565b6040516100b49190610ea4565b60405180910390f35b6100c56101c3565b6040516100d29190610ea4565b60405180910390f35b6100f560048036038101906100f09190610a74565b6101c9565b6040516101029190610d5e565b60405180910390f35b610113610286565b6040516101209190610ea4565b60405180910390f35b610143600480360381019061013e91906109da565b610415565b005b61014d6104b1565b60405161015a9190610e09565b60405180910390f35b61016b6104d7565b6040516101789190610d80565b60405180910390f35b610189610605565b6040516101969190610cdc565b60405180910390f35b600681815481106101af57600080fd5b906000526020600020016000915090505481565b60045481565b60608167ffffffffffffffff8111156101e5576101e4611125565b5b6040519080825280602002602001820160405280156102135781602001602082028036833780820191505090505b50905060005b8281101561027f578381604051602001610234929190610ebf565b6040516020818303038152906040528051906020012060001c8282815181106102605761025f6110f6565b5b60200260200101818152505080806102779061106a565b915050610219565b5092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030f90610e84565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103739190610cdc565b60206040518083038186803b15801561038b57600080fd5b505afa15801561039f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c39190610a47565b90506104123382600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661062b9092919063ffffffff16565b90565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049a90610e64565b60405180910390fd5b6104ad8282610780565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105359190610cdc565b60206040518083038186803b15801561054d57600080fd5b505afa158015610561573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105859190610a47565b10156105c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90610e44565b60405180910390fd5b6105d460015460025461078b565b905060068160001c908060018154018082558091505060019003906000526020600020016000909190919091505590565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b8585604051602401610660929190610cf7565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516106ca9190610cc5565b6000604051808303816000865af19150503d8060008114610707576040519150601f19603f3d011682016040523d82523d6000602084013e61070c565b606091505b509150915081801561073a575060008151148061073957508080602001905181019061073891906109ad565b5b5b610779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077090610e24565b60405180910390fd5b5050505050565b806004819055505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634000aea07f0000000000000000000000000000000000000000000000000000000000000000848660006040516020016107ff929190610d9b565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161082c93929190610d20565b602060405180830381600087803b15801561084657600080fd5b505af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e91906109ad565b5060006108a084600030600080898152602001908152602001600020546108ea565b90506001600080868152602001908152602001600020546108c19190610f59565b600080868152602001908152602001600020819055506108e18482610926565b91505092915050565b6000848484846040516020016109039493929190610dc4565b6040516020818303038152906040528051906020012060001c9050949350505050565b6000828260405160200161093b929190610c99565b60405160208183030381529060405280519060200120905092915050565b60008151905061096881611234565b92915050565b60008135905061097d8161124b565b92915050565b60008135905061099281611262565b92915050565b6000815190506109a781611262565b92915050565b6000602082840312156109c3576109c2611154565b5b60006109d184828501610959565b91505092915050565b600080604083850312156109f1576109f0611154565b5b60006109ff8582860161096e565b9250506020610a1085828601610983565b9150509250929050565b600060208284031215610a3057610a2f611154565b5b6000610a3e84828501610983565b91505092915050565b600060208284031215610a5d57610a5c611154565b5b6000610a6b84828501610998565b91505092915050565b60008060408385031215610a8b57610a8a611154565b5b6000610a9985828601610983565b9250506020610aaa85828601610983565b9150509250929050565b6000610ac08383610c64565b60208301905092915050565b610ad581610faf565b82525050565b6000610ae682610ef8565b610af08185610f1b565b9350610afb83610ee8565b8060005b83811015610b2c578151610b138882610ab4565b9750610b1e83610f0e565b925050600181019050610aff565b5085935050505092915050565b610b4281610fcd565b82525050565b610b59610b5482610fcd565b6110b3565b82525050565b6000610b6a82610f03565b610b748185610f2c565b9350610b84818560208601611037565b610b8d81611159565b840191505092915050565b6000610ba382610f03565b610bad8185610f3d565b9350610bbd818560208601611037565b80840191505092915050565b610bd281611001565b82525050565b6000610be5601c83610f48565b9150610bf08261116a565b602082019050919050565b6000610c08602b83610f48565b9150610c1382611193565b604082019050919050565b6000610c2b601f83610f48565b9150610c36826111e2565b602082019050919050565b6000610c4e601183610f48565b9150610c598261120b565b602082019050919050565b610c6d81610ff7565b82525050565b610c7c81610ff7565b82525050565b610c93610c8e82610ff7565b6110bd565b82525050565b6000610ca58285610b48565b602082019150610cb58284610c82565b6020820191508190509392505050565b6000610cd18284610b98565b915081905092915050565b6000602082019050610cf16000830184610acc565b92915050565b6000604082019050610d0c6000830185610acc565b610d196020830184610c73565b9392505050565b6000606082019050610d356000830186610acc565b610d426020830185610c73565b8181036040830152610d548184610b5f565b9050949350505050565b60006020820190508181036000830152610d788184610adb565b905092915050565b6000602082019050610d956000830184610b39565b92915050565b6000604082019050610db06000830185610b39565b610dbd6020830184610c73565b9392505050565b6000608082019050610dd96000830187610b39565b610de66020830186610c73565b610df36040830185610acc565b610e006060830184610c73565b95945050505050565b6000602082019050610e1e6000830184610bc9565b92915050565b60006020820190508181036000830152610e3d81610bd8565b9050919050565b60006020820190508181036000830152610e5d81610bfb565b9050919050565b60006020820190508181036000830152610e7d81610c1e565b9050919050565b60006020820190508181036000830152610e9d81610c41565b9050919050565b6000602082019050610eb96000830184610c73565b92915050565b6000604082019050610ed46000830185610c73565b610ee16020830184610c73565b9392505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610f6482610ff7565b9150610f6f83610ff7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610fa457610fa36110c7565b5b828201905092915050565b6000610fba82610fd7565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061100c82611013565b9050919050565b600061101e82611025565b9050919050565b600061103082610fd7565b9050919050565b60005b8381101561105557808201518184015260208101905061103a565b83811115611064576000848401525b50505050565b600061107582610ff7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156110a8576110a76110c7565b5b600182019050919050565b6000819050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f426f72696e6745524332303a205472616e73666572206661696c656400000000600082015250565b7f4e6f7420656e6f756768204c494e4b202d2066696c6c20636f6e74726163742060008201527f7769746820666175636574000000000000000000000000000000000000000000602082015250565b7f4f6e6c7920565246436f6f7264696e61746f722063616e2066756c66696c6c00600082015250565b7f63616c6c6572206e6f742066756e646572000000000000000000000000000000600082015250565b61123d81610fc1565b811461124857600080fd5b50565b61125481610fcd565b811461125f57600080fd5b50565b61126b81610ff7565b811461127657600080fd5b5056fea2646970667358221220e5fcfe6f89fe1f72b34f9119dd3f84a19bc87cd57d1cac907272144d0096b6d364736f6c63430008070033",
"opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH20 0x31050AF1F1B26B6CBFD0EA277B775C268B7ECB07 PUSH1 0x3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH20 0xB0897686C545045AFC77CF20EC7A532E3120E0F1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE DUP1 ISZERO PUSH2 0xBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0x3D2341ADB2D31F1C5530CDC622016AF293177AE0 PUSH20 0xB0897686C545045AFC77CF20EC7A532E3120E0F1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE POP POP POP POP PUSH32 0xF86195CF7690C55907B2B611EBB7343A6F649BFF128701CC542F0569E2C549DA PUSH1 0x0 SHL PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH6 0x5AF3107A4000 PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x12AF PUSH2 0x1C5 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x417 ADD MSTORE PUSH2 0x7CB ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x4DE ADD MSTORE PUSH2 0x78F ADD MSTORE PUSH2 0x12AF 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 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x94985DDD GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x94985DDD EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0xBB0602CD EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xDBDFF2C1 EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x181 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x1B0C27DA EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x42619F66 EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x874B3AFC EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x8DC654A2 EQ PUSH2 0x10B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xA1A JUMP JUMPDEST PUSH2 0x19F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB4 SWAP2 SWAP1 PUSH2 0xEA4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0x1C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD2 SWAP2 SWAP1 PUSH2 0xEA4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF0 SWAP2 SWAP1 PUSH2 0xA74 JUMP JUMPDEST PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x102 SWAP2 SWAP1 PUSH2 0xD5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x113 PUSH2 0x286 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x120 SWAP2 SWAP1 PUSH2 0xEA4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x143 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x13E SWAP2 SWAP1 PUSH2 0x9DA JUMP JUMPDEST PUSH2 0x415 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14D PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15A SWAP2 SWAP1 PUSH2 0xE09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16B PUSH2 0x4D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x178 SWAP2 SWAP1 PUSH2 0xD80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x189 PUSH2 0x605 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x196 SWAP2 SWAP1 PUSH2 0xCDC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E5 JUMPI PUSH2 0x1E4 PUSH2 0x1125 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x213 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x27F JUMPI DUP4 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x234 SWAP3 SWAP2 SWAP1 PUSH2 0xEBF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x260 JUMPI PUSH2 0x25F PUSH2 0x10F6 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH2 0x277 SWAP1 PUSH2 0x106A JUMP JUMPDEST SWAP2 POP POP PUSH2 0x219 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x318 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30F SWAP1 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x373 SWAP2 SWAP1 PUSH2 0xCDC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C3 SWAP2 SWAP1 PUSH2 0xA47 JUMP JUMPDEST SWAP1 POP PUSH2 0x412 CALLER DUP3 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x62B SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x49A SWAP1 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4AD DUP3 DUP3 PUSH2 0x780 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x535 SWAP2 SWAP1 PUSH2 0xCDC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x561 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x585 SWAP2 SWAP1 PUSH2 0xA47 JUMP JUMPDEST LT ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BD SWAP1 PUSH2 0xE44 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5D4 PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH2 0x78B JUMP JUMPDEST SWAP1 POP PUSH1 0x6 DUP2 PUSH1 0x0 SHR SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE SWAP1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x660 SWAP3 SWAP2 SWAP1 PUSH2 0xCF7 JUMP JUMPDEST 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 PUSH2 0x6CA SWAP2 SWAP1 PUSH2 0xCC5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x707 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 0x70C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x73A JUMPI POP PUSH1 0x0 DUP2 MLOAD EQ DUP1 PUSH2 0x739 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x738 SWAP2 SWAP1 PUSH2 0x9AD JUMP JUMPDEST JUMPDEST JUMPDEST PUSH2 0x779 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x770 SWAP1 PUSH2 0xE24 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x4 DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4000AEA0 PUSH32 0x0 DUP5 DUP7 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x7FF SWAP3 SWAP2 SWAP1 PUSH2 0xD9B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x82C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD20 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x85A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x87E SWAP2 SWAP1 PUSH2 0x9AD JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x8A0 DUP5 PUSH1 0x0 ADDRESS PUSH1 0x0 DUP1 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x8EA JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x0 DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x8C1 SWAP2 SWAP1 PUSH2 0xF59 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x8E1 DUP5 DUP3 PUSH2 0x926 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x903 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xDC4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x93B SWAP3 SWAP2 SWAP1 PUSH2 0xC99 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x968 DUP2 PUSH2 0x1234 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x97D DUP2 PUSH2 0x124B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x992 DUP2 PUSH2 0x1262 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x9A7 DUP2 PUSH2 0x1262 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9C3 JUMPI PUSH2 0x9C2 PUSH2 0x1154 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x9D1 DUP5 DUP3 DUP6 ADD PUSH2 0x959 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9F1 JUMPI PUSH2 0x9F0 PUSH2 0x1154 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x9FF DUP6 DUP3 DUP7 ADD PUSH2 0x96E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA10 DUP6 DUP3 DUP7 ADD PUSH2 0x983 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA30 JUMPI PUSH2 0xA2F PUSH2 0x1154 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA3E DUP5 DUP3 DUP6 ADD PUSH2 0x983 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA5D JUMPI PUSH2 0xA5C PUSH2 0x1154 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA6B DUP5 DUP3 DUP6 ADD PUSH2 0x998 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA8B JUMPI PUSH2 0xA8A PUSH2 0x1154 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA99 DUP6 DUP3 DUP7 ADD PUSH2 0x983 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xAAA DUP6 DUP3 DUP7 ADD PUSH2 0x983 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC0 DUP4 DUP4 PUSH2 0xC64 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAD5 DUP2 PUSH2 0xFAF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAE6 DUP3 PUSH2 0xEF8 JUMP JUMPDEST PUSH2 0xAF0 DUP2 DUP6 PUSH2 0xF1B JUMP JUMPDEST SWAP4 POP PUSH2 0xAFB DUP4 PUSH2 0xEE8 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB2C JUMPI DUP2 MLOAD PUSH2 0xB13 DUP9 DUP3 PUSH2 0xAB4 JUMP JUMPDEST SWAP8 POP PUSH2 0xB1E DUP4 PUSH2 0xF0E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xAFF JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB42 DUP2 PUSH2 0xFCD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xB59 PUSH2 0xB54 DUP3 PUSH2 0xFCD JUMP JUMPDEST PUSH2 0x10B3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB6A DUP3 PUSH2 0xF03 JUMP JUMPDEST PUSH2 0xB74 DUP2 DUP6 PUSH2 0xF2C JUMP JUMPDEST SWAP4 POP PUSH2 0xB84 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1037 JUMP JUMPDEST PUSH2 0xB8D DUP2 PUSH2 0x1159 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBA3 DUP3 PUSH2 0xF03 JUMP JUMPDEST PUSH2 0xBAD DUP2 DUP6 PUSH2 0xF3D JUMP JUMPDEST SWAP4 POP PUSH2 0xBBD DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1037 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBD2 DUP2 PUSH2 0x1001 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBE5 PUSH1 0x1C DUP4 PUSH2 0xF48 JUMP JUMPDEST SWAP2 POP PUSH2 0xBF0 DUP3 PUSH2 0x116A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC08 PUSH1 0x2B DUP4 PUSH2 0xF48 JUMP JUMPDEST SWAP2 POP PUSH2 0xC13 DUP3 PUSH2 0x1193 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC2B PUSH1 0x1F DUP4 PUSH2 0xF48 JUMP JUMPDEST SWAP2 POP PUSH2 0xC36 DUP3 PUSH2 0x11E2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC4E PUSH1 0x11 DUP4 PUSH2 0xF48 JUMP JUMPDEST SWAP2 POP PUSH2 0xC59 DUP3 PUSH2 0x120B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC6D DUP2 PUSH2 0xFF7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xC7C DUP2 PUSH2 0xFF7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xC93 PUSH2 0xC8E DUP3 PUSH2 0xFF7 JUMP JUMPDEST PUSH2 0x10BD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCA5 DUP3 DUP6 PUSH2 0xB48 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0xCB5 DUP3 DUP5 PUSH2 0xC82 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCD1 DUP3 DUP5 PUSH2 0xB98 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xCF1 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xACC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xD0C PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xACC JUMP JUMPDEST PUSH2 0xD19 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xC73 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xD35 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xACC JUMP JUMPDEST PUSH2 0xD42 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xC73 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xD54 DUP2 DUP5 PUSH2 0xB5F JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xD78 DUP2 DUP5 PUSH2 0xADB JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xD95 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB39 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xDB0 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xB39 JUMP JUMPDEST PUSH2 0xDBD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xC73 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0xDD9 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0xB39 JUMP JUMPDEST PUSH2 0xDE6 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0xC73 JUMP JUMPDEST PUSH2 0xDF3 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xACC JUMP JUMPDEST PUSH2 0xE00 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0xC73 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xE1E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xBC9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE3D DUP2 PUSH2 0xBD8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE5D DUP2 PUSH2 0xBFB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE7D DUP2 PUSH2 0xC1E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE9D DUP2 PUSH2 0xC41 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xEB9 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC73 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xED4 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xC73 JUMP JUMPDEST PUSH2 0xEE1 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xC73 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF64 DUP3 PUSH2 0xFF7 JUMP JUMPDEST SWAP2 POP PUSH2 0xF6F DUP4 PUSH2 0xFF7 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0xFA4 JUMPI PUSH2 0xFA3 PUSH2 0x10C7 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFBA DUP3 PUSH2 0xFD7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100C DUP3 PUSH2 0x1013 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x101E DUP3 PUSH2 0x1025 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1030 DUP3 PUSH2 0xFD7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1055 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x103A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1064 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1075 DUP3 PUSH2 0xFF7 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x10A8 JUMPI PUSH2 0x10A7 PUSH2 0x10C7 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4E6F7420656E6F756768204C494E4B202D2066696C6C20636F6E747261637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7769746820666175636574000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4F6E6C7920565246436F6F7264696E61746F722063616E2066756C66696C6C00 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x63616C6C6572206E6F742066756E646572000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x123D DUP2 PUSH2 0xFC1 JUMP JUMPDEST DUP2 EQ PUSH2 0x1248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1254 DUP2 PUSH2 0xFCD JUMP JUMPDEST DUP2 EQ PUSH2 0x125F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x126B DUP2 PUSH2 0xFF7 JUMP JUMPDEST DUP2 EQ PUSH2 0x1276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE5 0xFC INVALID PUSH16 0x89FE1F72B34F9119DD3F84A19BC87CD5 PUSH30 0x1CAC907272144D0096B6D364736F6C634300080700330000000000000000 ",
"sourceMap": "3886:2483:7:-:0;;;4059:42;4036:65;;;;;;;;;;;;;;;;;;;;4168:42;4140:71;;;;;;;;;;;;;;;;;;;;4632:363;;;;;;;;;;4684:42;4765;9386:15:0;9369:32;;;;;;;;;;;;9433:5;9407:32;;;;;;;;;;;;9299:145;;4857:66:7::1;4847:76;;:7;:76;;;;4939:17;4933:3;:23;;;;3886:2483:::0;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@Link_1268": {
"entryPoint": 1201,
"id": 1268,
"parameterSlots": 0,
"returnSlots": 0
},
"@admin_1260": {
"entryPoint": 1541,
"id": 1260,
"parameterSlots": 0,
"returnSlots": 0
},
"@expand_1425": {
"entryPoint": 457,
"id": 1425,
"parameterSlots": 2,
"returnSlots": 1
},
"@fulfillRandomness_1377": {
"entryPoint": 1920,
"id": 1377,
"parameterSlots": 2,
"returnSlots": 0
},
"@getRandomNumber_1346": {
"entryPoint": 1239,
"id": 1346,
"parameterSlots": 0,
"returnSlots": 1
},
"@makeRequestId_169": {
"entryPoint": 2342,
"id": 169,
"parameterSlots": 2,
"returnSlots": 1
},
"@makeVRFInputSeed_150": {
"entryPoint": 2282,
"id": 150,
"parameterSlots": 4,
"returnSlots": 1
},
"@randomResult_1262": {
"entryPoint": 451,
"id": 1262,
"parameterSlots": 0,
"returnSlots": 0
},
"@rawFulfillRandomness_119": {
"entryPoint": 1045,
"id": 119,
"parameterSlots": 2,
"returnSlots": 0
},
"@requestRandomness_70": {
"entryPoint": 1931,
"id": 70,
"parameterSlots": 2,
"returnSlots": 1
},
"@results_1271": {
"entryPoint": 415,
"id": 1271,
"parameterSlots": 0,
"returnSlots": 0
},
"@safeTransfer_1195": {
"entryPoint": 1579,
"id": 1195,
"parameterSlots": 3,
"returnSlots": 0
},
"@withdrawLink_1451": {
"entryPoint": 646,
"id": 1451,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_decode_t_bool_fromMemory": {
"entryPoint": 2393,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes32": {
"entryPoint": 2414,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 2435,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256_fromMemory": {
"entryPoint": 2456,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bool_fromMemory": {
"entryPoint": 2477,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32t_uint256": {
"entryPoint": 2522,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 2586,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256_fromMemory": {
"entryPoint": 2631,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256t_uint256": {
"entryPoint": 2676,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_encodeUpdatedPos_t_uint256_to_t_uint256": {
"entryPoint": 2740,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 2764,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack": {
"entryPoint": 2779,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack": {
"entryPoint": 2873,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack": {
"entryPoint": 2888,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack": {
"entryPoint": 2911,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2968,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_contract$_IERC20_$910_to_t_address_fromStack": {
"entryPoint": 3017,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_stringliteral_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27_to_t_string_memory_ptr_fromStack": {
"entryPoint": 3032,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_4bb3a9958b8c6e95beec57f36a0352593367170b4a84072c44b036bee3a36e74_to_t_string_memory_ptr_fromStack": {
"entryPoint": 3067,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_aa31d97d949424087cac59e348924584a13a8784d3590fa798a0967391035445_to_t_string_memory_ptr_fromStack": {
"entryPoint": 3102,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_f3c22969426f4d47b02f60e89833068c492296345fe126023802bc7df28e195a_to_t_string_memory_ptr_fromStack": {
"entryPoint": 3137,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256": {
"entryPoint": 3172,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 3187,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack": {
"entryPoint": 3202,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_bytes32_t_uint256__to_t_bytes32_t_uint256__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 3225,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 3269,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 3292,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
"entryPoint": 3319,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
"entryPoint": 3360,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": {
"entryPoint": 3422,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": 3456,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed": {
"entryPoint": 3483,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32_t_uint256_t_address_t_uint256__to_t_bytes32_t_uint256_t_address_t_uint256__fromStack_reversed": {
"entryPoint": 3524,
"id": null,
"parameterSlots": 5,
"returnSlots": 1
},
"abi_encode_tuple_t_contract$_IERC20_$910__to_t_address__fromStack_reversed": {
"entryPoint": 3593,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 3620,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_4bb3a9958b8c6e95beec57f36a0352593367170b4a84072c44b036bee3a36e74__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 3652,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_aa31d97d949424087cac59e348924584a13a8784d3590fa798a0967391035445__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 3684,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_f3c22969426f4d47b02f60e89833068c492296345fe126023802bc7df28e195a__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 3716,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 3748,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
"entryPoint": 3775,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_dataslot_t_array$_t_uint256_$dyn_memory_ptr": {
"entryPoint": 3816,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_array$_t_uint256_$dyn_memory_ptr": {
"entryPoint": 3832,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_bytes_memory_ptr": {
"entryPoint": 3843,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_nextElement_t_array$_t_uint256_$dyn_memory_ptr": {
"entryPoint": 3854,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack": {
"entryPoint": 3867,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack": {
"entryPoint": 3884,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 3901,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 3912,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 3929,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 4015,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 4033,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 4045,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 4055,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 4087,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_contract$_IERC20_$910_to_t_address": {
"entryPoint": 4097,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_uint160_to_t_address": {
"entryPoint": 4115,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_uint160_to_t_uint160": {
"entryPoint": 4133,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_memory_to_memory": {
"entryPoint": 4151,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"increment_t_uint256": {
"entryPoint": 4202,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"leftAlign_t_bytes32": {
"entryPoint": 4275,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"leftAlign_t_uint256": {
"entryPoint": 4285,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 4295,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 4342,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 4389,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 4436,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 4441,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"store_literal_in_memory_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27": {
"entryPoint": 4458,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_4bb3a9958b8c6e95beec57f36a0352593367170b4a84072c44b036bee3a36e74": {
"entryPoint": 4499,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_aa31d97d949424087cac59e348924584a13a8784d3590fa798a0967391035445": {
"entryPoint": 4578,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_f3c22969426f4d47b02f60e89833068c492296345fe126023802bc7df28e195a": {
"entryPoint": 4619,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bool": {
"entryPoint": 4660,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes32": {
"entryPoint": 4683,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 4706,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:17809:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "67:77:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "77:22:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "92:6:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "86:5:8"
},
"nodeType": "YulFunctionCall",
"src": "86:13:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "77:5:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "132:5:8"
}
],
"functionName": {
"name": "validator_revert_t_bool",
"nodeType": "YulIdentifier",
"src": "108:23:8"
},
"nodeType": "YulFunctionCall",
"src": "108:30:8"
},
"nodeType": "YulExpressionStatement",
"src": "108:30:8"
}
]
},
"name": "abi_decode_t_bool_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "45:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "53:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "61:5:8",
"type": ""
}
],
"src": "7:137:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "202:87:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "212:29:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "234:6:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "221:12:8"
},
"nodeType": "YulFunctionCall",
"src": "221:20:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "212:5:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "277:5:8"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nodeType": "YulIdentifier",
"src": "250:26:8"
},
"nodeType": "YulFunctionCall",
"src": "250:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "250:33:8"
}
]
},
"name": "abi_decode_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "180:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "188:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "196:5:8",
"type": ""
}
],
"src": "150:139:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "347:87:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "357:29:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "379:6:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "366:12:8"
},
"nodeType": "YulFunctionCall",
"src": "366:20:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "357:5:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "422:5:8"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "395:26:8"
},
"nodeType": "YulFunctionCall",
"src": "395:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "395:33:8"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "325:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "333:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "341:5:8",
"type": ""
}
],
"src": "295:139:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "503:80:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "513:22:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "528:6:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "522:5:8"
},
"nodeType": "YulFunctionCall",
"src": "522:13:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "513:5:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "571:5:8"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "544:26:8"
},
"nodeType": "YulFunctionCall",
"src": "544:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "544:33:8"
}
]
},
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "481:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "489:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "497:5:8",
"type": ""
}
],
"src": "440:143:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "663:271:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "709:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "711:77:8"
},
"nodeType": "YulFunctionCall",
"src": "711:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "711:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "684:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "693:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "680:3:8"
},
"nodeType": "YulFunctionCall",
"src": "680:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "705:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "676:3:8"
},
"nodeType": "YulFunctionCall",
"src": "676:32:8"
},
"nodeType": "YulIf",
"src": "673:119:8"
},
{
"nodeType": "YulBlock",
"src": "802:125:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "817:15:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "831:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "821:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "846:71:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "889:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "900:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "885:3:8"
},
"nodeType": "YulFunctionCall",
"src": "885:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "909:7:8"
}
],
"functionName": {
"name": "abi_decode_t_bool_fromMemory",
"nodeType": "YulIdentifier",
"src": "856:28:8"
},
"nodeType": "YulFunctionCall",
"src": "856:61:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "846:6:8"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bool_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "633:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "644:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "656:6:8",
"type": ""
}
],
"src": "589:345:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1023:391:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1069:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "1071:77:8"
},
"nodeType": "YulFunctionCall",
"src": "1071:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "1071:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1044:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1053:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1040:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1040:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1065:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1036:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1036:32:8"
},
"nodeType": "YulIf",
"src": "1033:119:8"
},
{
"nodeType": "YulBlock",
"src": "1162:117:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1177:15:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1191:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1181:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1206:63:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1241:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1252:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1237:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1237:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1261:7:8"
}
],
"functionName": {
"name": "abi_decode_t_bytes32",
"nodeType": "YulIdentifier",
"src": "1216:20:8"
},
"nodeType": "YulFunctionCall",
"src": "1216:53:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1206:6:8"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1289:118:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1304:16:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1318:2:8",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1308:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1334:63:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1369:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1380:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1365:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1365:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1389:7:8"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "1344:20:8"
},
"nodeType": "YulFunctionCall",
"src": "1344:53:8"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1334:6:8"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "985:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "996:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1008:6:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1016:6:8",
"type": ""
}
],
"src": "940:474:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1486:263:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1532:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "1534:77:8"
},
"nodeType": "YulFunctionCall",
"src": "1534:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "1534:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1507:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1516:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1503:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1503:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1528:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1499:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1499:32:8"
},
"nodeType": "YulIf",
"src": "1496:119:8"
},
{
"nodeType": "YulBlock",
"src": "1625:117:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1640:15:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1654:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1644:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1669:63:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1704:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1715:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1700:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1700:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1724:7:8"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "1679:20:8"
},
"nodeType": "YulFunctionCall",
"src": "1679:53:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1669:6:8"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1456:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1467:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1479:6:8",
"type": ""
}
],
"src": "1420:329:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1832:274:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1878:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "1880:77:8"
},
"nodeType": "YulFunctionCall",
"src": "1880:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "1880:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1853:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1862:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1849:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1849:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1874:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1845:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1845:32:8"
},
"nodeType": "YulIf",
"src": "1842:119:8"
},
{
"nodeType": "YulBlock",
"src": "1971:128:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1986:15:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2000:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1990:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2015:74:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2061:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2072:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2057:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2057:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2081:7:8"
}
],
"functionName": {
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulIdentifier",
"src": "2025:31:8"
},
"nodeType": "YulFunctionCall",
"src": "2025:64:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2015:6:8"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1802:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1813:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1825:6:8",
"type": ""
}
],
"src": "1755:351:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2195:391:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2241:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "2243:77:8"
},
"nodeType": "YulFunctionCall",
"src": "2243:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "2243:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2216:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2225:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2212:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2212:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2237:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2208:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2208:32:8"
},
"nodeType": "YulIf",
"src": "2205:119:8"
},
{
"nodeType": "YulBlock",
"src": "2334:117:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2349:15:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2363:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2353:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2378:63:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2413:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2424:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2409:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2409:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2433:7:8"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "2388:20:8"
},
"nodeType": "YulFunctionCall",
"src": "2388:53:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2378:6:8"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "2461:118:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2476:16:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2490:2:8",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2480:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2506:63:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2541:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2552:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2537:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2537:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2561:7:8"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "2516:20:8"
},
"nodeType": "YulFunctionCall",
"src": "2516:53:8"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2506:6:8"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2157:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2168:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2180:6:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2188:6:8",
"type": ""
}
],
"src": "2112:474:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2672:99:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2716:6:8"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2724:3:8"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "2682:33:8"
},
"nodeType": "YulFunctionCall",
"src": "2682:46:8"
},
"nodeType": "YulExpressionStatement",
"src": "2682:46:8"
},
{
"nodeType": "YulAssignment",
"src": "2737:28:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2755:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2760:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2751:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2751:14:8"
},
"variableNames": [
{
"name": "updatedPos",
"nodeType": "YulIdentifier",
"src": "2737:10:8"
}
]
}
]
},
"name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2645:6:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2653:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "updatedPos",
"nodeType": "YulTypedName",
"src": "2661:10:8",
"type": ""
}
],
"src": "2592:179:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2842:53:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2859:3:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2882:5:8"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "2864:17:8"
},
"nodeType": "YulFunctionCall",
"src": "2864:24:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2852:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2852:37:8"
},
"nodeType": "YulExpressionStatement",
"src": "2852:37:8"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2830:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2837:3:8",
"type": ""
}
],
"src": "2777:118:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3055:608:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3065:68:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3127:5:8"
}
],
"functionName": {
"name": "array_length_t_array$_t_uint256_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "3079:47:8"
},
"nodeType": "YulFunctionCall",
"src": "3079:54:8"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3069:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3142:93:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3223:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3228:6:8"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "3149:73:8"
},
"nodeType": "YulFunctionCall",
"src": "3149:86:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3142:3:8"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3244:71:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3309:5:8"
}
],
"functionName": {
"name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "3259:49:8"
},
"nodeType": "YulFunctionCall",
"src": "3259:56:8"
},
"variables": [
{
"name": "baseRef",
"nodeType": "YulTypedName",
"src": "3248:7:8",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3324:21:8",
"value": {
"name": "baseRef",
"nodeType": "YulIdentifier",
"src": "3338:7:8"
},
"variables": [
{
"name": "srcPtr",
"nodeType": "YulTypedName",
"src": "3328:6:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3414:224:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3428:34:8",
"value": {
"arguments": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "3455:6:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "3449:5:8"
},
"nodeType": "YulFunctionCall",
"src": "3449:13:8"
},
"variables": [
{
"name": "elementValue0",
"nodeType": "YulTypedName",
"src": "3432:13:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3475:70:8",
"value": {
"arguments": [
{
"name": "elementValue0",
"nodeType": "YulIdentifier",
"src": "3526:13:8"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3541:3:8"
}
],
"functionName": {
"name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "3482:43:8"
},
"nodeType": "YulFunctionCall",
"src": "3482:63:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3475:3:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3558:70:8",
"value": {
"arguments": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "3621:6:8"
}
],
"functionName": {
"name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "3568:52:8"
},
"nodeType": "YulFunctionCall",
"src": "3568:60:8"
},
"variableNames": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "3558:6:8"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3376:1:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3379:6:8"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "3373:2:8"
},
"nodeType": "YulFunctionCall",
"src": "3373:13:8"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "3387:18:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3389:14:8",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3398:1:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3401:1:8",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3394:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3394:9:8"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3389:1:8"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "3358:14:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3360:10:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3369:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "3364:1:8",
"type": ""
}
]
}
]
},
"src": "3354:284:8"
},
{
"nodeType": "YulAssignment",
"src": "3647:10:8",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3654:3:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3647:3:8"
}
]
}
]
},
"name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3034:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3041:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3050:3:8",
"type": ""
}
],
"src": "2931:732:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3734:53:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3751:3:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3774:5:8"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "3756:17:8"
},
"nodeType": "YulFunctionCall",
"src": "3756:24:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3744:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3744:37:8"
},
"nodeType": "YulExpressionStatement",
"src": "3744:37:8"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3722:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3729:3:8",
"type": ""
}
],
"src": "3669:118:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3876:74:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3893:3:8"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3936:5:8"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "3918:17:8"
},
"nodeType": "YulFunctionCall",
"src": "3918:24:8"
}
],
"functionName": {
"name": "leftAlign_t_bytes32",
"nodeType": "YulIdentifier",
"src": "3898:19:8"
},
"nodeType": "YulFunctionCall",
"src": "3898:45:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3886:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3886:58:8"
},
"nodeType": "YulExpressionStatement",
"src": "3886:58:8"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3864:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3871:3:8",
"type": ""
}
],
"src": "3793:157:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4046:270:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4056:52:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4102:5:8"
}
],
"functionName": {
"name": "array_length_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "4070:31:8"
},
"nodeType": "YulFunctionCall",
"src": "4070:38:8"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4060:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4117:77:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4182:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4187:6:8"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "4124:57:8"
},
"nodeType": "YulFunctionCall",
"src": "4124:70:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4117:3:8"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4229:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4236:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4225:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4225:16:8"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4243:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4248:6:8"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "4203:21:8"
},
"nodeType": "YulFunctionCall",
"src": "4203:52:8"
},
"nodeType": "YulExpressionStatement",
"src": "4203:52:8"
},
{
"nodeType": "YulAssignment",
"src": "4264:46:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4275:3:8"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4302:6:8"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "4280:21:8"
},
"nodeType": "YulFunctionCall",
"src": "4280:29:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4271:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4271:39:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4264:3:8"
}
]
}
]
},
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4027:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4034:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4042:3:8",
"type": ""
}
],
"src": "3956:360:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4430:265:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4440:52:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4486:5:8"
}
],
"functionName": {
"name": "array_length_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "4454:31:8"
},
"nodeType": "YulFunctionCall",
"src": "4454:38:8"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4444:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4501:95:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4584:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4589:6:8"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "4508:75:8"
},
"nodeType": "YulFunctionCall",
"src": "4508:88:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4501:3:8"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4631:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4638:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4627:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4627:16:8"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4645:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4650:6:8"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "4605:21:8"
},
"nodeType": "YulFunctionCall",
"src": "4605:52:8"
},
"nodeType": "YulExpressionStatement",
"src": "4605:52:8"
},
{
"nodeType": "YulAssignment",
"src": "4666:23:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4677:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4682:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4673:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4673:16:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4666:3:8"
}
]
}
]
},
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4411:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4418:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4426:3:8",
"type": ""
}
],
"src": "4322:373:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4780:80:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4797:3:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4847:5:8"
}
],
"functionName": {
"name": "convert_t_contract$_IERC20_$910_to_t_address",
"nodeType": "YulIdentifier",
"src": "4802:44:8"
},
"nodeType": "YulFunctionCall",
"src": "4802:51:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4790:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4790:64:8"
},
"nodeType": "YulExpressionStatement",
"src": "4790:64:8"
}
]
},
"name": "abi_encode_t_contract$_IERC20_$910_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4768:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4775:3:8",
"type": ""
}
],
"src": "4701:159:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5012:220:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5022:74:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5088:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5093:2:8",
"type": "",
"value": "28"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5029:58:8"
},
"nodeType": "YulFunctionCall",
"src": "5029:67:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5022:3:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5194:3:8"
}
],
"functionName": {
"name": "store_literal_in_memory_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27",
"nodeType": "YulIdentifier",
"src": "5105:88:8"
},
"nodeType": "YulFunctionCall",
"src": "5105:93:8"
},
"nodeType": "YulExpressionStatement",
"src": "5105:93:8"
},
{
"nodeType": "YulAssignment",
"src": "5207:19:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5218:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5223:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5214:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5214:12:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "5207:3:8"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5000:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5008:3:8",
"type": ""
}
],
"src": "4866:366:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5384:220:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5394:74:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5460:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5465:2:8",
"type": "",
"value": "43"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5401:58:8"
},
"nodeType": "YulFunctionCall",
"src": "5401:67:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5394:3:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5566:3:8"
}
],
"functionName": {
"name": "store_literal_in_memory_4bb3a9958b8c6e95beec57f36a0352593367170b4a84072c44b036bee3a36e74",
"nodeType": "YulIdentifier",
"src": "5477:88:8"
},
"nodeType": "YulFunctionCall",
"src": "5477:93:8"
},
"nodeType": "YulExpressionStatement",
"src": "5477:93:8"
},
{
"nodeType": "YulAssignment",
"src": "5579:19:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5590:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5595:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5586:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5586:12:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "5579:3:8"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_4bb3a9958b8c6e95beec57f36a0352593367170b4a84072c44b036bee3a36e74_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5372:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5380:3:8",
"type": ""
}
],
"src": "5238:366:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5756:220:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5766:74:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5832:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5837:2:8",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5773:58:8"
},
"nodeType": "YulFunctionCall",
"src": "5773:67:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5766:3:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5938:3:8"
}
],
"functionName": {
"name": "store_literal_in_memory_aa31d97d949424087cac59e348924584a13a8784d3590fa798a0967391035445",
"nodeType": "YulIdentifier",
"src": "5849:88:8"
},
"nodeType": "YulFunctionCall",
"src": "5849:93:8"
},
"nodeType": "YulExpressionStatement",
"src": "5849:93:8"
},
{
"nodeType": "YulAssignment",
"src": "5951:19:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5962:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5967:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5958:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5958:12:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "5951:3:8"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_aa31d97d949424087cac59e348924584a13a8784d3590fa798a0967391035445_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5744:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5752:3:8",
"type": ""
}
],
"src": "5610:366:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6128:220:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6138:74:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6204:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6209:2:8",
"type": "",
"value": "17"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "6145:58:8"
},
"nodeType": "YulFunctionCall",
"src": "6145:67:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6138:3:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6310:3:8"
}
],
"functionName": {
"name": "store_literal_in_memory_f3c22969426f4d47b02f60e89833068c492296345fe126023802bc7df28e195a",
"nodeType": "YulIdentifier",
"src": "6221:88:8"
},
"nodeType": "YulFunctionCall",
"src": "6221:93:8"
},
"nodeType": "YulExpressionStatement",
"src": "6221:93:8"
},
{
"nodeType": "YulAssignment",
"src": "6323:19:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6334:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6339:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6330:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6330:12:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "6323:3:8"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_f3c22969426f4d47b02f60e89833068c492296345fe126023802bc7df28e195a_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6116:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "6124:3:8",
"type": ""
}
],
"src": "5982:366:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6409:53:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6426:3:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6449:5:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "6431:17:8"
},
"nodeType": "YulFunctionCall",
"src": "6431:24:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6419:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6419:37:8"
},
"nodeType": "YulExpressionStatement",
"src": "6419:37:8"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6397:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6404:3:8",
"type": ""
}
],
"src": "6354:108:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6533:53:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6550:3:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6573:5:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "6555:17:8"
},
"nodeType": "YulFunctionCall",
"src": "6555:24:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6543:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6543:37:8"
},
"nodeType": "YulExpressionStatement",
"src": "6543:37:8"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6521:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6528:3:8",
"type": ""
}
],
"src": "6468:118:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6675:74:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6692:3:8"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6735:5:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "6717:17:8"
},
"nodeType": "YulFunctionCall",
"src": "6717:24:8"
}
],
"functionName": {
"name": "leftAlign_t_uint256",
"nodeType": "YulIdentifier",
"src": "6697:19:8"
},
"nodeType": "YulFunctionCall",
"src": "6697:45:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6685:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6685:58:8"
},
"nodeType": "YulExpressionStatement",
"src": "6685:58:8"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6663:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6670:3:8",
"type": ""
}
],
"src": "6592:157:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6899:253:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6972:6:8"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6981:3:8"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "6910:61:8"
},
"nodeType": "YulFunctionCall",
"src": "6910:75:8"
},
"nodeType": "YulExpressionStatement",
"src": "6910:75:8"
},
{
"nodeType": "YulAssignment",
"src": "6994:19:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7005:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7010:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7001:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7001:12:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6994:3:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "7085:6:8"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7094:3:8"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "7023:61:8"
},
"nodeType": "YulFunctionCall",
"src": "7023:75:8"
},
"nodeType": "YulExpressionStatement",
"src": "7023:75:8"
},
{
"nodeType": "YulAssignment",
"src": "7107:19:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7118:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7123:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7114:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7114:12:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7107:3:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7136:10:8",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7143:3:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "7136:3:8"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_bytes32_t_uint256__to_t_bytes32_t_uint256__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6870:3:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "6876:6:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6884:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "6895:3:8",
"type": ""
}
],
"src": "6755:397:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7292:137:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7303:100:8",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7390:6:8"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7399:3:8"
}
],
"functionName": {
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "7310:79:8"
},
"nodeType": "YulFunctionCall",
"src": "7310:93:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7303:3:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7413:10:8",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7420:3:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "7413:3:8"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7271:3:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7277:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7288:3:8",
"type": ""
}
],
"src": "7158:271:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7533:124:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7543:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7555:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7566:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7551:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7551:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7543:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7623:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7636:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7647:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7632:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7632:17:8"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "7579:43:8"
},
"nodeType": "YulFunctionCall",
"src": "7579:71:8"
},
"nodeType": "YulExpressionStatement",
"src": "7579:71:8"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7505:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7517:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7528:4:8",
"type": ""
}
],
"src": "7435:222:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7789:206:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7799:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7811:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7822:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7807:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7807:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7799:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7879:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7892:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7903:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7888:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7888:17:8"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "7835:43:8"
},
"nodeType": "YulFunctionCall",
"src": "7835:71:8"
},
"nodeType": "YulExpressionStatement",
"src": "7835:71:8"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "7960:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7973:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7984:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7969:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7969:18:8"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "7916:43:8"
},
"nodeType": "YulFunctionCall",
"src": "7916:72:8"
},
"nodeType": "YulExpressionStatement",
"src": "7916:72:8"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7753:9:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "7765:6:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7773:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7784:4:8",
"type": ""
}
],
"src": "7663:332:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8173:357:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8183:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8195:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8206:2:8",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8191:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8191:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8183:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8263:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8276:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8287:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8272:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8272:17:8"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "8219:43:8"
},
"nodeType": "YulFunctionCall",
"src": "8219:71:8"
},
"nodeType": "YulExpressionStatement",
"src": "8219:71:8"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "8344:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8357:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8368:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8353:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8353:18:8"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "8300:43:8"
},
"nodeType": "YulFunctionCall",
"src": "8300:72:8"
},
"nodeType": "YulExpressionStatement",
"src": "8300:72:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8393:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8404:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8389:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8389:18:8"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8413:4:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8419:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "8409:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8409:20:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8382:6:8"
},
"nodeType": "YulFunctionCall",
"src": "8382:48:8"
},
"nodeType": "YulExpressionStatement",
"src": "8382:48:8"
},
{
"nodeType": "YulAssignment",
"src": "8439:84:8",
"value": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "8509:6:8"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8518:4:8"
}
],
"functionName": {
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "8447:61:8"
},
"nodeType": "YulFunctionCall",
"src": "8447:76:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8439:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8129:9:8",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "8141:6:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "8149:6:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8157:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "8168:4:8",
"type": ""
}
],
"src": "8001:529:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8684:225:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8694:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8706:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8717:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8702:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8702:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8694:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8741:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8752:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8737:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8737:17:8"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8760:4:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8766:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "8756:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8756:20:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8730:6:8"
},
"nodeType": "YulFunctionCall",
"src": "8730:47:8"
},
"nodeType": "YulExpressionStatement",
"src": "8730:47:8"
},
{
"nodeType": "YulAssignment",
"src": "8786:116:8",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8888:6:8"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8897:4:8"
}
],
"functionName": {
"name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "8794:93:8"
},
"nodeType": "YulFunctionCall",
"src": "8794:108:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8786:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8656:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8668:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "8679:4:8",
"type": ""
}
],
"src": "8536:373:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9013:124:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9023:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9035:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9046:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9031:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9031:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9023:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "9103:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9116:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9127:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9112:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9112:17:8"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "9059:43:8"
},
"nodeType": "YulFunctionCall",
"src": "9059:71:8"
},
"nodeType": "YulExpressionStatement",
"src": "9059:71:8"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8985:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8997:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "9008:4:8",
"type": ""
}
],
"src": "8915:222:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9269:206:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9279:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9291:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9302:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9287:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9287:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9279:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "9359:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9372:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9383:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9368:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9368:17:8"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "9315:43:8"
},
"nodeType": "YulFunctionCall",
"src": "9315:71:8"
},
"nodeType": "YulExpressionStatement",
"src": "9315:71:8"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "9440:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9453:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9464:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9449:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9449:18:8"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "9396:43:8"
},
"nodeType": "YulFunctionCall",
"src": "9396:72:8"
},
"nodeType": "YulExpressionStatement",
"src": "9396:72:8"
}
]
},
"name": "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9233:9:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "9245:6:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "9253:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "9264:4:8",
"type": ""
}
],
"src": "9143:332:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9663:371:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9673:27:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9685:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9696:3:8",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9681:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9681:19:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9673:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "9754:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9767:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9778:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9763:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9763:17:8"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "9710:43:8"
},
"nodeType": "YulFunctionCall",
"src": "9710:71:8"
},
"nodeType": "YulExpressionStatement",
"src": "9710:71:8"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "9835:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9848:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9859:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9844:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9844:18:8"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "9791:43:8"
},
"nodeType": "YulFunctionCall",
"src": "9791:72:8"
},
"nodeType": "YulExpressionStatement",
"src": "9791:72:8"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "9917:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9930:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9941:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9926:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9926:18:8"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "9873:43:8"
},
"nodeType": "YulFunctionCall",
"src": "9873:72:8"
},
"nodeType": "YulExpressionStatement",
"src": "9873:72:8"
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "9999:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10012:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10023:2:8",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10008:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10008:18:8"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "9955:43:8"
},
"nodeType": "YulFunctionCall",
"src": "9955:72:8"
},
"nodeType": "YulExpressionStatement",
"src": "9955:72:8"
}
]
},
"name": "abi_encode_tuple_t_bytes32_t_uint256_t_address_t_uint256__to_t_bytes32_t_uint256_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9611:9:8",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "9623:6:8",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "9631:6:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "9639:6:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "9647:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "9658:4:8",
"type": ""
}
],
"src": "9481:553:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10152:138:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10162:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10174:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10185:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10170:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10170:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10162:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "10256:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10269:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10280:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10265:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10265:17:8"
}
],
"functionName": {
"name": "abi_encode_t_contract$_IERC20_$910_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "10198:57:8"
},
"nodeType": "YulFunctionCall",
"src": "10198:85:8"
},
"nodeType": "YulExpressionStatement",
"src": "10198:85:8"
}
]
},
"name": "abi_encode_tuple_t_contract$_IERC20_$910__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10124:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "10136:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10147:4:8",
"type": ""
}
],
"src": "10040:250:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10467:248:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10477:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10489:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10500:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10485:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10485:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10477:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10524:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10535:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10520:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10520:17:8"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10543:4:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10549:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "10539:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10539:20:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10513:6:8"
},
"nodeType": "YulFunctionCall",
"src": "10513:47:8"
},
"nodeType": "YulExpressionStatement",
"src": "10513:47:8"
},
{
"nodeType": "YulAssignment",
"src": "10569:139:8",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10703:4:8"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "10577:124:8"
},
"nodeType": "YulFunctionCall",
"src": "10577:131:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10569:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10447:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10462:4:8",
"type": ""
}
],
"src": "10296:419:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10892:248:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10902:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10914:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10925:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10910:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10910:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10902:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10949:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10960:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10945:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10945:17:8"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10968:4:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10974:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "10964:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10964:20:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10938:6:8"
},
"nodeType": "YulFunctionCall",
"src": "10938:47:8"
},
"nodeType": "YulExpressionStatement",
"src": "10938:47:8"
},
{
"nodeType": "YulAssignment",
"src": "10994:139:8",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11128:4:8"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_4bb3a9958b8c6e95beec57f36a0352593367170b4a84072c44b036bee3a36e74_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "11002:124:8"
},
"nodeType": "YulFunctionCall",
"src": "11002:131:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10994:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_4bb3a9958b8c6e95beec57f36a0352593367170b4a84072c44b036bee3a36e74__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10872:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10887:4:8",
"type": ""
}
],
"src": "10721:419:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11317:248:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11327:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11339:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11350:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11335:3:8"
},
"nodeType": "YulFunctionCall",
"src": "11335:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11327:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11374:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11385:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11370:3:8"
},
"nodeType": "YulFunctionCall",
"src": "11370:17:8"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11393:4:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11399:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "11389:3:8"
},
"nodeType": "YulFunctionCall",
"src": "11389:20:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11363:6:8"
},
"nodeType": "YulFunctionCall",
"src": "11363:47:8"
},
"nodeType": "YulExpressionStatement",
"src": "11363:47:8"
},
{
"nodeType": "YulAssignment",
"src": "11419:139:8",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11553:4:8"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_aa31d97d949424087cac59e348924584a13a8784d3590fa798a0967391035445_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "11427:124:8"
},
"nodeType": "YulFunctionCall",
"src": "11427:131:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11419:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_aa31d97d949424087cac59e348924584a13a8784d3590fa798a0967391035445__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "11297:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "11312:4:8",
"type": ""
}
],
"src": "11146:419:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11742:248:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11752:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11764:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11775:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11760:3:8"
},
"nodeType": "YulFunctionCall",
"src": "11760:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11752:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11799:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11810:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11795:3:8"
},
"nodeType": "YulFunctionCall",
"src": "11795:17:8"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11818:4:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11824:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "11814:3:8"
},
"nodeType": "YulFunctionCall",
"src": "11814:20:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11788:6:8"
},
"nodeType": "YulFunctionCall",
"src": "11788:47:8"
},
"nodeType": "YulExpressionStatement",
"src": "11788:47:8"
},
{
"nodeType": "YulAssignment",
"src": "11844:139:8",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11978:4:8"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_f3c22969426f4d47b02f60e89833068c492296345fe126023802bc7df28e195a_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "11852:124:8"
},
"nodeType": "YulFunctionCall",
"src": "11852:131:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "11844:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_f3c22969426f4d47b02f60e89833068c492296345fe126023802bc7df28e195a__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "11722:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "11737:4:8",
"type": ""
}
],
"src": "11571:419:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12094:124:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12104:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12116:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12127:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12112:3:8"
},
"nodeType": "YulFunctionCall",
"src": "12112:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "12104:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "12184:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12197:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12208:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12193:3:8"
},
"nodeType": "YulFunctionCall",
"src": "12193:17:8"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "12140:43:8"
},
"nodeType": "YulFunctionCall",
"src": "12140:71:8"
},
"nodeType": "YulExpressionStatement",
"src": "12140:71:8"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "12066:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "12078:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "12089:4:8",
"type": ""
}
],
"src": "11996:222:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12350:206:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12360:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12372:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12383:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12368:3:8"
},
"nodeType": "YulFunctionCall",
"src": "12368:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "12360:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "12440:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12453:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12464:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12449:3:8"
},
"nodeType": "YulFunctionCall",
"src": "12449:17:8"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "12396:43:8"
},
"nodeType": "YulFunctionCall",
"src": "12396:71:8"
},
"nodeType": "YulExpressionStatement",
"src": "12396:71:8"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "12521:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12534:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12545:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12530:3:8"
},
"nodeType": "YulFunctionCall",
"src": "12530:18:8"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "12477:43:8"
},
"nodeType": "YulFunctionCall",
"src": "12477:72:8"
},
"nodeType": "YulExpressionStatement",
"src": "12477:72:8"
}
]
},
"name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "12314:9:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "12326:6:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "12334:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "12345:4:8",
"type": ""
}
],
"src": "12224:332:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12602:35:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12612:19:8",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12628:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "12622:5:8"
},
"nodeType": "YulFunctionCall",
"src": "12622:9:8"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "12612:6:8"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "12595:6:8",
"type": ""
}
],
"src": "12562:75:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12715:60:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12725:11:8",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "12733:3:8"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "12725:4:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "12746:22:8",
"value": {
"arguments": [
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "12758:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12763:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12754:3:8"
},
"nodeType": "YulFunctionCall",
"src": "12754:14:8"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "12746:4:8"
}
]
}
]
},
"name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "12702:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "12710:4:8",
"type": ""
}
],
"src": "12643:132:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12855:40:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12866:22:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "12882:5:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "12876:5:8"
},
"nodeType": "YulFunctionCall",
"src": "12876:12:8"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "12866:6:8"
}
]
}
]
},
"name": "array_length_t_array$_t_uint256_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "12838:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "12848:6:8",
"type": ""
}
],
"src": "12781:114:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12959:40:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12970:22:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "12986:5:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "12980:5:8"
},
"nodeType": "YulFunctionCall",
"src": "12980:12:8"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "12970:6:8"
}
]
}
]
},
"name": "array_length_t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "12942:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "12952:6:8",
"type": ""
}
],
"src": "12901:98:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13080:38:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13090:22:8",
"value": {
"arguments": [
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "13102:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13107:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13098:3:8"
},
"nodeType": "YulFunctionCall",
"src": "13098:14:8"
},
"variableNames": [
{
"name": "next",
"nodeType": "YulIdentifier",
"src": "13090:4:8"
}
]
}
]
},
"name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "13067:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "next",
"nodeType": "YulTypedName",
"src": "13075:4:8",
"type": ""
}
],
"src": "13005:113:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13235:73:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13252:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "13257:6:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13245:6:8"
},
"nodeType": "YulFunctionCall",
"src": "13245:19:8"
},
"nodeType": "YulExpressionStatement",
"src": "13245:19:8"
},
{
"nodeType": "YulAssignment",
"src": "13273:29:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13292:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13297:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13288:3:8"
},
"nodeType": "YulFunctionCall",
"src": "13288:14:8"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "13273:11:8"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "13207:3:8",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "13212:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "13223:11:8",
"type": ""
}
],
"src": "13124:184:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13409:73:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13426:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "13431:6:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13419:6:8"
},
"nodeType": "YulFunctionCall",
"src": "13419:19:8"
},
"nodeType": "YulExpressionStatement",
"src": "13419:19:8"
},
{
"nodeType": "YulAssignment",
"src": "13447:29:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13466:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13471:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13462:3:8"
},
"nodeType": "YulFunctionCall",
"src": "13462:14:8"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "13447:11:8"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "13381:3:8",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "13386:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "13397:11:8",
"type": ""
}
],
"src": "13314:168:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13601:34:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13611:18:8",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13626:3:8"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "13611:11:8"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "13573:3:8",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "13578:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "13589:11:8",
"type": ""
}
],
"src": "13488:147:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13737:73:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13754:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "13759:6:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13747:6:8"
},
"nodeType": "YulFunctionCall",
"src": "13747:19:8"
},
"nodeType": "YulExpressionStatement",
"src": "13747:19:8"
},
{
"nodeType": "YulAssignment",
"src": "13775:29:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13794:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13799:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13790:3:8"
},
"nodeType": "YulFunctionCall",
"src": "13790:14:8"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "13775:11:8"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "13709:3:8",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "13714:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "13725:11:8",
"type": ""
}
],
"src": "13641:169:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13860:261:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13870:25:8",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13893:1:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "13875:17:8"
},
"nodeType": "YulFunctionCall",
"src": "13875:20:8"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13870:1:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "13904:25:8",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13927:1:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "13909:17:8"
},
"nodeType": "YulFunctionCall",
"src": "13909:20:8"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13904:1:8"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "14067:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "14069:16:8"
},
"nodeType": "YulFunctionCall",
"src": "14069:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "14069:18:8"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13988:1:8"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13995:66:8",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "14063:1:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "13991:3:8"
},
"nodeType": "YulFunctionCall",
"src": "13991:74:8"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "13985:2:8"
},
"nodeType": "YulFunctionCall",
"src": "13985:81:8"
},
"nodeType": "YulIf",
"src": "13982:107:8"
},
{
"nodeType": "YulAssignment",
"src": "14099:16:8",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "14110:1:8"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "14113:1:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14106:3:8"
},
"nodeType": "YulFunctionCall",
"src": "14106:9:8"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "14099:3:8"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "13847:1:8",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "13850:1:8",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "13856:3:8",
"type": ""
}
],
"src": "13816:305:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14172:51:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14182:35:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "14211:5:8"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "14193:17:8"
},
"nodeType": "YulFunctionCall",
"src": "14193:24:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "14182:7:8"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "14154:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "14164:7:8",
"type": ""
}
],
"src": "14127:96:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14271:48:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14281:32:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "14306:5:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "14299:6:8"
},
"nodeType": "YulFunctionCall",
"src": "14299:13:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "14292:6:8"
},
"nodeType": "YulFunctionCall",
"src": "14292:21:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "14281:7:8"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "14253:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "14263:7:8",
"type": ""
}
],
"src": "14229:90:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14370:32:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14380:16:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "14391:5:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "14380:7:8"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "14352:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "14362:7:8",
"type": ""
}
],
"src": "14325:77:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14453:81:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14463:65:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "14478:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14485:42:8",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "14474:3:8"
},
"nodeType": "YulFunctionCall",
"src": "14474:54:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "14463:7:8"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "14435:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "14445:7:8",
"type": ""
}
],
"src": "14408:126:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14585:32:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14595:16:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "14606:5:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "14595:7:8"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "14567:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "14577:7:8",
"type": ""
}
],
"src": "14540:77:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14697:66:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14707:50:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "14751:5:8"
}
],
"functionName": {
"name": "convert_t_uint160_to_t_address",
"nodeType": "YulIdentifier",
"src": "14720:30:8"
},
"nodeType": "YulFunctionCall",
"src": "14720:37:8"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "14707:9:8"
}
]
}
]
},
"name": "convert_t_contract$_IERC20_$910_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "14677:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "14687:9:8",
"type": ""
}
],
"src": "14623:140:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14829:66:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14839:50:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "14883:5:8"
}
],
"functionName": {
"name": "convert_t_uint160_to_t_uint160",
"nodeType": "YulIdentifier",
"src": "14852:30:8"
},
"nodeType": "YulFunctionCall",
"src": "14852:37:8"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "14839:9:8"
}
]
}
]
},
"name": "convert_t_uint160_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "14809:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "14819:9:8",
"type": ""
}
],
"src": "14769:126:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14961:53:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14971:37:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "15002:5:8"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "14984:17:8"
},
"nodeType": "YulFunctionCall",
"src": "14984:24:8"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "14971:9:8"
}
]
}
]
},
"name": "convert_t_uint160_to_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "14941:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "14951:9:8",
"type": ""
}
],
"src": "14901:113:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15069:258:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "15079:10:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "15088:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "15083:1:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "15148:63:8",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "15173:3:8"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "15178:1:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15169:3:8"
},
"nodeType": "YulFunctionCall",
"src": "15169:11:8"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "15192:3:8"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "15197:1:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15188:3:8"
},
"nodeType": "YulFunctionCall",
"src": "15188:11:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "15182:5:8"
},
"nodeType": "YulFunctionCall",
"src": "15182:18:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15162:6:8"
},
"nodeType": "YulFunctionCall",
"src": "15162:39:8"
},
"nodeType": "YulExpressionStatement",
"src": "15162:39:8"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "15109:1:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "15112:6:8"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "15106:2:8"
},
"nodeType": "YulFunctionCall",
"src": "15106:13:8"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "15120:19:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15122:15:8",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "15131:1:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15134:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15127:3:8"
},
"nodeType": "YulFunctionCall",
"src": "15127:10:8"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "15122:1:8"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "15102:3:8",
"statements": []
},
"src": "15098:113:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15245:76:8",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "15295:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "15300:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15291:3:8"
},
"nodeType": "YulFunctionCall",
"src": "15291:16:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15309:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15284:6:8"
},
"nodeType": "YulFunctionCall",
"src": "15284:27:8"
},
"nodeType": "YulExpressionStatement",
"src": "15284:27:8"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "15226:1:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "15229:6:8"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "15223:2:8"
},
"nodeType": "YulFunctionCall",
"src": "15223:13:8"
},
"nodeType": "YulIf",
"src": "15220:101:8"
}
]
},
"name": "copy_memory_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "15051:3:8",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "15056:3:8",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "15061:6:8",
"type": ""
}
],
"src": "15020:307:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15376:190:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15386:33:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "15413:5:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "15395:17:8"
},
"nodeType": "YulFunctionCall",
"src": "15395:24:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "15386:5:8"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "15509:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "15511:16:8"
},
"nodeType": "YulFunctionCall",
"src": "15511:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "15511:18:8"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "15434:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15441:66:8",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "15431:2:8"
},
"nodeType": "YulFunctionCall",
"src": "15431:77:8"
},
"nodeType": "YulIf",
"src": "15428:103:8"
},
{
"nodeType": "YulAssignment",
"src": "15540:20:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "15551:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15558:1:8",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15547:3:8"
},
"nodeType": "YulFunctionCall",
"src": "15547:13:8"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "15540:3:8"
}
]
}
]
},
"name": "increment_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "15362:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "15372:3:8",
"type": ""
}
],
"src": "15333:233:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15619:32:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15629:16:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "15640:5:8"
},
"variableNames": [
{
"name": "aligned",
"nodeType": "YulIdentifier",
"src": "15629:7:8"
}
]
}
]
},
"name": "leftAlign_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "15601:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "aligned",
"nodeType": "YulTypedName",
"src": "15611:7:8",
"type": ""
}
],
"src": "15572:79:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15704:32:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15714:16:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "15725:5:8"
},
"variableNames": [
{
"name": "aligned",
"nodeType": "YulIdentifier",
"src": "15714:7:8"
}
]
}
]
},
"name": "leftAlign_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "15686:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "aligned",
"nodeType": "YulTypedName",
"src": "15696:7:8",
"type": ""
}
],
"src": "15657:79:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15770:152:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15787:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15790:77:8",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15780:6:8"
},
"nodeType": "YulFunctionCall",
"src": "15780:88:8"
},
"nodeType": "YulExpressionStatement",
"src": "15780:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15884:1:8",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15887:4:8",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15877:6:8"
},
"nodeType": "YulFunctionCall",
"src": "15877:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "15877:15:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15908:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15911:4:8",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "15901:6:8"
},
"nodeType": "YulFunctionCall",
"src": "15901:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "15901:15:8"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "15742:180:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15956:152:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15973:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15976:77:8",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15966:6:8"
},
"nodeType": "YulFunctionCall",
"src": "15966:88:8"
},
"nodeType": "YulExpressionStatement",
"src": "15966:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16070:1:8",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16073:4:8",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16063:6:8"
},
"nodeType": "YulFunctionCall",
"src": "16063:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "16063:15:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16094:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16097:4:8",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "16087:6:8"
},
"nodeType": "YulFunctionCall",
"src": "16087:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "16087:15:8"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "15928:180:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16142:152:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16159:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16162:77:8",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16152:6:8"
},
"nodeType": "YulFunctionCall",
"src": "16152:88:8"
},
"nodeType": "YulExpressionStatement",
"src": "16152:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16256:1:8",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16259:4:8",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16249:6:8"
},
"nodeType": "YulFunctionCall",
"src": "16249:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "16249:15:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16280:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16283:4:8",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "16273:6:8"
},
"nodeType": "YulFunctionCall",
"src": "16273:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "16273:15:8"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "16114:180:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16389:28:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16406:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16409:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "16399:6:8"
},
"nodeType": "YulFunctionCall",
"src": "16399:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "16399:12:8"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "16300:117:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16512:28:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16529:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16532:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "16522:6:8"
},
"nodeType": "YulFunctionCall",
"src": "16522:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "16522:12:8"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "16423:117:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16594:54:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "16604:38:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "16622:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16629:2:8",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16618:3:8"
},
"nodeType": "YulFunctionCall",
"src": "16618:14:8"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16638:2:8",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "16634:3:8"
},
"nodeType": "YulFunctionCall",
"src": "16634:7:8"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "16614:3:8"
},
"nodeType": "YulFunctionCall",
"src": "16614:28:8"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "16604:6:8"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "16577:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "16587:6:8",
"type": ""
}
],
"src": "16546:102:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16760:72:8",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "16782:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16790:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16778:3:8"
},
"nodeType": "YulFunctionCall",
"src": "16778:14:8"
},
{
"hexValue": "426f72696e6745524332303a205472616e73666572206661696c6564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "16794:30:8",
"type": "",
"value": "BoringERC20: Transfer failed"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16771:6:8"
},
"nodeType": "YulFunctionCall",
"src": "16771:54:8"
},
"nodeType": "YulExpressionStatement",
"src": "16771:54:8"
}
]
},
"name": "store_literal_in_memory_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "16752:6:8",
"type": ""
}
],
"src": "16654:178:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16944:124:8",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "16966:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16974:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16962:3:8"
},
"nodeType": "YulFunctionCall",
"src": "16962:14:8"
},
{
"hexValue": "4e6f7420656e6f756768204c494e4b202d2066696c6c20636f6e747261637420",
"kind": "string",
"nodeType": "YulLiteral",
"src": "16978:34:8",
"type": "",
"value": "Not enough LINK - fill contract "
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16955:6:8"
},
"nodeType": "YulFunctionCall",
"src": "16955:58:8"
},
"nodeType": "YulExpressionStatement",
"src": "16955:58:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "17034:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17042:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17030:3:8"
},
"nodeType": "YulFunctionCall",
"src": "17030:15:8"
},
{
"hexValue": "7769746820666175636574",
"kind": "string",
"nodeType": "YulLiteral",
"src": "17047:13:8",
"type": "",
"value": "with faucet"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17023:6:8"
},
"nodeType": "YulFunctionCall",
"src": "17023:38:8"
},
"nodeType": "YulExpressionStatement",
"src": "17023:38:8"
}
]
},
"name": "store_literal_in_memory_4bb3a9958b8c6e95beec57f36a0352593367170b4a84072c44b036bee3a36e74",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "16936:6:8",
"type": ""
}
],
"src": "16838:230:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17180:75:8",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "17202:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17210:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17198:3:8"
},
"nodeType": "YulFunctionCall",
"src": "17198:14:8"
},
{
"hexValue": "4f6e6c7920565246436f6f7264696e61746f722063616e2066756c66696c6c",
"kind": "string",
"nodeType": "YulLiteral",
"src": "17214:33:8",
"type": "",
"value": "Only VRFCoordinator can fulfill"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17191:6:8"
},
"nodeType": "YulFunctionCall",
"src": "17191:57:8"
},
"nodeType": "YulExpressionStatement",
"src": "17191:57:8"
}
]
},
"name": "store_literal_in_memory_aa31d97d949424087cac59e348924584a13a8784d3590fa798a0967391035445",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "17172:6:8",
"type": ""
}
],
"src": "17074:181:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17367:61:8",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "17389:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17397:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17385:3:8"
},
"nodeType": "YulFunctionCall",
"src": "17385:14:8"
},
{
"hexValue": "63616c6c6572206e6f742066756e646572",
"kind": "string",
"nodeType": "YulLiteral",
"src": "17401:19:8",
"type": "",
"value": "caller not funder"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17378:6:8"
},
"nodeType": "YulFunctionCall",
"src": "17378:43:8"
},
"nodeType": "YulExpressionStatement",
"src": "17378:43:8"
}
]
},
"name": "store_literal_in_memory_f3c22969426f4d47b02f60e89833068c492296345fe126023802bc7df28e195a",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "17359:6:8",
"type": ""
}
],
"src": "17261:167:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17474:76:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "17528:16:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17537:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17540:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "17530:6:8"
},
"nodeType": "YulFunctionCall",
"src": "17530:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "17530:12:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "17497:5:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "17519:5:8"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "17504:14:8"
},
"nodeType": "YulFunctionCall",
"src": "17504:21:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "17494:2:8"
},
"nodeType": "YulFunctionCall",
"src": "17494:32:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "17487:6:8"
},
"nodeType": "YulFunctionCall",
"src": "17487:40:8"
},
"nodeType": "YulIf",
"src": "17484:60:8"
}
]
},
"name": "validator_revert_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "17467:5:8",
"type": ""
}
],
"src": "17434:116:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17599:79:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "17656:16:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17665:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17668:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "17658:6:8"
},
"nodeType": "YulFunctionCall",
"src": "17658:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "17658:12:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "17622:5:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "17647:5:8"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "17629:17:8"
},
"nodeType": "YulFunctionCall",
"src": "17629:24:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "17619:2:8"
},
"nodeType": "YulFunctionCall",
"src": "17619:35:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "17612:6:8"
},
"nodeType": "YulFunctionCall",
"src": "17612:43:8"
},
"nodeType": "YulIf",
"src": "17609:63:8"
}
]
},
"name": "validator_revert_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "17592:5:8",
"type": ""
}
],
"src": "17556:122:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17727:79:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "17784:16:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17793:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17796:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "17786:6:8"
},
"nodeType": "YulFunctionCall",
"src": "17786:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "17786:12:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "17750:5:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "17775:5:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "17757:17:8"
},
"nodeType": "YulFunctionCall",
"src": "17757:24:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "17747:2:8"
},
"nodeType": "YulFunctionCall",
"src": "17747:35:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "17740:6:8"
},
"nodeType": "YulFunctionCall",
"src": "17740:43:8"
},
"nodeType": "YulIf",
"src": "17737:63:8"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "17720:5:8",
"type": ""
}
],
"src": "17684:122:8"
}
]
},
"contents": "{\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n abi_encode_t_uint256_to_t_uint256(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_uint256_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_bytes32(cleanup_t_bytes32(value)))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_t_contract$_IERC20_$910_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IERC20_$910_to_t_address(value))\n }\n\n function abi_encode_t_stringliteral_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 28)\n store_literal_in_memory_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_4bb3a9958b8c6e95beec57f36a0352593367170b4a84072c44b036bee3a36e74_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n store_literal_in_memory_4bb3a9958b8c6e95beec57f36a0352593367170b4a84072c44b036bee3a36e74(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_aa31d97d949424087cac59e348924584a13a8784d3590fa798a0967391035445_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n store_literal_in_memory_aa31d97d949424087cac59e348924584a13a8784d3590fa798a0967391035445(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_f3c22969426f4d47b02f60e89833068c492296345fe126023802bc7df28e195a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 17)\n store_literal_in_memory_f3c22969426f4d47b02f60e89833068c492296345fe126023802bc7df28e195a(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_uint256(cleanup_t_uint256(value)))\n }\n\n function abi_encode_tuple_packed_t_bytes32_t_uint256__to_t_bytes32_t_uint256__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack(value0, pos)\n pos := add(pos, 32)\n\n abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack(value1, pos)\n pos := add(pos, 32)\n\n end := pos\n }\n\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value2, tail)\n\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_bytes32_t_uint256_t_address_t_uint256__to_t_bytes32_t_uint256_t_address_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$910__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_IERC20_$910_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_stringliteral_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_4bb3a9958b8c6e95beec57f36a0352593367170b4a84072c44b036bee3a36e74__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_4bb3a9958b8c6e95beec57f36a0352593367170b4a84072c44b036bee3a36e74_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_aa31d97d949424087cac59e348924584a13a8784d3590fa798a0967391035445__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_aa31d97d949424087cac59e348924584a13a8784d3590fa798a0967391035445_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_f3c22969426f4d47b02f60e89833068c492296345fe126023802bc7df28e195a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_f3c22969426f4d47b02f60e89833068c492296345fe126023802bc7df28e195a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function array_length_t_array$_t_uint256_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function convert_t_contract$_IERC20_$910_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(value)\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function leftAlign_t_bytes32(value) -> aligned {\n aligned := value\n }\n\n function leftAlign_t_uint256(value) -> aligned {\n aligned := value\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function store_literal_in_memory_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27(memPtr) {\n\n mstore(add(memPtr, 0), \"BoringERC20: Transfer failed\")\n\n }\n\n function store_literal_in_memory_4bb3a9958b8c6e95beec57f36a0352593367170b4a84072c44b036bee3a36e74(memPtr) {\n\n mstore(add(memPtr, 0), \"Not enough LINK - fill contract \")\n\n mstore(add(memPtr, 32), \"with faucet\")\n\n }\n\n function store_literal_in_memory_aa31d97d949424087cac59e348924584a13a8784d3590fa798a0967391035445(memPtr) {\n\n mstore(add(memPtr, 0), \"Only VRFCoordinator can fulfill\")\n\n }\n\n function store_literal_in_memory_f3c22969426f4d47b02f60e89833068c492296345fe126023802bc7df28e195a(memPtr) {\n\n mstore(add(memPtr, 0), \"caller not funder\")\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 8,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {
"73": [
{
"length": 32,
"start": 1246
},
{
"length": 32,
"start": 1935
}
],
"75": [
{
"length": 32,
"start": 1047
},
{
"length": 32,
"start": 1995
}
]
},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100885760003560e01c806394985ddd1161005b57806394985ddd14610129578063bb0602cd14610145578063dbdff2c114610163578063f851a4401461018157610088565b80631b0c27da1461008d57806342619f66146100bd578063874b3afc146100db5780638dc654a21461010b575b600080fd5b6100a760048036038101906100a29190610a1a565b61019f565b6040516100b49190610ea4565b60405180910390f35b6100c56101c3565b6040516100d29190610ea4565b60405180910390f35b6100f560048036038101906100f09190610a74565b6101c9565b6040516101029190610d5e565b60405180910390f35b610113610286565b6040516101209190610ea4565b60405180910390f35b610143600480360381019061013e91906109da565b610415565b005b61014d6104b1565b60405161015a9190610e09565b60405180910390f35b61016b6104d7565b6040516101789190610d80565b60405180910390f35b610189610605565b6040516101969190610cdc565b60405180910390f35b600681815481106101af57600080fd5b906000526020600020016000915090505481565b60045481565b60608167ffffffffffffffff8111156101e5576101e4611125565b5b6040519080825280602002602001820160405280156102135781602001602082028036833780820191505090505b50905060005b8281101561027f578381604051602001610234929190610ebf565b6040516020818303038152906040528051906020012060001c8282815181106102605761025f6110f6565b5b60200260200101818152505080806102779061106a565b915050610219565b5092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030f90610e84565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103739190610cdc565b60206040518083038186803b15801561038b57600080fd5b505afa15801561039f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c39190610a47565b90506104123382600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661062b9092919063ffffffff16565b90565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049a90610e64565b60405180910390fd5b6104ad8282610780565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105359190610cdc565b60206040518083038186803b15801561054d57600080fd5b505afa158015610561573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105859190610a47565b10156105c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90610e44565b60405180910390fd5b6105d460015460025461078b565b905060068160001c908060018154018082558091505060019003906000526020600020016000909190919091505590565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b8585604051602401610660929190610cf7565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516106ca9190610cc5565b6000604051808303816000865af19150503d8060008114610707576040519150601f19603f3d011682016040523d82523d6000602084013e61070c565b606091505b509150915081801561073a575060008151148061073957508080602001905181019061073891906109ad565b5b5b610779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077090610e24565b60405180910390fd5b5050505050565b806004819055505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634000aea07f0000000000000000000000000000000000000000000000000000000000000000848660006040516020016107ff929190610d9b565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161082c93929190610d20565b602060405180830381600087803b15801561084657600080fd5b505af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e91906109ad565b5060006108a084600030600080898152602001908152602001600020546108ea565b90506001600080868152602001908152602001600020546108c19190610f59565b600080868152602001908152602001600020819055506108e18482610926565b91505092915050565b6000848484846040516020016109039493929190610dc4565b6040516020818303038152906040528051906020012060001c9050949350505050565b6000828260405160200161093b929190610c99565b60405160208183030381529060405280519060200120905092915050565b60008151905061096881611234565b92915050565b60008135905061097d8161124b565b92915050565b60008135905061099281611262565b92915050565b6000815190506109a781611262565b92915050565b6000602082840312156109c3576109c2611154565b5b60006109d184828501610959565b91505092915050565b600080604083850312156109f1576109f0611154565b5b60006109ff8582860161096e565b9250506020610a1085828601610983565b9150509250929050565b600060208284031215610a3057610a2f611154565b5b6000610a3e84828501610983565b91505092915050565b600060208284031215610a5d57610a5c611154565b5b6000610a6b84828501610998565b91505092915050565b60008060408385031215610a8b57610a8a611154565b5b6000610a9985828601610983565b9250506020610aaa85828601610983565b9150509250929050565b6000610ac08383610c64565b60208301905092915050565b610ad581610faf565b82525050565b6000610ae682610ef8565b610af08185610f1b565b9350610afb83610ee8565b8060005b83811015610b2c578151610b138882610ab4565b9750610b1e83610f0e565b925050600181019050610aff565b5085935050505092915050565b610b4281610fcd565b82525050565b610b59610b5482610fcd565b6110b3565b82525050565b6000610b6a82610f03565b610b748185610f2c565b9350610b84818560208601611037565b610b8d81611159565b840191505092915050565b6000610ba382610f03565b610bad8185610f3d565b9350610bbd818560208601611037565b80840191505092915050565b610bd281611001565b82525050565b6000610be5601c83610f48565b9150610bf08261116a565b602082019050919050565b6000610c08602b83610f48565b9150610c1382611193565b604082019050919050565b6000610c2b601f83610f48565b9150610c36826111e2565b602082019050919050565b6000610c4e601183610f48565b9150610c598261120b565b602082019050919050565b610c6d81610ff7565b82525050565b610c7c81610ff7565b82525050565b610c93610c8e82610ff7565b6110bd565b82525050565b6000610ca58285610b48565b602082019150610cb58284610c82565b6020820191508190509392505050565b6000610cd18284610b98565b915081905092915050565b6000602082019050610cf16000830184610acc565b92915050565b6000604082019050610d0c6000830185610acc565b610d196020830184610c73565b9392505050565b6000606082019050610d356000830186610acc565b610d426020830185610c73565b8181036040830152610d548184610b5f565b9050949350505050565b60006020820190508181036000830152610d788184610adb565b905092915050565b6000602082019050610d956000830184610b39565b92915050565b6000604082019050610db06000830185610b39565b610dbd6020830184610c73565b9392505050565b6000608082019050610dd96000830187610b39565b610de66020830186610c73565b610df36040830185610acc565b610e006060830184610c73565b95945050505050565b6000602082019050610e1e6000830184610bc9565b92915050565b60006020820190508181036000830152610e3d81610bd8565b9050919050565b60006020820190508181036000830152610e5d81610bfb565b9050919050565b60006020820190508181036000830152610e7d81610c1e565b9050919050565b60006020820190508181036000830152610e9d81610c41565b9050919050565b6000602082019050610eb96000830184610c73565b92915050565b6000604082019050610ed46000830185610c73565b610ee16020830184610c73565b9392505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610f6482610ff7565b9150610f6f83610ff7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610fa457610fa36110c7565b5b828201905092915050565b6000610fba82610fd7565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061100c82611013565b9050919050565b600061101e82611025565b9050919050565b600061103082610fd7565b9050919050565b60005b8381101561105557808201518184015260208101905061103a565b83811115611064576000848401525b50505050565b600061107582610ff7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156110a8576110a76110c7565b5b600182019050919050565b6000819050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f426f72696e6745524332303a205472616e73666572206661696c656400000000600082015250565b7f4e6f7420656e6f756768204c494e4b202d2066696c6c20636f6e74726163742060008201527f7769746820666175636574000000000000000000000000000000000000000000602082015250565b7f4f6e6c7920565246436f6f7264696e61746f722063616e2066756c66696c6c00600082015250565b7f63616c6c6572206e6f742066756e646572000000000000000000000000000000600082015250565b61123d81610fc1565b811461124857600080fd5b50565b61125481610fcd565b811461125f57600080fd5b50565b61126b81610ff7565b811461127657600080fd5b5056fea2646970667358221220e5fcfe6f89fe1f72b34f9119dd3f84a19bc87cd57d1cac907272144d0096b6d364736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x94985DDD GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x94985DDD EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0xBB0602CD EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xDBDFF2C1 EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x181 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x1B0C27DA EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x42619F66 EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x874B3AFC EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x8DC654A2 EQ PUSH2 0x10B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xA1A JUMP JUMPDEST PUSH2 0x19F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB4 SWAP2 SWAP1 PUSH2 0xEA4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0x1C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD2 SWAP2 SWAP1 PUSH2 0xEA4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF0 SWAP2 SWAP1 PUSH2 0xA74 JUMP JUMPDEST PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x102 SWAP2 SWAP1 PUSH2 0xD5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x113 PUSH2 0x286 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x120 SWAP2 SWAP1 PUSH2 0xEA4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x143 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x13E SWAP2 SWAP1 PUSH2 0x9DA JUMP JUMPDEST PUSH2 0x415 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14D PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15A SWAP2 SWAP1 PUSH2 0xE09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16B PUSH2 0x4D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x178 SWAP2 SWAP1 PUSH2 0xD80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x189 PUSH2 0x605 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x196 SWAP2 SWAP1 PUSH2 0xCDC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E5 JUMPI PUSH2 0x1E4 PUSH2 0x1125 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x213 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x27F JUMPI DUP4 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x234 SWAP3 SWAP2 SWAP1 PUSH2 0xEBF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x260 JUMPI PUSH2 0x25F PUSH2 0x10F6 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH2 0x277 SWAP1 PUSH2 0x106A JUMP JUMPDEST SWAP2 POP POP PUSH2 0x219 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x318 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30F SWAP1 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x373 SWAP2 SWAP1 PUSH2 0xCDC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C3 SWAP2 SWAP1 PUSH2 0xA47 JUMP JUMPDEST SWAP1 POP PUSH2 0x412 CALLER DUP3 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x62B SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x49A SWAP1 PUSH2 0xE64 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4AD DUP3 DUP3 PUSH2 0x780 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x535 SWAP2 SWAP1 PUSH2 0xCDC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x561 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x585 SWAP2 SWAP1 PUSH2 0xA47 JUMP JUMPDEST LT ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BD SWAP1 PUSH2 0xE44 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5D4 PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH2 0x78B JUMP JUMPDEST SWAP1 POP PUSH1 0x6 DUP2 PUSH1 0x0 SHR SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE SWAP1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x660 SWAP3 SWAP2 SWAP1 PUSH2 0xCF7 JUMP JUMPDEST 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 PUSH2 0x6CA SWAP2 SWAP1 PUSH2 0xCC5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x707 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 0x70C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x73A JUMPI POP PUSH1 0x0 DUP2 MLOAD EQ DUP1 PUSH2 0x739 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x738 SWAP2 SWAP1 PUSH2 0x9AD JUMP JUMPDEST JUMPDEST JUMPDEST PUSH2 0x779 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x770 SWAP1 PUSH2 0xE24 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x4 DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4000AEA0 PUSH32 0x0 DUP5 DUP7 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x7FF SWAP3 SWAP2 SWAP1 PUSH2 0xD9B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x82C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD20 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x85A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x87E SWAP2 SWAP1 PUSH2 0x9AD JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x8A0 DUP5 PUSH1 0x0 ADDRESS PUSH1 0x0 DUP1 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x8EA JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x0 DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x8C1 SWAP2 SWAP1 PUSH2 0xF59 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x8E1 DUP5 DUP3 PUSH2 0x926 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x903 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xDC4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x93B SWAP3 SWAP2 SWAP1 PUSH2 0xC99 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x968 DUP2 PUSH2 0x1234 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x97D DUP2 PUSH2 0x124B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x992 DUP2 PUSH2 0x1262 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x9A7 DUP2 PUSH2 0x1262 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9C3 JUMPI PUSH2 0x9C2 PUSH2 0x1154 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x9D1 DUP5 DUP3 DUP6 ADD PUSH2 0x959 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9F1 JUMPI PUSH2 0x9F0 PUSH2 0x1154 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x9FF DUP6 DUP3 DUP7 ADD PUSH2 0x96E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xA10 DUP6 DUP3 DUP7 ADD PUSH2 0x983 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA30 JUMPI PUSH2 0xA2F PUSH2 0x1154 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA3E DUP5 DUP3 DUP6 ADD PUSH2 0x983 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA5D JUMPI PUSH2 0xA5C PUSH2 0x1154 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA6B DUP5 DUP3 DUP6 ADD PUSH2 0x998 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA8B JUMPI PUSH2 0xA8A PUSH2 0x1154 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA99 DUP6 DUP3 DUP7 ADD PUSH2 0x983 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xAAA DUP6 DUP3 DUP7 ADD PUSH2 0x983 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC0 DUP4 DUP4 PUSH2 0xC64 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAD5 DUP2 PUSH2 0xFAF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAE6 DUP3 PUSH2 0xEF8 JUMP JUMPDEST PUSH2 0xAF0 DUP2 DUP6 PUSH2 0xF1B JUMP JUMPDEST SWAP4 POP PUSH2 0xAFB DUP4 PUSH2 0xEE8 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB2C JUMPI DUP2 MLOAD PUSH2 0xB13 DUP9 DUP3 PUSH2 0xAB4 JUMP JUMPDEST SWAP8 POP PUSH2 0xB1E DUP4 PUSH2 0xF0E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xAFF JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB42 DUP2 PUSH2 0xFCD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xB59 PUSH2 0xB54 DUP3 PUSH2 0xFCD JUMP JUMPDEST PUSH2 0x10B3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB6A DUP3 PUSH2 0xF03 JUMP JUMPDEST PUSH2 0xB74 DUP2 DUP6 PUSH2 0xF2C JUMP JUMPDEST SWAP4 POP PUSH2 0xB84 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1037 JUMP JUMPDEST PUSH2 0xB8D DUP2 PUSH2 0x1159 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBA3 DUP3 PUSH2 0xF03 JUMP JUMPDEST PUSH2 0xBAD DUP2 DUP6 PUSH2 0xF3D JUMP JUMPDEST SWAP4 POP PUSH2 0xBBD DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1037 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBD2 DUP2 PUSH2 0x1001 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBE5 PUSH1 0x1C DUP4 PUSH2 0xF48 JUMP JUMPDEST SWAP2 POP PUSH2 0xBF0 DUP3 PUSH2 0x116A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC08 PUSH1 0x2B DUP4 PUSH2 0xF48 JUMP JUMPDEST SWAP2 POP PUSH2 0xC13 DUP3 PUSH2 0x1193 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC2B PUSH1 0x1F DUP4 PUSH2 0xF48 JUMP JUMPDEST SWAP2 POP PUSH2 0xC36 DUP3 PUSH2 0x11E2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC4E PUSH1 0x11 DUP4 PUSH2 0xF48 JUMP JUMPDEST SWAP2 POP PUSH2 0xC59 DUP3 PUSH2 0x120B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC6D DUP2 PUSH2 0xFF7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xC7C DUP2 PUSH2 0xFF7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xC93 PUSH2 0xC8E DUP3 PUSH2 0xFF7 JUMP JUMPDEST PUSH2 0x10BD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCA5 DUP3 DUP6 PUSH2 0xB48 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0xCB5 DUP3 DUP5 PUSH2 0xC82 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCD1 DUP3 DUP5 PUSH2 0xB98 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xCF1 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xACC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xD0C PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xACC JUMP JUMPDEST PUSH2 0xD19 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xC73 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xD35 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xACC JUMP JUMPDEST PUSH2 0xD42 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xC73 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xD54 DUP2 DUP5 PUSH2 0xB5F JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xD78 DUP2 DUP5 PUSH2 0xADB JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xD95 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB39 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xDB0 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xB39 JUMP JUMPDEST PUSH2 0xDBD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xC73 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0xDD9 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0xB39 JUMP JUMPDEST PUSH2 0xDE6 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0xC73 JUMP JUMPDEST PUSH2 0xDF3 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xACC JUMP JUMPDEST PUSH2 0xE00 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0xC73 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xE1E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xBC9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE3D DUP2 PUSH2 0xBD8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE5D DUP2 PUSH2 0xBFB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE7D DUP2 PUSH2 0xC1E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE9D DUP2 PUSH2 0xC41 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xEB9 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC73 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xED4 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xC73 JUMP JUMPDEST PUSH2 0xEE1 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xC73 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF64 DUP3 PUSH2 0xFF7 JUMP JUMPDEST SWAP2 POP PUSH2 0xF6F DUP4 PUSH2 0xFF7 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0xFA4 JUMPI PUSH2 0xFA3 PUSH2 0x10C7 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFBA DUP3 PUSH2 0xFD7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100C DUP3 PUSH2 0x1013 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x101E DUP3 PUSH2 0x1025 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1030 DUP3 PUSH2 0xFD7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1055 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x103A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1064 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1075 DUP3 PUSH2 0xFF7 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x10A8 JUMPI PUSH2 0x10A7 PUSH2 0x10C7 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4E6F7420656E6F756768204C494E4B202D2066696C6C20636F6E747261637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7769746820666175636574000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4F6E6C7920565246436F6F7264696E61746F722063616E2066756C66696C6C00 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x63616C6C6572206E6F742066756E646572000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x123D DUP2 PUSH2 0xFC1 JUMP JUMPDEST DUP2 EQ PUSH2 0x1248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1254 DUP2 PUSH2 0xFCD JUMP JUMPDEST DUP2 EQ PUSH2 0x125F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x126B DUP2 PUSH2 0xFF7 JUMP JUMPDEST DUP2 EQ PUSH2 0x1276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE5 0xFC INVALID PUSH16 0x89FE1F72B34F9119DD3F84A19BC87CD5 PUSH30 0x1CAC907272144D0096B6D364736F6C634300080700330000000000000000 ",
"sourceMap": "3886:2483:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4217:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4107:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5819:291;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6116:251;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9639:225:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4140:71:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5169:292;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4036:65;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4217:21;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4107:27::-;;;;:::o;5819:291::-;5888:31;5958:1;5944:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5927:33;;5971:9;5966:115;5990:1;5986;:5;5966:115;;;6057:11;6070:1;6046:26;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6036:37;;;;;;6028:46;;6008:14;6023:1;6008:17;;;;;;;;:::i;:::-;;;;;;;:66;;;;;5993:3;;;;;:::i;:::-;;;;5966:115;;;;5819:291;;;;:::o;6116:251::-;6166:14;5064:5;;;;;;;;;;;5050:19;;:10;:19;;;5042:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;6285:4:::1;;;;;;;;;;;:14;;;6308:4;6285:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6276:38;;6324:36;6342:10;6353:6;6324:4;;;;;;;;;;;:17;;;;:36;;;;;:::i;:::-;6116:251:::0;:::o;9639:225:0:-;9763:14;9749:28;;:10;:28;;;9741:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9819:40;9837:9;9848:10;9819:17;:40::i;:::-;9639:225;;:::o;4140:71:7:-;;;;;;;;;;;;;:::o;5169:292::-;5212:17;5282:3;;5249:4;:14;;;5272:4;5249:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;5241:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;5355:31;5373:7;;5382:3;;5355:17;:31::i;:::-;5343:43;;5396:7;5417:9;5409:18;;5396:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5169:292;:::o;4036:65::-;;;;;;;;;;;;;:::o;2859:333::-;2973:12;2987:17;3016:5;3008:19;;527:10;3051:12;;3065:2;3069:6;3028:48;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3008:69;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2972:105;;;;3095:7;:57;;;;;3122:1;3107:4;:11;:16;:44;;;;3138:4;3127:24;;;;;;;;;;;;:::i;:::-;3107:44;3095:57;3087:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;2962:230;;2859:333;;;:::o;5668:126::-;5777:10;5762:12;:25;;;;5668:126;;:::o;7752:1055:0:-;7856:17;7888:4;:20;;;7909:14;7925:4;7942:8;6609:1;7931:43;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7888:87;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8206:15;8225:82;8242:8;6609:1;8283:4;8290:6;:16;8297:8;8290:16;;;;;;;;;;;;8225;:82::i;:::-;8206:101;;8756:1;8737:6;:16;8744:8;8737:16;;;;;;;;;;;;:20;;;;:::i;:::-;8718:6;:16;8725:8;8718:16;;;;;;;;;;;:39;;;;8770:32;8784:8;8794:7;8770:13;:32::i;:::-;8763:39;;;7752:1055;;;;:::o;797:266:1:-;958:7;1016:8;1026:9;1037:10;1049:6;1005:51;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;995:62;;;;;;987:71;;980:78;;797:266;;;;;;:::o;1443:204::-;1561:7;1617:8;1627:13;1600:41;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1590:52;;;;;;1583:59;;1443:204;;;;:::o;7:137:8:-;61:5;92:6;86:13;77:22;;108:30;132:5;108:30;:::i;:::-;7:137;;;;:::o;150:139::-;196:5;234:6;221:20;212:29;;250:33;277:5;250:33;:::i;:::-;150:139;;;;:::o;295:::-;341:5;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;295:139;;;;:::o;440:143::-;497:5;528:6;522:13;513:22;;544:33;571:5;544:33;:::i;:::-;440:143;;;;:::o;589:345::-;656:6;705:2;693:9;684:7;680:23;676:32;673:119;;;711:79;;:::i;:::-;673:119;831:1;856:61;909:7;900:6;889:9;885:22;856:61;:::i;:::-;846:71;;802:125;589:345;;;;:::o;940:474::-;1008:6;1016;1065:2;1053:9;1044:7;1040:23;1036:32;1033:119;;;1071:79;;:::i;:::-;1033:119;1191:1;1216:53;1261:7;1252:6;1241:9;1237:22;1216:53;:::i;:::-;1206:63;;1162:117;1318:2;1344:53;1389:7;1380:6;1369:9;1365:22;1344:53;:::i;:::-;1334:63;;1289:118;940:474;;;;;:::o;1420:329::-;1479:6;1528:2;1516:9;1507:7;1503:23;1499:32;1496:119;;;1534:79;;:::i;:::-;1496:119;1654:1;1679:53;1724:7;1715:6;1704:9;1700:22;1679:53;:::i;:::-;1669:63;;1625:117;1420:329;;;;:::o;1755:351::-;1825:6;1874:2;1862:9;1853:7;1849:23;1845:32;1842:119;;;1880:79;;:::i;:::-;1842:119;2000:1;2025:64;2081:7;2072:6;2061:9;2057:22;2025:64;:::i;:::-;2015:74;;1971:128;1755:351;;;;:::o;2112:474::-;2180:6;2188;2237:2;2225:9;2216:7;2212:23;2208:32;2205:119;;;2243:79;;:::i;:::-;2205:119;2363:1;2388:53;2433:7;2424:6;2413:9;2409:22;2388:53;:::i;:::-;2378:63;;2334:117;2490:2;2516:53;2561:7;2552:6;2541:9;2537:22;2516:53;:::i;:::-;2506:63;;2461:118;2112:474;;;;;:::o;2592:179::-;2661:10;2682:46;2724:3;2716:6;2682:46;:::i;:::-;2760:4;2755:3;2751:14;2737:28;;2592:179;;;;:::o;2777:118::-;2864:24;2882:5;2864:24;:::i;:::-;2859:3;2852:37;2777:118;;:::o;2931:732::-;3050:3;3079:54;3127:5;3079:54;:::i;:::-;3149:86;3228:6;3223:3;3149:86;:::i;:::-;3142:93;;3259:56;3309:5;3259:56;:::i;:::-;3338:7;3369:1;3354:284;3379:6;3376:1;3373:13;3354:284;;;3455:6;3449:13;3482:63;3541:3;3526:13;3482:63;:::i;:::-;3475:70;;3568:60;3621:6;3568:60;:::i;:::-;3558:70;;3414:224;3401:1;3398;3394:9;3389:14;;3354:284;;;3358:14;3654:3;3647:10;;3055:608;;;2931:732;;;;:::o;3669:118::-;3756:24;3774:5;3756:24;:::i;:::-;3751:3;3744:37;3669:118;;:::o;3793:157::-;3898:45;3918:24;3936:5;3918:24;:::i;:::-;3898:45;:::i;:::-;3893:3;3886:58;3793:157;;:::o;3956:360::-;4042:3;4070:38;4102:5;4070:38;:::i;:::-;4124:70;4187:6;4182:3;4124:70;:::i;:::-;4117:77;;4203:52;4248:6;4243:3;4236:4;4229:5;4225:16;4203:52;:::i;:::-;4280:29;4302:6;4280:29;:::i;:::-;4275:3;4271:39;4264:46;;4046:270;3956:360;;;;:::o;4322:373::-;4426:3;4454:38;4486:5;4454:38;:::i;:::-;4508:88;4589:6;4584:3;4508:88;:::i;:::-;4501:95;;4605:52;4650:6;4645:3;4638:4;4631:5;4627:16;4605:52;:::i;:::-;4682:6;4677:3;4673:16;4666:23;;4430:265;4322:373;;;;:::o;4701:159::-;4802:51;4847:5;4802:51;:::i;:::-;4797:3;4790:64;4701:159;;:::o;4866:366::-;5008:3;5029:67;5093:2;5088:3;5029:67;:::i;:::-;5022:74;;5105:93;5194:3;5105:93;:::i;:::-;5223:2;5218:3;5214:12;5207:19;;4866:366;;;:::o;5238:::-;5380:3;5401:67;5465:2;5460:3;5401:67;:::i;:::-;5394:74;;5477:93;5566:3;5477:93;:::i;:::-;5595:2;5590:3;5586:12;5579:19;;5238:366;;;:::o;5610:::-;5752:3;5773:67;5837:2;5832:3;5773:67;:::i;:::-;5766:74;;5849:93;5938:3;5849:93;:::i;:::-;5967:2;5962:3;5958:12;5951:19;;5610:366;;;:::o;5982:::-;6124:3;6145:67;6209:2;6204:3;6145:67;:::i;:::-;6138:74;;6221:93;6310:3;6221:93;:::i;:::-;6339:2;6334:3;6330:12;6323:19;;5982:366;;;:::o;6354:108::-;6431:24;6449:5;6431:24;:::i;:::-;6426:3;6419:37;6354:108;;:::o;6468:118::-;6555:24;6573:5;6555:24;:::i;:::-;6550:3;6543:37;6468:118;;:::o;6592:157::-;6697:45;6717:24;6735:5;6717:24;:::i;:::-;6697:45;:::i;:::-;6692:3;6685:58;6592:157;;:::o;6755:397::-;6895:3;6910:75;6981:3;6972:6;6910:75;:::i;:::-;7010:2;7005:3;7001:12;6994:19;;7023:75;7094:3;7085:6;7023:75;:::i;:::-;7123:2;7118:3;7114:12;7107:19;;7143:3;7136:10;;6755:397;;;;;:::o;7158:271::-;7288:3;7310:93;7399:3;7390:6;7310:93;:::i;:::-;7303:100;;7420:3;7413:10;;7158:271;;;;:::o;7435:222::-;7528:4;7566:2;7555:9;7551:18;7543:26;;7579:71;7647:1;7636:9;7632:17;7623:6;7579:71;:::i;:::-;7435:222;;;;:::o;7663:332::-;7784:4;7822:2;7811:9;7807:18;7799:26;;7835:71;7903:1;7892:9;7888:17;7879:6;7835:71;:::i;:::-;7916:72;7984:2;7973:9;7969:18;7960:6;7916:72;:::i;:::-;7663:332;;;;;:::o;8001:529::-;8168:4;8206:2;8195:9;8191:18;8183:26;;8219:71;8287:1;8276:9;8272:17;8263:6;8219:71;:::i;:::-;8300:72;8368:2;8357:9;8353:18;8344:6;8300:72;:::i;:::-;8419:9;8413:4;8409:20;8404:2;8393:9;8389:18;8382:48;8447:76;8518:4;8509:6;8447:76;:::i;:::-;8439:84;;8001:529;;;;;;:::o;8536:373::-;8679:4;8717:2;8706:9;8702:18;8694:26;;8766:9;8760:4;8756:20;8752:1;8741:9;8737:17;8730:47;8794:108;8897:4;8888:6;8794:108;:::i;:::-;8786:116;;8536:373;;;;:::o;8915:222::-;9008:4;9046:2;9035:9;9031:18;9023:26;;9059:71;9127:1;9116:9;9112:17;9103:6;9059:71;:::i;:::-;8915:222;;;;:::o;9143:332::-;9264:4;9302:2;9291:9;9287:18;9279:26;;9315:71;9383:1;9372:9;9368:17;9359:6;9315:71;:::i;:::-;9396:72;9464:2;9453:9;9449:18;9440:6;9396:72;:::i;:::-;9143:332;;;;;:::o;9481:553::-;9658:4;9696:3;9685:9;9681:19;9673:27;;9710:71;9778:1;9767:9;9763:17;9754:6;9710:71;:::i;:::-;9791:72;9859:2;9848:9;9844:18;9835:6;9791:72;:::i;:::-;9873;9941:2;9930:9;9926:18;9917:6;9873:72;:::i;:::-;9955;10023:2;10012:9;10008:18;9999:6;9955:72;:::i;:::-;9481:553;;;;;;;:::o;10040:250::-;10147:4;10185:2;10174:9;10170:18;10162:26;;10198:85;10280:1;10269:9;10265:17;10256:6;10198:85;:::i;:::-;10040:250;;;;:::o;10296:419::-;10462:4;10500:2;10489:9;10485:18;10477:26;;10549:9;10543:4;10539:20;10535:1;10524:9;10520:17;10513:47;10577:131;10703:4;10577:131;:::i;:::-;10569:139;;10296:419;;;:::o;10721:::-;10887:4;10925:2;10914:9;10910:18;10902:26;;10974:9;10968:4;10964:20;10960:1;10949:9;10945:17;10938:47;11002:131;11128:4;11002:131;:::i;:::-;10994:139;;10721:419;;;:::o;11146:::-;11312:4;11350:2;11339:9;11335:18;11327:26;;11399:9;11393:4;11389:20;11385:1;11374:9;11370:17;11363:47;11427:131;11553:4;11427:131;:::i;:::-;11419:139;;11146:419;;;:::o;11571:::-;11737:4;11775:2;11764:9;11760:18;11752:26;;11824:9;11818:4;11814:20;11810:1;11799:9;11795:17;11788:47;11852:131;11978:4;11852:131;:::i;:::-;11844:139;;11571:419;;;:::o;11996:222::-;12089:4;12127:2;12116:9;12112:18;12104:26;;12140:71;12208:1;12197:9;12193:17;12184:6;12140:71;:::i;:::-;11996:222;;;;:::o;12224:332::-;12345:4;12383:2;12372:9;12368:18;12360:26;;12396:71;12464:1;12453:9;12449:17;12440:6;12396:71;:::i;:::-;12477:72;12545:2;12534:9;12530:18;12521:6;12477:72;:::i;:::-;12224:332;;;;;:::o;12643:132::-;12710:4;12733:3;12725:11;;12763:4;12758:3;12754:14;12746:22;;12643:132;;;:::o;12781:114::-;12848:6;12882:5;12876:12;12866:22;;12781:114;;;:::o;12901:98::-;12952:6;12986:5;12980:12;12970:22;;12901:98;;;:::o;13005:113::-;13075:4;13107;13102:3;13098:14;13090:22;;13005:113;;;:::o;13124:184::-;13223:11;13257:6;13252:3;13245:19;13297:4;13292:3;13288:14;13273:29;;13124:184;;;;:::o;13314:168::-;13397:11;13431:6;13426:3;13419:19;13471:4;13466:3;13462:14;13447:29;;13314:168;;;;:::o;13488:147::-;13589:11;13626:3;13611:18;;13488:147;;;;:::o;13641:169::-;13725:11;13759:6;13754:3;13747:19;13799:4;13794:3;13790:14;13775:29;;13641:169;;;;:::o;13816:305::-;13856:3;13875:20;13893:1;13875:20;:::i;:::-;13870:25;;13909:20;13927:1;13909:20;:::i;:::-;13904:25;;14063:1;13995:66;13991:74;13988:1;13985:81;13982:107;;;14069:18;;:::i;:::-;13982:107;14113:1;14110;14106:9;14099:16;;13816:305;;;;:::o;14127:96::-;14164:7;14193:24;14211:5;14193:24;:::i;:::-;14182:35;;14127:96;;;:::o;14229:90::-;14263:7;14306:5;14299:13;14292:21;14281:32;;14229:90;;;:::o;14325:77::-;14362:7;14391:5;14380:16;;14325:77;;;:::o;14408:126::-;14445:7;14485:42;14478:5;14474:54;14463:65;;14408:126;;;:::o;14540:77::-;14577:7;14606:5;14595:16;;14540:77;;;:::o;14623:140::-;14687:9;14720:37;14751:5;14720:37;:::i;:::-;14707:50;;14623:140;;;:::o;14769:126::-;14819:9;14852:37;14883:5;14852:37;:::i;:::-;14839:50;;14769:126;;;:::o;14901:113::-;14951:9;14984:24;15002:5;14984:24;:::i;:::-;14971:37;;14901:113;;;:::o;15020:307::-;15088:1;15098:113;15112:6;15109:1;15106:13;15098:113;;;15197:1;15192:3;15188:11;15182:18;15178:1;15173:3;15169:11;15162:39;15134:2;15131:1;15127:10;15122:15;;15098:113;;;15229:6;15226:1;15223:13;15220:101;;;15309:1;15300:6;15295:3;15291:16;15284:27;15220:101;15069:258;15020:307;;;:::o;15333:233::-;15372:3;15395:24;15413:5;15395:24;:::i;:::-;15386:33;;15441:66;15434:5;15431:77;15428:103;;;15511:18;;:::i;:::-;15428:103;15558:1;15551:5;15547:13;15540:20;;15333:233;;;:::o;15572:79::-;15611:7;15640:5;15629:16;;15572:79;;;:::o;15657:::-;15696:7;15725:5;15714:16;;15657:79;;;:::o;15742:180::-;15790:77;15787:1;15780:88;15887:4;15884:1;15877:15;15911:4;15908:1;15901:15;15928:180;15976:77;15973:1;15966:88;16073:4;16070:1;16063:15;16097:4;16094:1;16087:15;16114:180;16162:77;16159:1;16152:88;16259:4;16256:1;16249:15;16283:4;16280:1;16273:15;16423:117;16532:1;16529;16522:12;16546:102;16587:6;16638:2;16634:7;16629:2;16622:5;16618:14;16614:28;16604:38;;16546:102;;;:::o;16654:178::-;16794:30;16790:1;16782:6;16778:14;16771:54;16654:178;:::o;16838:230::-;16978:34;16974:1;16966:6;16962:14;16955:58;17047:13;17042:2;17034:6;17030:15;17023:38;16838:230;:::o;17074:181::-;17214:33;17210:1;17202:6;17198:14;17191:57;17074:181;:::o;17261:167::-;17401:19;17397:1;17389:6;17385:14;17378:43;17261:167;:::o;17434:116::-;17504:21;17519:5;17504:21;:::i;:::-;17497:5;17494:32;17484:60;;17540:1;17537;17530:12;17484:60;17434:116;:::o;17556:122::-;17629:24;17647:5;17629:24;:::i;:::-;17622:5;17619:35;17609:63;;17668:1;17665;17658:12;17609:63;17556:122;:::o;17684:::-;17757:24;17775:5;17757:24;:::i;:::-;17750:5;17747:35;17737:63;;17796:1;17793;17786:12;17737:63;17684:122;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "956600",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"Link()": "2622",
"admin()": "2580",
"expand(uint256,uint256)": "infinite",
"getRandomNumber()": "infinite",
"randomResult()": "2452",
"rawFulfillRandomness(bytes32,uint256)": "infinite",
"results(uint256)": "infinite",
"withdrawLink()": "infinite"
},
"internal": {
"fulfillModuloRandomness(bytes32,uint256)": "infinite",
"fulfillRandomness(bytes32,uint256)": "22127"
}
},
"methodIdentifiers": {
"Link()": "bb0602cd",
"admin()": "f851a440",
"expand(uint256,uint256)": "874b3afc",
"getRandomNumber()": "dbdff2c1",
"randomResult()": "42619f66",
"rawFulfillRandomness(bytes32,uint256)": "94985ddd",
"results(uint256)": "1b0c27da",
"withdrawLink()": "8dc654a2"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Withdraw",
"type": "event"
},
{
"inputs": [],
"name": "Link",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "admin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "randomValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "n",
"type": "uint256"
}
],
"name": "expand",
"outputs": [
{
"internalType": "uint256[]",
"name": "expandedValues",
"type": "uint256[]"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "getRandomNumber",
"outputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "randomResult",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "randomness",
"type": "uint256"
}
],
"name": "rawFulfillRandomness",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "results",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "withdrawLink",
"outputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Withdraw",
"type": "event"
},
{
"inputs": [],
"name": "Link",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "admin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "randomValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "n",
"type": "uint256"
}
],
"name": "expand",
"outputs": [
{
"internalType": "uint256[]",
"name": "expandedValues",
"type": "uint256[]"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "getRandomNumber",
"outputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "randomResult",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "randomness",
"type": "uint256"
}
],
"name": "rawFulfillRandomness",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "results",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "withdrawLink",
"outputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"constructor": {
"notice": "Constructor inherits VRFConsumerBase Network: Matic Chainlink VRF Coordinator address: 0xdD3782915140c8f3b190B5D67eAc6dc5760C46E9 LINK token address: 0xa36085F69e2889c224210F603D836748e7dC0088 Key Hash: 0x6c3699283bda56ad74f6b855546325b68d482e983852a7a82979cc4807b641f4"
},
"getRandomNumber()": {
"notice": "Requests randomness "
}
},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/ImpossibleChainlink.sol": "RandomNumberConsumer"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"@chainlink/contracts/src/v0.8/VRFConsumerBase.sol": {
"keccak256": "0x991e49ee47043d6667887d7ed6ab5a0f8e4e5550f92b09b0d75c1fb1a473cd8d",
"license": "MIT",
"urls": [
"bzz-raw://a688c48fa681a7958d5cbb4e1845290ae317e2dfa1a059faae44c69d83409414",
"dweb:/ipfs/Qmb5Gpjya5VJ9LnwkEBfMr5DtDH462VBjXcA6uAU2f1Vj9"
]
},
"@chainlink/contracts/src/v0.8/VRFRequestIDBase.sol": {
"keccak256": "0x7c8dad07e6c6c9269d97fd1191ccf9c0f0068683f1f88003e688eef9373de0d9",
"license": "MIT",
"urls": [
"bzz-raw://1d88c83a359c70f6b2e2e05d8f7611cce4a3d316a65e5175e14bcf9a6ced98af",
"dweb:/ipfs/QmeH3BEuVvaaQsz7sN5myEnFLoabTG4j85vS9Z6rfJkads"
]
},
"@chainlink/contracts/src/v0.8/interfaces/LinkTokenInterface.sol": {
"keccak256": "0x50528c237386c55ff122d047f91b32be7abe24e9dfdc609de21cd605aae83b9a",
"license": "MIT",
"urls": [
"bzz-raw://92037bd13b34432f9377cb205c0039bd0724af66ea605598db31d4ccd33f879f",
"dweb:/ipfs/QmdH6Ef5PZgcPrJuWboLX5MhmezzTFniZCwJ6fk2tYVua4"
]
},
"contracts/Context.sol": {
"keccak256": "0xf85ba24aca6a219be58ee82e453490f1358ac94d67f42e8c15ad93dd24b9d9dc",
"license": "MIT",
"urls": [
"bzz-raw://c1ff02d829b413a27234a2837b9adfd84693dcf508a2935967be9f4592160cc1",
"dweb:/ipfs/QmengRHPpNR9gtQDtbBPh8ugXYUnm23Z8V7txrxr6Whfrd"
]
},
"contracts/ERC20.sol": {
"keccak256": "0x8ba7d16b0287ff1bc020e8e1e2c28ba2a59c698b40ff1026f7853ae891c71f43",
"license": "MIT",
"urls": [
"bzz-raw://f1e3f1e154dfed1473cdcd7b012047ec3a64ebf504e0883974f092f096c765fd",
"dweb:/ipfs/QmSUu3LFgyNLgVgxXvJ3upBSAf8Qtqy2oxrRVuy57JVJ6E"
]
},
"contracts/IERC20.sol": {
"keccak256": "0xb55c91551ef864f86edd296378fc3430f19798c0d1de468ff772a83a842df24c",
"license": "MIT",
"urls": [
"bzz-raw://f118e5d475795b9e612bb6c139db18493e65f47f181ddcef446f4fa43e7f80f5",
"dweb:/ipfs/QmSRWmUWxpjp8jMtDHqWysWbZqFNVKAyLHcmBtjJRvmoLF"
]
},
"contracts/IERC20Metadata.sol": {
"keccak256": "0x4065401847859fdea8270079da0d5d94d4d6bcb16b83753f25d77c03bc9fa66d",
"license": "MIT",
"urls": [
"bzz-raw://ddc99a4763150db86205a0b0313dda9db3b4c1cc283933cb9228d63ea71a7495",
"dweb:/ipfs/QmaVKXyFDwYPZ1iRrjAEbbaFYWSfrYdz4jfaeFJ7EWzT6k"
]
},
"contracts/ImpossibleChainlink.sol": {
"keccak256": "0xc7757ce2b3aa2616bfc9aaf3a6b98e552b63f38bbb63dca2a50d5219dc07f89b",
"license": "MIT",
"urls": [
"bzz-raw://b2d31e8ae306b050c079e026957f30ea4c7834e817e18ec1d0cd9161a4da3c77",
"dweb:/ipfs/QmZHq3Hi444CuCDnbDss19UJqrzdb5zQS3BQUH2ncQfA7G"
]
}
},
"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
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209fe44272efc322598b67e8409f8fdfb5a3794fe58b40895a9f167d812c16422f64736f6c63430008070033",
"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 SWAP16 0xE4 TIMESTAMP PUSH19 0xEFC322598B67E8409F8FDFB5A3794FE58B4089 GAS SWAP16 AND PUSH30 0x812C16422F64736F6C634300080700330000000000000000000000000000 ",
"sourceMap": "897:3586:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209fe44272efc322598b67e8409f8fdfb5a3794fe58b40895a9f167d812c16422f64736f6c63430008070033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP16 0xE4 TIMESTAMP PUSH19 0xEFC322598B67E8409F8FDFB5A3794FE58B4089 GAS SWAP16 AND PUSH30 0x812C16422F64736F6C634300080700330000000000000000000000000000 ",
"sourceMap": "897:3586:1:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "97",
"totalCost": "17297"
},
"internal": {
"clearApprove(contract IERC20,address)": "infinite",
"safeApprove(contract IERC20,address,uint256)": "infinite",
"safeTransfer(contract IERC20,address,uint256)": "infinite",
"safeTransferFrom(contract IERC20,address,address,uint256)": "infinite"
}
},
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"details": "Library to perform safe calls to standard method for ERC20 tokens. Why Transfers: transfer methods could have a return value (bool), throw or revert for insufficient funds or unathorized value. Why Approve: approve method could has a return value (bool) or does not accept 0 as a valid value (BNB token). The common strategy used to clean approvals. We use the Solidity call instead of interface methods because in the case of transfer, it will fail for tokens with an implementation without returning a value. Since versions of Solidity 0.4.22 the EVM has a new opcode, called RETURNDATASIZE. This opcode stores the size of the returned data of an external call. The code checks the size of the return value after an external call and reverts the transaction in case the return data is shorter than expected",
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/SafeERC20.sol": "SafeERC20"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/IERC20.sol": {
"keccak256": "0xb55c91551ef864f86edd296378fc3430f19798c0d1de468ff772a83a842df24c",
"license": "MIT",
"urls": [
"bzz-raw://f118e5d475795b9e612bb6c139db18493e65f47f181ddcef446f4fa43e7f80f5",
"dweb:/ipfs/QmSRWmUWxpjp8jMtDHqWysWbZqFNVKAyLHcmBtjJRvmoLF"
]
},
"contracts/SafeERC20.sol": {
"keccak256": "0x4eaa9ebc06094293a9a833b19a7979982076985ffa2f74020dc7875a9ecf415e",
"urls": [
"bzz-raw://192ccd5f8b4c24608731f31f5f13b28e6a2ca2d818496cb1e6397b572ef1afab",
"dweb:/ipfs/Qma5x5FENFucaSSipaNRH2jQYLZygYDr62P7cxFCY5uR9U"
]
}
},
"version": 1
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./IERC20.sol";
import "./IERC20Metadata.sol";
import "./Context.sol";
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* TIP: For a detailed writeup see our guide
* https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* We have followed general OpenZeppelin guidelines: functions revert instead
* of returning `false` on failure. This behavior is nonetheless conventional
* and does not conflict with the expectations of ERC20 applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* The default value of {decimals} is 18. To select a different value for
* {decimals} you should overload it.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5,05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* Requirements:
*
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for ``sender``'s tokens of at least
* `amount`.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
unchecked {
_approve(sender, _msgSender(), currentAllowance - amount);
}
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves `amount` of tokens from `sender` to `recipient`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[sender] = senderBalance - amount;
}
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
_afterTokenTransfer(sender, recipient, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
}
_totalSupply -= amount;
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
/**
* @dev Hook that is called after any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* has been transferred to `to`.
* - when `from` is zero, `amount` tokens have been minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens have been burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
pragma solidity ^0.8.7;
import "./IERC20.sol";
/**
* @dev Library to perform safe calls to standard method for ERC20 tokens.
*
* Why Transfers: transfer methods could have a return value (bool), throw or revert for insufficient funds or
* unathorized value.
*
* Why Approve: approve method could has a return value (bool) or does not accept 0 as a valid value (BNB token).
* The common strategy used to clean approvals.
*
* We use the Solidity call instead of interface methods because in the case of transfer, it will fail
* for tokens with an implementation without returning a value.
* Since versions of Solidity 0.4.22 the EVM has a new opcode, called RETURNDATASIZE.
* This opcode stores the size of the returned data of an external call. The code checks the size of the return value
* after an external call and reverts the transaction in case the return data is shorter than expected
*/
library SafeERC20 {
/**
* @dev Transfer token for a specified address
* @param _token erc20 The address of the ERC20 contract
* @param _to address The address which you want to transfer to
* @param _value uint256 the _value of tokens to be transferred
* @return bool whether the transfer was successful or not
*/
function safeTransfer(IERC20 _token, address _to, uint256 _value) internal returns (bool) {
uint256 prevBalance = _token.balanceOf(address(this));
if (prevBalance < _value) {
// Insufficient funds
return false;
}
address(_token).call(
abi.encodeWithSignature("transfer(address,uint256)", _to, _value)
);
// Fail if the new balance its not equal than previous balance sub _value
return prevBalance - _value == _token.balanceOf(address(this));
}
/**
* @dev Transfer tokens from one address to another
* @param _token erc20 The address of the ERC20 contract
* @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 _value of tokens to be transferred
* @return bool whether the transfer was successful or not
*/
function safeTransferFrom(
IERC20 _token,
address _from,
address _to,
uint256 _value
) internal returns (bool)
{
uint256 prevBalance = _token.balanceOf(_from);
if (
prevBalance < _value || // Insufficient funds
_token.allowance(_from, address(this)) < _value // Insufficient allowance
) {
return false;
}
address(_token).call(
abi.encodeWithSignature("transferFrom(address,address,uint256)", _from, _to, _value)
);
// Fail if the new balance its not equal than previous balance sub _value
return prevBalance - _value == _token.balanceOf(_from);
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
*
* Beware that changing an allowance with this method brings the risk that someone may use both the old
* and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
* race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* @param _token erc20 The address of the ERC20 contract
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
* @return bool whether the approve was successful or not
*/
function safeApprove(IERC20 _token, address _spender, uint256 _value) internal returns (bool) {
address(_token).call(
abi.encodeWithSignature("approve(address,uint256)",_spender, _value)
);
// Fail if the new allowance its not equal than _value
return _token.allowance(address(this), _spender) == _value;
}
/**
* @dev Clear approval
* Note that if 0 is not a valid value it will be set to 1.
* @param _token erc20 The address of the ERC20 contract
* @param _spender The address which will spend the funds.
*/
function clearApprove(IERC20 _token, address _spender) internal returns (bool) {
bool success = safeApprove(_token, _spender, 0);
if (!success) {
success = safeApprove(_token, _spender, 1);
}
return success;
}
}
// Right click on the script name and hit "Run" to execute
(async () => {
try {
console.log('Running deployWithEthers script...')
const contractName = 'Storage' // Change this for other contract
const constructorArgs = [] // Put constructor args (if any) here for your contract
// Note that the script needs the ABI which is generated from the compilation artifact.
// Make sure contract is compiled and artifacts are generated
const artifactsPath = `browser/contracts/artifacts/${contractName}.json` // Change this for different path
const metadata = JSON.parse(await remix.call('fileManager', 'getFile', artifactsPath))
// 'web3Provider' is a remix global variable object
const signer = (new ethers.providers.Web3Provider(web3Provider)).getSigner()
let factory = new ethers.ContractFactory(metadata.abi, metadata.data.bytecode.object, signer);
let contract = await factory.deploy(...constructorArgs);
console.log('Contract Address: ', contract.address);
// The contract is NOT deployed yet; we must wait until it is mined
await contract.deployed()
console.log('Deployment successful.')
} catch (e) {
console.log(e.message)
}
})()
// Right click on the script name and hit "Run" to execute
(async () => {
try {
console.log('Running deployWithWeb3 script...')
const contractName = 'Storage' // Change this for other contract
const constructorArgs = [] // Put constructor args (if any) here for your contract
// Note that the script needs the ABI which is generated from the compilation artifact.
// Make sure contract is compiled and artifacts are generated
const artifactsPath = `browser/contracts/artifacts/${contractName}.json` // Change this for different path
const metadata = JSON.parse(await remix.call('fileManager', 'getFile', artifactsPath))
const accounts = await web3.eth.getAccounts()
let contract = new web3.eth.Contract(metadata.abi)
contract = contract.deploy({
data: metadata.data.bytecode.object,
arguments: constructorArgs
})
const newContractInstance = await contract.send({
from: accounts[0],
gas: 1500000,
gasPrice: '30000000000'
})
console.log('Contract deployed at address: ', newContractInstance.options.address)
} catch (e) {
console.log(e.message)
}
})()
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
import "remix_tests.sol"; // this import is automatically injected by Remix.
import "../contracts/3_Ballot.sol";
contract BallotTest {
bytes32[] proposalNames;
Ballot ballotToTest;
function beforeAll () public {
proposalNames.push(bytes32("candidate1"));
ballotToTest = new Ballot(proposalNames);
}
function checkWinningProposal () public {
ballotToTest.vote(0);
Assert.equal(ballotToTest.winningProposal(), uint(0), "proposal at index 0 should be the winning proposal");
Assert.equal(ballotToTest.winnerName(), bytes32("candidate1"), "candidate1 should be the winner name");
}
function checkWinninProposalWithReturnValue () public view returns (bool) {
return ballotToTest.winningProposal() == 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment