{
  "id": "3df53ed7a8bbec1998414bd0a13786a1",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.6.12",
  "solcLongVersion": "0.6.12+commit.27d51765",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/Multicall2.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.5.0;\npragma experimental ABIEncoderV2;\n\n/// @title Multicall2 - Aggregate results from multiple read-only function calls\n/// @author Michael Elliot <mike@makerdao.com>\n/// @author Joshua Levine <joshua@makerdao.com>\n/// @author Nick Johnson <arachnid@notdot.net>\n\ncontract Multicall2 {\n    struct Call {\n        address target;\n        bytes callData;\n    }\n    struct Result {\n        bool success;\n        bytes returnData;\n    }\n\n    function aggregate(Call[] memory calls) public returns (uint256 blockNumber, bytes[] memory returnData) {\n        blockNumber = block.number;\n        returnData = new bytes[](calls.length);\n        for(uint256 i = 0; i < calls.length; i++) {\n            (bool success, bytes memory ret) = calls[i].target.call(calls[i].callData);\n            require(success, \"Multicall aggregate: call failed\");\n            returnData[i] = ret;\n        }\n    }\n    function blockAndAggregate(Call[] memory calls) public returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData) {\n        (blockNumber, blockHash, returnData) = tryBlockAndAggregate(true, calls);\n    }\n    function getBlockHash(uint256 blockNumber) public view returns (bytes32 blockHash) {\n        blockHash = blockhash(blockNumber);\n    }\n    function getBlockNumber() public view returns (uint256 blockNumber) {\n        blockNumber = block.number;\n    }\n    function getCurrentBlockCoinbase() public view returns (address coinbase) {\n        coinbase = block.coinbase;\n    }\n    function getCurrentBlockDifficulty() public view returns (uint256 difficulty) {\n        difficulty = block.difficulty;\n    }\n    function getCurrentBlockGasLimit() public view returns (uint256 gaslimit) {\n        gaslimit = block.gaslimit;\n    }\n    function getCurrentBlockTimestamp() public view returns (uint256 timestamp) {\n        timestamp = block.timestamp;\n    }\n    function getEthBalance(address addr) public view returns (uint256 balance) {\n        balance = addr.balance;\n    }\n    function getLastBlockHash() public view returns (bytes32 blockHash) {\n        blockHash = blockhash(block.number - 1);\n    }\n    function tryAggregate(bool requireSuccess, Call[] memory calls) public returns (Result[] memory returnData) {\n        returnData = new Result[](calls.length);\n        for(uint256 i = 0; i < calls.length; i++) {\n            (bool success, bytes memory ret) = calls[i].target.call(calls[i].callData);\n\n            if (requireSuccess) {\n                require(success, \"Multicall2 aggregate: call failed\");\n            }\n\n            returnData[i] = Result(success, ret);\n        }\n    }\n    function tryBlockAndAggregate(bool requireSuccess, Call[] memory calls) public returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData) {\n        blockNumber = block.number;\n        blockHash = blockhash(block.number);\n        returnData = tryAggregate(requireSuccess, calls);\n    }\n}"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata",
            "devdoc",
            "userdoc",
            "storageLayout",
            "evm.gasEstimates"
          ],
          "": [
            "ast"
          ]
        }
      },
      "metadata": {
        "useLiteralContent": true
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/Multicall2.sol": {
        "Multicall2": {
          "abi": [
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "target",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "callData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Multicall2.Call[]",
                  "name": "calls",
                  "type": "tuple[]"
                }
              ],
              "name": "aggregate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes[]",
                  "name": "returnData",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "target",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "callData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Multicall2.Call[]",
                  "name": "calls",
                  "type": "tuple[]"
                }
              ],
              "name": "blockAndAggregate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes32",
                  "name": "blockHash",
                  "type": "bytes32"
                },
                {
                  "components": [
                    {
                      "internalType": "bool",
                      "name": "success",
                      "type": "bool"
                    },
                    {
                      "internalType": "bytes",
                      "name": "returnData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Multicall2.Result[]",
                  "name": "returnData",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "name": "getBlockHash",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "blockHash",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getBlockNumber",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getCurrentBlockCoinbase",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "coinbase",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getCurrentBlockDifficulty",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "difficulty",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getCurrentBlockGasLimit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "gaslimit",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getCurrentBlockTimestamp",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "timestamp",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "getEthBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getLastBlockHash",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "blockHash",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "requireSuccess",
                  "type": "bool"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "target",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "callData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Multicall2.Call[]",
                  "name": "calls",
                  "type": "tuple[]"
                }
              ],
              "name": "tryAggregate",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bool",
                      "name": "success",
                      "type": "bool"
                    },
                    {
                      "internalType": "bytes",
                      "name": "returnData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Multicall2.Result[]",
                  "name": "returnData",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "requireSuccess",
                  "type": "bool"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "target",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "callData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Multicall2.Call[]",
                  "name": "calls",
                  "type": "tuple[]"
                }
              ],
              "name": "tryBlockAndAggregate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "blockNumber",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes32",
                  "name": "blockHash",
                  "type": "bytes32"
                },
                {
                  "components": [
                    {
                      "internalType": "bool",
                      "name": "success",
                      "type": "bool"
                    },
                    {
                      "internalType": "bytes",
                      "name": "returnData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Multicall2.Result[]",
                  "name": "returnData",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Michael Elliot <mike@makerdao.com>Joshua Levine <joshua@makerdao.com>Nick Johnson <arachnid@notdot.net>",
            "kind": "dev",
            "methods": {},
            "title": "Multicall2 - Aggregate results from multiple read-only function calls",
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610939806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806372425d9d1161007157806372425d9d1461013d57806386d516e814610145578063a8b0574e1461014d578063bce38bd714610162578063c3077fa914610182578063ee82ac5e14610195576100b4565b80630f28c97d146100b9578063252dba42146100d757806327e86d6e146100f8578063399542e91461010057806342cbb15c146101225780634d2301cc1461012a575b600080fd5b6100c16101a8565b6040516100ce919061079d565b60405180910390f35b6100ea6100e5366004610620565b6101ac565b6040516100ce92919061081c565b6100c16102eb565b61011361010e36600461065b565b6102f4565b6040516100ce93929190610884565b6100c161030c565b6100c16101383660046105fe565b610310565b6100c161031d565b6100c1610321565b610155610325565b6040516100ce9190610776565b61017561017036600461065b565b610329565b6040516100ce919061078a565b610113610190366004610620565b61047f565b6100c16101a33660046106ad565b61049c565b4290565b8051439060609067ffffffffffffffff811180156101c957600080fd5b506040519080825280602002602001820160405280156101fd57816020015b60608152602001906001900390816101e85790505b50905060005b83518110156102e5576000606085838151811061021c57fe5b6020026020010151600001516001600160a01b031686848151811061023d57fe5b602002602001015160200151604051610256919061075a565b6000604051808303816000865af19150503d8060008114610293576040519150601f19603f3d011682016040523d82523d6000602084013e610298565b606091505b5091509150816102c35760405162461bcd60e51b81526004016102ba906107e7565b60405180910390fd5b808484815181106102d057fe5b60209081029190910101525050600101610203565b50915091565b60001943014090565b43804060606103038585610329565b90509250925092565b4390565b6001600160a01b03163190565b4490565b4590565b4190565b6060815167ffffffffffffffff8111801561034357600080fd5b5060405190808252806020026020018201604052801561037d57816020015b61036a6104a0565b8152602001906001900390816103625790505b50905060005b8251811015610478576000606084838151811061039c57fe5b6020026020010151600001516001600160a01b03168584815181106103bd57fe5b6020026020010151602001516040516103d6919061075a565b6000604051808303816000865af19150503d8060008114610413576040519150601f19603f3d011682016040523d82523d6000602084013e610418565b606091505b5091509150851561044057816104405760405162461bcd60e51b81526004016102ba906107a6565b604051806040016040528083151581526020018281525084848151811061046357fe5b60209081029190910101525050600101610383565b5092915050565b600080606061048f6001856102f4565b9196909550909350915050565b4090565b60408051808201909152600081526060602082015290565b80356001600160a01b03811681146104cf57600080fd5b92915050565b600082601f8301126104e5578081fd5b813567ffffffffffffffff808211156104fc578283fd5b602061050b81828502016108ac565b838152935080840185820160005b858110156105895781358801604080601f19838d0301121561053a57600080fd5b610543816108ac565b61054f8c8885016104b8565b815290820135908782111561056357600080fd5b6105718c8884860101610595565b81880152855250509183019190830190600101610519565b50505050505092915050565b600082601f8301126105a5578081fd5b813567ffffffffffffffff8111156105bb578182fd5b6105ce601f8201601f19166020016108ac565b91508082528360208285010111156105e557600080fd5b8060208401602084013760009082016020015292915050565b60006020828403121561060f578081fd5b61061983836104b8565b9392505050565b600060208284031215610631578081fd5b813567ffffffffffffffff811115610647578182fd5b610653848285016104d5565b949350505050565b6000806040838503121561066d578081fd5b8235801515811461067c578182fd5b9150602083013567ffffffffffffffff811115610697578182fd5b6106a3858286016104d5565b9150509250929050565b6000602082840312156106be578081fd5b5035919050565b6000815180845260208085018081965082840281019150828601855b858110156107215782840389528151805115158552850151604086860181905261070d8187018361072e565b9a87019a95505050908401906001016106e1565b5091979650505050505050565b600081518084526107468160208601602086016108d3565b601f01601f19169290920160200192915050565b6000825161076c8184602087016108d3565b9190910192915050565b6001600160a01b0391909116815260200190565b60006020825261061960208301846106c5565b90815260200190565b60208082526021908201527f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c656040820152601960fa1b606082015260800190565b6020808252818101527f4d756c746963616c6c206167677265676174653a2063616c6c206661696c6564604082015260600190565b600060408201848352602060408185015281855180845260608601915060608382028701019350828701855b8281101561087657605f1988870301845261086486835161072e565b95509284019290840190600101610848565b509398975050505050505050565b6000848252836020830152606060408301526108a360608301846106c5565b95945050505050565b60405181810167ffffffffffffffff811182821017156108cb57600080fd5b604052919050565b60005b838110156108ee5781810151838201526020016108d6565b838111156108fd576000848401525b5050505056fea264697066735822122059b291f83c3d7e16a1cfa193b9d4e5d14e1ad6ef3d2baa4f30d323adb47b2f5764736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x939 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x72425D9D GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x72425D9D EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x86D516E8 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xA8B0574E EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xBCE38BD7 EQ PUSH2 0x162 JUMPI DUP1 PUSH4 0xC3077FA9 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xEE82AC5E EQ PUSH2 0x195 JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0xF28C97D EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x252DBA42 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x27E86D6E EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x399542E9 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x42CBB15C EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x4D2301CC EQ PUSH2 0x12A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x79D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x620 JUMP JUMPDEST PUSH2 0x1AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP3 SWAP2 SWAP1 PUSH2 0x81C JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x2EB JUMP JUMPDEST PUSH2 0x113 PUSH2 0x10E CALLDATASIZE PUSH1 0x4 PUSH2 0x65B JUMP JUMPDEST PUSH2 0x2F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x884 JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x30C JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x5FE JUMP JUMPDEST PUSH2 0x310 JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x31D JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x321 JUMP JUMPDEST PUSH2 0x155 PUSH2 0x325 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x776 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x170 CALLDATASIZE PUSH1 0x4 PUSH2 0x65B JUMP JUMPDEST PUSH2 0x329 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x78A JUMP JUMPDEST PUSH2 0x113 PUSH2 0x190 CALLDATASIZE PUSH1 0x4 PUSH2 0x620 JUMP JUMPDEST PUSH2 0x47F JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x1A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x6AD JUMP JUMPDEST PUSH2 0x49C JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST DUP1 MLOAD NUMBER SWAP1 PUSH1 0x60 SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1FD JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1E8 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 PUSH1 0x60 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x21C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x23D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x256 SWAP2 SWAP1 PUSH2 0x75A 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 0x293 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 0x298 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BA SWAP1 PUSH2 0x7E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2D0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x203 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 NOT NUMBER ADD BLOCKHASH SWAP1 JUMP JUMPDEST NUMBER DUP1 BLOCKHASH PUSH1 0x60 PUSH2 0x303 DUP6 DUP6 PUSH2 0x329 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE SWAP1 JUMP JUMPDEST DIFFICULTY SWAP1 JUMP JUMPDEST GASLIMIT SWAP1 JUMP JUMPDEST COINBASE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x37D JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x36A PUSH2 0x4A0 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x362 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 PUSH1 0x60 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x39C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x3BD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x75A 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 0x413 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 0x418 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP6 ISZERO PUSH2 0x440 JUMPI DUP2 PUSH2 0x440 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BA SWAP1 PUSH2 0x7A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x463 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x383 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 PUSH2 0x48F PUSH1 0x1 DUP6 PUSH2 0x2F4 JUMP JUMPDEST SWAP2 SWAP7 SWAP1 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST BLOCKHASH SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4E5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4FC JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 PUSH2 0x50B DUP2 DUP3 DUP6 MUL ADD PUSH2 0x8AC JUMP JUMPDEST DUP4 DUP2 MSTORE SWAP4 POP DUP1 DUP5 ADD DUP6 DUP3 ADD PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x589 JUMPI DUP2 CALLDATALOAD DUP9 ADD PUSH1 0x40 DUP1 PUSH1 0x1F NOT DUP4 DUP14 SUB ADD SLT ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x543 DUP2 PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x54F DUP13 DUP9 DUP6 ADD PUSH2 0x4B8 JUMP JUMPDEST DUP2 MSTORE SWAP1 DUP3 ADD CALLDATALOAD SWAP1 DUP8 DUP3 GT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x571 DUP13 DUP9 DUP5 DUP7 ADD ADD PUSH2 0x595 JUMP JUMPDEST DUP2 DUP9 ADD MSTORE DUP6 MSTORE POP POP SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x519 JUMP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5A5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5BB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x5CE PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x8AC JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x60F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x619 DUP4 DUP4 PUSH2 0x4B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x631 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x647 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x653 DUP5 DUP3 DUP6 ADD PUSH2 0x4D5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x66D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x67C JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x697 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x6A3 DUP6 DUP3 DUP7 ADD PUSH2 0x4D5 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6BE JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP3 DUP5 MUL DUP2 ADD SWAP2 POP DUP3 DUP7 ADD DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x721 JUMPI DUP3 DUP5 SUB DUP10 MSTORE DUP2 MLOAD DUP1 MLOAD ISZERO ISZERO DUP6 MSTORE DUP6 ADD MLOAD PUSH1 0x40 DUP7 DUP7 ADD DUP2 SWAP1 MSTORE PUSH2 0x70D DUP2 DUP8 ADD DUP4 PUSH2 0x72E JUMP JUMPDEST SWAP11 DUP8 ADD SWAP11 SWAP6 POP POP POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x6E1 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x746 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x8D3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x76C DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x8D3 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x619 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x6C5 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D756C746963616C6C32206167677265676174653A2063616C6C206661696C65 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0xFA SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4D756C746963616C6C206167677265676174653A2063616C6C206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP5 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE PUSH1 0x60 DUP7 ADD SWAP2 POP PUSH1 0x60 DUP4 DUP3 MUL DUP8 ADD ADD SWAP4 POP DUP3 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x876 JUMPI PUSH1 0x5F NOT DUP9 DUP8 SUB ADD DUP5 MSTORE PUSH2 0x864 DUP7 DUP4 MLOAD PUSH2 0x72E JUMP JUMPDEST SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x848 JUMP JUMPDEST POP SWAP4 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP3 MSTORE DUP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x8A3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x6C5 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x8CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8EE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8D6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x8FD JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSIZE 0xB2 SWAP2 0xF8 EXTCODECOPY RETURNDATASIZE PUSH31 0x16A1CFA193B9D4E5D14E1AD6EF3D2BAA4F30D323ADB47B2F5764736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "317:2641:0:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100b45760003560e01c806372425d9d1161007157806372425d9d1461013d57806386d516e814610145578063a8b0574e1461014d578063bce38bd714610162578063c3077fa914610182578063ee82ac5e14610195576100b4565b80630f28c97d146100b9578063252dba42146100d757806327e86d6e146100f8578063399542e91461010057806342cbb15c146101225780634d2301cc1461012a575b600080fd5b6100c16101a8565b6040516100ce919061079d565b60405180910390f35b6100ea6100e5366004610620565b6101ac565b6040516100ce92919061081c565b6100c16102eb565b61011361010e36600461065b565b6102f4565b6040516100ce93929190610884565b6100c161030c565b6100c16101383660046105fe565b610310565b6100c161031d565b6100c1610321565b610155610325565b6040516100ce9190610776565b61017561017036600461065b565b610329565b6040516100ce919061078a565b610113610190366004610620565b61047f565b6100c16101a33660046106ad565b61049c565b4290565b8051439060609067ffffffffffffffff811180156101c957600080fd5b506040519080825280602002602001820160405280156101fd57816020015b60608152602001906001900390816101e85790505b50905060005b83518110156102e5576000606085838151811061021c57fe5b6020026020010151600001516001600160a01b031686848151811061023d57fe5b602002602001015160200151604051610256919061075a565b6000604051808303816000865af19150503d8060008114610293576040519150601f19603f3d011682016040523d82523d6000602084013e610298565b606091505b5091509150816102c35760405162461bcd60e51b81526004016102ba906107e7565b60405180910390fd5b808484815181106102d057fe5b60209081029190910101525050600101610203565b50915091565b60001943014090565b43804060606103038585610329565b90509250925092565b4390565b6001600160a01b03163190565b4490565b4590565b4190565b6060815167ffffffffffffffff8111801561034357600080fd5b5060405190808252806020026020018201604052801561037d57816020015b61036a6104a0565b8152602001906001900390816103625790505b50905060005b8251811015610478576000606084838151811061039c57fe5b6020026020010151600001516001600160a01b03168584815181106103bd57fe5b6020026020010151602001516040516103d6919061075a565b6000604051808303816000865af19150503d8060008114610413576040519150601f19603f3d011682016040523d82523d6000602084013e610418565b606091505b5091509150851561044057816104405760405162461bcd60e51b81526004016102ba906107a6565b604051806040016040528083151581526020018281525084848151811061046357fe5b60209081029190910101525050600101610383565b5092915050565b600080606061048f6001856102f4565b9196909550909350915050565b4090565b60408051808201909152600081526060602082015290565b80356001600160a01b03811681146104cf57600080fd5b92915050565b600082601f8301126104e5578081fd5b813567ffffffffffffffff808211156104fc578283fd5b602061050b81828502016108ac565b838152935080840185820160005b858110156105895781358801604080601f19838d0301121561053a57600080fd5b610543816108ac565b61054f8c8885016104b8565b815290820135908782111561056357600080fd5b6105718c8884860101610595565b81880152855250509183019190830190600101610519565b50505050505092915050565b600082601f8301126105a5578081fd5b813567ffffffffffffffff8111156105bb578182fd5b6105ce601f8201601f19166020016108ac565b91508082528360208285010111156105e557600080fd5b8060208401602084013760009082016020015292915050565b60006020828403121561060f578081fd5b61061983836104b8565b9392505050565b600060208284031215610631578081fd5b813567ffffffffffffffff811115610647578182fd5b610653848285016104d5565b949350505050565b6000806040838503121561066d578081fd5b8235801515811461067c578182fd5b9150602083013567ffffffffffffffff811115610697578182fd5b6106a3858286016104d5565b9150509250929050565b6000602082840312156106be578081fd5b5035919050565b6000815180845260208085018081965082840281019150828601855b858110156107215782840389528151805115158552850151604086860181905261070d8187018361072e565b9a87019a95505050908401906001016106e1565b5091979650505050505050565b600081518084526107468160208601602086016108d3565b601f01601f19169290920160200192915050565b6000825161076c8184602087016108d3565b9190910192915050565b6001600160a01b0391909116815260200190565b60006020825261061960208301846106c5565b90815260200190565b60208082526021908201527f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c656040820152601960fa1b606082015260800190565b6020808252818101527f4d756c746963616c6c206167677265676174653a2063616c6c206661696c6564604082015260600190565b600060408201848352602060408185015281855180845260608601915060608382028701019350828701855b8281101561087657605f1988870301845261086486835161072e565b95509284019290840190600101610848565b509398975050505050505050565b6000848252836020830152606060408301526108a360608301846106c5565b95945050505050565b60405181810167ffffffffffffffff811182821017156108cb57600080fd5b604052919050565b60005b838110156108ee5781810151838201526020016108d6565b838111156108fd576000848401525b5050505056fea264697066735822122059b291f83c3d7e16a1cfa193b9d4e5d14e1ad6ef3d2baa4f30d323adb47b2f5764736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x72425D9D GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x72425D9D EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x86D516E8 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xA8B0574E EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xBCE38BD7 EQ PUSH2 0x162 JUMPI DUP1 PUSH4 0xC3077FA9 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xEE82AC5E EQ PUSH2 0x195 JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0xF28C97D EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x252DBA42 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x27E86D6E EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x399542E9 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x42CBB15C EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x4D2301CC EQ PUSH2 0x12A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x79D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x620 JUMP JUMPDEST PUSH2 0x1AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP3 SWAP2 SWAP1 PUSH2 0x81C JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x2EB JUMP JUMPDEST PUSH2 0x113 PUSH2 0x10E CALLDATASIZE PUSH1 0x4 PUSH2 0x65B JUMP JUMPDEST PUSH2 0x2F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x884 JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x30C JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x5FE JUMP JUMPDEST PUSH2 0x310 JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x31D JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x321 JUMP JUMPDEST PUSH2 0x155 PUSH2 0x325 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x776 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x170 CALLDATASIZE PUSH1 0x4 PUSH2 0x65B JUMP JUMPDEST PUSH2 0x329 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x78A JUMP JUMPDEST PUSH2 0x113 PUSH2 0x190 CALLDATASIZE PUSH1 0x4 PUSH2 0x620 JUMP JUMPDEST PUSH2 0x47F JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x1A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x6AD JUMP JUMPDEST PUSH2 0x49C JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST DUP1 MLOAD NUMBER SWAP1 PUSH1 0x60 SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1FD JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1E8 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 PUSH1 0x60 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x21C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x23D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x256 SWAP2 SWAP1 PUSH2 0x75A 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 0x293 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 0x298 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BA SWAP1 PUSH2 0x7E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2D0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x203 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 NOT NUMBER ADD BLOCKHASH SWAP1 JUMP JUMPDEST NUMBER DUP1 BLOCKHASH PUSH1 0x60 PUSH2 0x303 DUP6 DUP6 PUSH2 0x329 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST NUMBER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE SWAP1 JUMP JUMPDEST DIFFICULTY SWAP1 JUMP JUMPDEST GASLIMIT SWAP1 JUMP JUMPDEST COINBASE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x37D JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x36A PUSH2 0x4A0 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x362 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 PUSH1 0x60 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x39C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x3BD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x75A 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 0x413 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 0x418 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP6 ISZERO PUSH2 0x440 JUMPI DUP2 PUSH2 0x440 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BA SWAP1 PUSH2 0x7A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x463 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x383 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 PUSH2 0x48F PUSH1 0x1 DUP6 PUSH2 0x2F4 JUMP JUMPDEST SWAP2 SWAP7 SWAP1 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST BLOCKHASH SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4E5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4FC JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 PUSH2 0x50B DUP2 DUP3 DUP6 MUL ADD PUSH2 0x8AC JUMP JUMPDEST DUP4 DUP2 MSTORE SWAP4 POP DUP1 DUP5 ADD DUP6 DUP3 ADD PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x589 JUMPI DUP2 CALLDATALOAD DUP9 ADD PUSH1 0x40 DUP1 PUSH1 0x1F NOT DUP4 DUP14 SUB ADD SLT ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x543 DUP2 PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x54F DUP13 DUP9 DUP6 ADD PUSH2 0x4B8 JUMP JUMPDEST DUP2 MSTORE SWAP1 DUP3 ADD CALLDATALOAD SWAP1 DUP8 DUP3 GT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x571 DUP13 DUP9 DUP5 DUP7 ADD ADD PUSH2 0x595 JUMP JUMPDEST DUP2 DUP9 ADD MSTORE DUP6 MSTORE POP POP SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x519 JUMP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5A5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5BB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x5CE PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x8AC JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x60F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x619 DUP4 DUP4 PUSH2 0x4B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x631 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x647 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x653 DUP5 DUP3 DUP6 ADD PUSH2 0x4D5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x66D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x67C JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x697 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x6A3 DUP6 DUP3 DUP7 ADD PUSH2 0x4D5 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6BE JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP3 DUP5 MUL DUP2 ADD SWAP2 POP DUP3 DUP7 ADD DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x721 JUMPI DUP3 DUP5 SUB DUP10 MSTORE DUP2 MLOAD DUP1 MLOAD ISZERO ISZERO DUP6 MSTORE DUP6 ADD MLOAD PUSH1 0x40 DUP7 DUP7 ADD DUP2 SWAP1 MSTORE PUSH2 0x70D DUP2 DUP8 ADD DUP4 PUSH2 0x72E JUMP JUMPDEST SWAP11 DUP8 ADD SWAP11 SWAP6 POP POP POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x6E1 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x746 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x8D3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x76C DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x8D3 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x619 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x6C5 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D756C746963616C6C32206167677265676174653A2063616C6C206661696C65 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0xFA SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4D756C746963616C6C206167677265676174653A2063616C6C206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD DUP5 DUP4 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE PUSH1 0x60 DUP7 ADD SWAP2 POP PUSH1 0x60 DUP4 DUP3 MUL DUP8 ADD ADD SWAP4 POP DUP3 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x876 JUMPI PUSH1 0x5F NOT DUP9 DUP8 SUB ADD DUP5 MSTORE PUSH2 0x864 DUP7 DUP4 MLOAD PUSH2 0x72E JUMP JUMPDEST SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x848 JUMP JUMPDEST POP SWAP4 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP3 MSTORE DUP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x8A3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x6C5 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x8CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8EE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8D6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x8FD JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSIZE 0xB2 SWAP2 0xF8 EXTCODECOPY RETURNDATASIZE PUSH31 0x16A1CFA193B9D4E5D14E1AD6EF3D2BAA4F30D323ADB47B2F5764736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "317:2641:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1791:120;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;490:444;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2035:124::-;;;:::i;2654:302::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;1304:111::-;;;:::i;1916:114::-;;;;;;:::i;:::-;;:::i;1541:124::-;;;:::i;1670:116::-;;;:::i;1420:::-;;;:::i;:::-;;;;;;;:::i;2164:485::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;939:221::-;;;;;;:::i;:::-;;:::i;1165:134::-;;;;;;:::i;:::-;;:::i;1791:120::-;1889:15;;1791:120::o;490:444::-;665:12;;618;;567:25;;653;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;640:38;;692:9;688:240;711:5;:12;707:1;:16;688:240;;;745:12;759:16;779:5;785:1;779:8;;;;;;;;;;;;;;:15;;;-1:-1:-1;;;;;779:20:0;800:5;806:1;800:8;;;;;;;;;;;;;;:17;;;779:39;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;744:74;;;;840:7;832:52;;;;-1:-1:-1;;;832:52:0;;;;;;;:::i;:::-;;;;;;;;;914:3;898:10;909:1;898:13;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;725:3:0;;688:240;;;;490:444;;;:::o;2035:124::-;-1:-1:-1;;2135:12:0;:16;2125:27;;2035:124::o;2654:302::-;2834:12;2868:23;;2782:26;2914:35;2927:14;2943:5;2914:12;:35::i;:::-;2901:48;;2654:302;;;;;:::o;1304:111::-;1396:12;;1304:111::o;1916:114::-;-1:-1:-1;;;;;2011:12:0;;;1916:114::o;1541:124::-;1642:16;;1541:124::o;1670:116::-;1765:14;;1670:116::o;1420:::-;1515:14;;1420:116::o;2164:485::-;2244:26;2308:5;:12;2295:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2282:39;;2335:9;2331:312;2354:5;:12;2350:1;:16;2331:312;;;2388:12;2402:16;2422:5;2428:1;2422:8;;;;;;;;;;;;;;:15;;;-1:-1:-1;;;;;2422:20:0;2443:5;2449:1;2443:8;;;;;;;;;;;;;;:17;;;2422:39;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2387:74;;;;2480:14;2476:106;;;2522:7;2514:53;;;;-1:-1:-1;;;2514:53:0;;;;;;;:::i;:::-;2612:20;;;;;;;;2619:7;2612:20;;;;;;2628:3;2612:20;;;2596:10;2607:1;2596:13;;;;;;;;;;;;;;;;;:36;-1:-1:-1;;2368:3:0;;2331:312;;;;2164:485;;;;:::o;939:221::-;1003:19;1024:17;1043:26;1120:33;1141:4;1147:5;1120:20;:33::i;:::-;1081:72;;;;-1:-1:-1;1081:72:0;;-1:-1:-1;939:221:0;-1:-1:-1;;939:221:0:o;1165:134::-;1270:22;;1165:134::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;-1:-1;;;;;15373:54;;16113:35;;16103:2;;16162:1;;16152:12;16103:2;57:78;;;;:::o;175:735::-;;311:3;304:4;296:6;292:17;288:27;278:2;;-1:-1;;319:12;278:2;366:6;353:20;12616:18;;12608:6;12605:30;12602:2;;;-1:-1;;12638:12;12602:2;12683:4;388:99;12683:4;;12675:6;12671:17;12736:15;388:99;:::i;:::-;515:21;;;379:108;-1:-1;572:14;;;547:17;;;667:1;652:252;677:6;674:1;671:13;652:252;;;760:3;747:17;551:6;735:30;1635:4;;1614:19;;735:30;1618:3;1614:19;;1610:30;1607:2;;;667:1;;1643:12;1607:2;1671:20;1635:4;1671:20;:::i;:::-;1775:49;1820:3;12683:4;735:30;;1775:49;:::i;:::-;1750:75;;1903:18;;;1890:32;;1931:30;;;1928:2;;;667:1;;1964:12;1928:2;2009:58;2063:3;12683:4;2054:6;735:30;2039:22;;2009:58;:::i;:::-;1991:16;;;1984:84;772:69;;-1:-1;;855:14;;;;883;;;;699:1;692:9;652:252;;;656:14;;;;;;271:639;;;;:::o;1050:440::-;;1151:3;1144:4;1136:6;1132:17;1128:27;1118:2;;-1:-1;;1159:12;1118:2;1206:6;1193:20;12911:18;12903:6;12900:30;12897:2;;;-1:-1;;12933:12;12897:2;1228:64;1614:19;12987:17;;-1:-1;;12983:33;13074:4;13064:15;1228:64;:::i;:::-;1219:73;;1312:6;1305:5;1298:21;1416:3;13074:4;1407:6;1340;1398:16;;1395:25;1392:2;;;1433:1;;1423:12;1392:2;15600:6;13074:4;1340:6;1336:17;13074:4;1374:5;1370:16;15577:30;15656:1;15638:16;;;13074:4;15638:16;15631:27;1374:5;1111:379;-1:-1;;1111:379::o;2233:241::-;;2337:2;2325:9;2316:7;2312:23;2308:32;2305:2;;;-1:-1;;2343:12;2305:2;2405:53;2450:7;2426:22;2405:53;:::i;:::-;2395:63;2299:175;-1:-1;;;2299:175::o;2481:415::-;;2629:2;2617:9;2608:7;2604:23;2600:32;2597:2;;;-1:-1;;2635:12;2597:2;2693:17;2680:31;2731:18;2723:6;2720:30;2717:2;;;-1:-1;;2753:12;2717:2;2783:97;2872:7;2863:6;2852:9;2848:22;2783:97;:::i;:::-;2773:107;2591:305;-1:-1;;;;2591:305::o;2903:534::-;;;3065:2;3053:9;3044:7;3040:23;3036:32;3033:2;;;-1:-1;;3071:12;3033:2;995:6;982:20;16259:5;15206:13;15199:21;16237:5;16234:32;16224:2;;-1:-1;;16270:12;16224:2;3123:60;-1:-1;3248:2;3233:18;;3220:32;3272:18;3261:30;;3258:2;;;-1:-1;;3294:12;3258:2;3324:97;3413:7;3404:6;3393:9;3389:22;3324:97;:::i;:::-;3314:107;;;3027:410;;;;;:::o;3444:241::-;;3548:2;3536:9;3527:7;3523:23;3519:32;3516:2;;;-1:-1;;3554:12;3516:2;-1:-1;2163:20;;3510:175;-1:-1;3510:175::o;5280:1024::-;;5539:5;13555:12;14291:6;14286:3;14279:19;14328:4;;14323:3;14319:14;5551:115;;;;14328:4;5723:6;5719:17;5714:3;5710:27;5698:39;;14328:4;5830:5;13220:14;-1:-1;5869:396;5894:6;5891:1;5888:13;5869:396;;;5946:20;;;5934:33;;5995:13;;8209:23;;15206:13;15199:21;6367:34;;8369:16;;8363:23;8140:4;8406:14;;;8399:38;;;8452:71;8131:14;;;8363:23;8452:71;:::i;:::-;6244:14;;;;6015:116;-1:-1;;;13988:14;;;;5916:1;5909:9;5869:396;;;-1:-1;6288:10;;5448:856;-1:-1;;;;;;;5448:856::o;6533:323::-;;6665:5;13555:12;14291:6;14286:3;14279:19;6748:52;6793:6;14328:4;14323:3;14319:14;14328:4;6774:5;6770:16;6748:52;:::i;:::-;1614:19;16017:14;-1:-1;;16013:28;6812:39;;;;14328:4;6812:39;;6613:243;-1:-1;;6613:243::o;8688:271::-;;7023:5;13555:12;7134:52;7179:6;7174:3;7167:4;7160:5;7156:16;7134:52;:::i;:::-;7198:16;;;;;8822:137;-1:-1;;8822:137::o;8966:222::-;-1:-1;;;;;15373:54;;;;4211:37;;9093:2;9078:18;;9064:124::o;9195:458::-;;9416:2;9437:17;9430:47;9491:152;9416:2;9405:9;9401:18;9629:6;9491:152;:::i;9660:222::-;6484:37;;;9787:2;9772:18;;9758:124::o;9889:416::-;10089:2;10103:47;;;7451:2;10074:18;;;14279:19;7487:34;14319:14;;;7467:55;-1:-1;;;7542:12;;;7535:25;7579:12;;;10060:245::o;10312:416::-;10512:2;10526:47;;;10497:18;;;14279:19;7866:34;14319:14;;;7846:55;7920:12;;;10483:245::o;10964:517::-;;11187:2;11176:9;11172:18;6514:5;6491:3;6484:37;11305:2;11187;11305;11294:9;11290:18;11283:48;11345:126;4507:5;13555:12;14291:6;14286:3;14279:19;14319:14;11176:9;14319:14;4519:102;;14319:14;11305:2;4678:6;4674:17;11176:9;4665:27;;4653:39;;11305:2;4772:5;13220:14;-1:-1;4811:357;4836:6;4833:1;4830:13;4811:357;;;4888:20;;11176:9;4892:4;4888:20;;4883:3;4876:33;3812:64;3872:3;4943:6;4937:13;3812:64;:::i;:::-;4957:90;-1:-1;5147:14;;;;13988;;;;4858:1;4851:9;4811:357;;;-1:-1;11337:134;;11158:323;-1:-1;;;;;;;;11158:323::o;11488:680::-;;6514:5;6491:3;6484:37;6514:5;11929:2;11918:9;11914:18;6484:37;11765:2;11966;11955:9;11951:18;11944:48;12006:152;11765:2;11754:9;11750:18;12144:6;12006:152;:::i;:::-;11998:160;11736:432;-1:-1;;;;;11736:432::o;12175:256::-;12237:2;12231:9;12263:17;;;12338:18;12323:34;;12359:22;;;12320:62;12317:2;;;12395:1;;12385:12;12317:2;12237;12404:22;12215:216;;-1:-1;12215:216::o;15673:268::-;15738:1;15745:101;15759:6;15756:1;15753:13;15745:101;;;15826:11;;;15820:18;15807:11;;;15800:39;15781:2;15774:10;15745:101;;;15861:6;15858:1;15855:13;15852:2;;;15738:1;15917:6;15912:3;15908:16;15901:27;15852:2;;15722:219;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "472200",
                "executionCost": "505",
                "totalCost": "472705"
              },
              "external": {
                "aggregate((address,bytes)[])": "infinite",
                "blockAndAggregate((address,bytes)[])": "infinite",
                "getBlockHash(uint256)": "432",
                "getBlockNumber()": "316",
                "getCurrentBlockCoinbase()": "295",
                "getCurrentBlockDifficulty()": "227",
                "getCurrentBlockGasLimit()": "249",
                "getCurrentBlockTimestamp()": "228",
                "getEthBalance(address)": "1217",
                "getLastBlockHash()": "301",
                "tryAggregate(bool,(address,bytes)[])": "infinite",
                "tryBlockAndAggregate(bool,(address,bytes)[])": "infinite"
              }
            },
            "methodIdentifiers": {
              "aggregate((address,bytes)[])": "252dba42",
              "blockAndAggregate((address,bytes)[])": "c3077fa9",
              "getBlockHash(uint256)": "ee82ac5e",
              "getBlockNumber()": "42cbb15c",
              "getCurrentBlockCoinbase()": "a8b0574e",
              "getCurrentBlockDifficulty()": "72425d9d",
              "getCurrentBlockGasLimit()": "86d516e8",
              "getCurrentBlockTimestamp()": "0f28c97d",
              "getEthBalance(address)": "4d2301cc",
              "getLastBlockHash()": "27e86d6e",
              "tryAggregate(bool,(address,bytes)[])": "bce38bd7",
              "tryBlockAndAggregate(bool,(address,bytes)[])": "399542e9"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall2.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall2.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"blockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall2.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockCoinbase\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gaslimit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getEthBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall2.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryAggregate\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall2.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall2.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryBlockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall2.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Michael Elliot <mike@makerdao.com>Joshua Levine <joshua@makerdao.com>Nick Johnson <arachnid@notdot.net>\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Multicall2 - Aggregate results from multiple read-only function calls\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Multicall2.sol\":\"Multicall2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Multicall2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @title Multicall2 - Aggregate results from multiple read-only function calls\\n/// @author Michael Elliot <mike@makerdao.com>\\n/// @author Joshua Levine <joshua@makerdao.com>\\n/// @author Nick Johnson <arachnid@notdot.net>\\n\\ncontract Multicall2 {\\n    struct Call {\\n        address target;\\n        bytes callData;\\n    }\\n    struct Result {\\n        bool success;\\n        bytes returnData;\\n    }\\n\\n    function aggregate(Call[] memory calls) public returns (uint256 blockNumber, bytes[] memory returnData) {\\n        blockNumber = block.number;\\n        returnData = new bytes[](calls.length);\\n        for(uint256 i = 0; i < calls.length; i++) {\\n            (bool success, bytes memory ret) = calls[i].target.call(calls[i].callData);\\n            require(success, \\\"Multicall aggregate: call failed\\\");\\n            returnData[i] = ret;\\n        }\\n    }\\n    function blockAndAggregate(Call[] memory calls) public returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData) {\\n        (blockNumber, blockHash, returnData) = tryBlockAndAggregate(true, calls);\\n    }\\n    function getBlockHash(uint256 blockNumber) public view returns (bytes32 blockHash) {\\n        blockHash = blockhash(blockNumber);\\n    }\\n    function getBlockNumber() public view returns (uint256 blockNumber) {\\n        blockNumber = block.number;\\n    }\\n    function getCurrentBlockCoinbase() public view returns (address coinbase) {\\n        coinbase = block.coinbase;\\n    }\\n    function getCurrentBlockDifficulty() public view returns (uint256 difficulty) {\\n        difficulty = block.difficulty;\\n    }\\n    function getCurrentBlockGasLimit() public view returns (uint256 gaslimit) {\\n        gaslimit = block.gaslimit;\\n    }\\n    function getCurrentBlockTimestamp() public view returns (uint256 timestamp) {\\n        timestamp = block.timestamp;\\n    }\\n    function getEthBalance(address addr) public view returns (uint256 balance) {\\n        balance = addr.balance;\\n    }\\n    function getLastBlockHash() public view returns (bytes32 blockHash) {\\n        blockHash = blockhash(block.number - 1);\\n    }\\n    function tryAggregate(bool requireSuccess, Call[] memory calls) public returns (Result[] memory returnData) {\\n        returnData = new Result[](calls.length);\\n        for(uint256 i = 0; i < calls.length; i++) {\\n            (bool success, bytes memory ret) = calls[i].target.call(calls[i].callData);\\n\\n            if (requireSuccess) {\\n                require(success, \\\"Multicall2 aggregate: call failed\\\");\\n            }\\n\\n            returnData[i] = Result(success, ret);\\n        }\\n    }\\n    function tryBlockAndAggregate(bool requireSuccess, Call[] memory calls) public returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData) {\\n        blockNumber = block.number;\\n        blockHash = blockhash(block.number);\\n        returnData = tryAggregate(requireSuccess, calls);\\n    }\\n}\",\"keccak256\":\"0x2a4124cb2b845bbddccdd443eef91d11edde470ce8af17b50df32aefc560273d\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      }
    },
    "sources": {
      "contracts/Multicall2.sol": {
        "ast": {
          "absolutePath": "contracts/Multicall2.sol",
          "exportedSymbols": {
            "Multicall2": [
              301
            ]
          },
          "id": 302,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:24:0"
            },
            {
              "id": 2,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "58:33:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3,
                "nodeType": "StructuredDocumentation",
                "src": "93:223:0",
                "text": "@title Multicall2 - Aggregate results from multiple read-only function calls\n @author Michael Elliot <mike@makerdao.com>\n @author Joshua Levine <joshua@makerdao.com>\n @author Nick Johnson <arachnid@notdot.net>"
              },
              "fullyImplemented": true,
              "id": 301,
              "linearizedBaseContracts": [
                301
              ],
              "name": "Multicall2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "Multicall2.Call",
                  "id": 8,
                  "members": [
                    {
                      "constant": false,
                      "id": 5,
                      "mutability": "mutable",
                      "name": "target",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8,
                      "src": "365:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "365:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7,
                      "mutability": "mutable",
                      "name": "callData",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8,
                      "src": "389:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "389:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "Call",
                  "nodeType": "StructDefinition",
                  "scope": 301,
                  "src": "343:67:0",
                  "visibility": "public"
                },
                {
                  "canonicalName": "Multicall2.Result",
                  "id": 13,
                  "members": [
                    {
                      "constant": false,
                      "id": 10,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13,
                      "src": "439:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "439:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13,
                      "src": "461:16:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 11,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "461:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "Result",
                  "nodeType": "StructDefinition",
                  "scope": 301,
                  "src": "415:69:0",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 77,
                    "nodeType": "Block",
                    "src": "594:340:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 24,
                            "name": "blockNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19,
                            "src": "604:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "618:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 26,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "618:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "604:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 28,
                        "nodeType": "ExpressionStatement",
                        "src": "604:26:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 36,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 29,
                            "name": "returnData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22,
                            "src": "640:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 33,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16,
                                  "src": "665:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct Multicall2.Call memory[] memory"
                                  }
                                },
                                "id": 34,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "665:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 32,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "653:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 30,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "657:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage_ptr",
                                    "typeString": "bytes"
                                  }
                                },
                                "id": 31,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "657:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                                  "typeString": "bytes[]"
                                }
                              }
                            },
                            "id": 35,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "653:25:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "src": "640:38:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                            "typeString": "bytes memory[] memory"
                          }
                        },
                        "id": 37,
                        "nodeType": "ExpressionStatement",
                        "src": "640:38:0"
                      },
                      {
                        "body": {
                          "id": 75,
                          "nodeType": "Block",
                          "src": "730:198:0",
                          "statements": [
                            {
                              "assignments": [
                                50,
                                52
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 50,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 75,
                                  "src": "745:12:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 49,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "745:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 52,
                                  "mutability": "mutable",
                                  "name": "ret",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 75,
                                  "src": "759:16:0",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 51,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "759:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 63,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 58,
                                        "name": "calls",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16,
                                        "src": "800:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct Multicall2.Call memory[] memory"
                                        }
                                      },
                                      "id": 60,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 59,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 39,
                                        "src": "806:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "800:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Call_$8_memory_ptr",
                                        "typeString": "struct Multicall2.Call memory"
                                      }
                                    },
                                    "id": 61,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "callData",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7,
                                    "src": "800:17:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 53,
                                        "name": "calls",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16,
                                        "src": "779:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct Multicall2.Call memory[] memory"
                                        }
                                      },
                                      "id": 55,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 54,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 39,
                                        "src": "785:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "779:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Call_$8_memory_ptr",
                                        "typeString": "struct Multicall2.Call memory"
                                      }
                                    },
                                    "id": 56,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "target",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5,
                                    "src": "779:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 57,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "779:20:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                  }
                                },
                                "id": 62,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "779:39:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "744:74:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 65,
                                    "name": "success",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 50,
                                    "src": "840:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "4d756c746963616c6c206167677265676174653a2063616c6c206661696c6564",
                                    "id": 66,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "849:34:0",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_f00f29c42686fd9baf65b5bd8fa63c642ded98b2f947cb8aeb6a004fb9f654ec",
                                      "typeString": "literal_string \"Multicall aggregate: call failed\""
                                    },
                                    "value": "Multicall aggregate: call failed"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_f00f29c42686fd9baf65b5bd8fa63c642ded98b2f947cb8aeb6a004fb9f654ec",
                                      "typeString": "literal_string \"Multicall aggregate: call failed\""
                                    }
                                  ],
                                  "id": 64,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "832:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 67,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "832:52:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 68,
                              "nodeType": "ExpressionStatement",
                              "src": "832:52:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 73,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 69,
                                    "name": "returnData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22,
                                    "src": "898:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "bytes memory[] memory"
                                    }
                                  },
                                  "id": 71,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 70,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 39,
                                    "src": "909:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "898:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 72,
                                  "name": "ret",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 52,
                                  "src": "914:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "898:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 74,
                              "nodeType": "ExpressionStatement",
                              "src": "898:19:0"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 45,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 42,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39,
                            "src": "707:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 43,
                              "name": "calls",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16,
                              "src": "711:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct Multicall2.Call memory[] memory"
                              }
                            },
                            "id": 44,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "711:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "707:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 76,
                        "initializationExpression": {
                          "assignments": [
                            39
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 39,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 76,
                              "src": "692:9:0",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 38,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "692:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 41,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 40,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "704:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "692:13:0"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 47,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "725:3:0",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 46,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39,
                              "src": "725:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 48,
                          "nodeType": "ExpressionStatement",
                          "src": "725:3:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "688:240:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "252dba42",
                  "id": 78,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "aggregate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 17,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16,
                        "mutability": "mutable",
                        "name": "calls",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 78,
                        "src": "509:19:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Multicall2.Call[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 14,
                            "name": "Call",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 8,
                            "src": "509:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Call_$8_storage_ptr",
                              "typeString": "struct Multicall2.Call"
                            }
                          },
                          "id": 15,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "509:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Call_$8_storage_$dyn_storage_ptr",
                            "typeString": "struct Multicall2.Call[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "508:21:0"
                  },
                  "returnParameters": {
                    "id": 23,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19,
                        "mutability": "mutable",
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 78,
                        "src": "546:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "546:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22,
                        "mutability": "mutable",
                        "name": "returnData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 78,
                        "src": "567:25:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 20,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "567:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 21,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "567:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "545:48:0"
                  },
                  "scope": 301,
                  "src": "490:444:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 101,
                    "nodeType": "Block",
                    "src": "1071:89:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 99,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 91,
                                "name": "blockNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 84,
                                "src": "1082:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 92,
                                "name": "blockHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 86,
                                "src": "1095:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 93,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 89,
                                "src": "1106:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct Multicall2.Result memory[] memory"
                                }
                              }
                            ],
                            "id": 94,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "1081:36:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes32_$_t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "tuple(uint256,bytes32,struct Multicall2.Result memory[] memory)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 96,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1141:4:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              {
                                "argumentTypes": null,
                                "id": 97,
                                "name": "calls",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 81,
                                "src": "1147:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct Multicall2.Call memory[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct Multicall2.Call memory[] memory"
                                }
                              ],
                              "id": 95,
                              "name": "tryBlockAndAggregate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 300,
                              "src": "1120:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr_$returns$_t_uint256_$_t_bytes32_$_t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (bool,struct Multicall2.Call memory[] memory) returns (uint256,bytes32,struct Multicall2.Result memory[] memory)"
                              }
                            },
                            "id": 98,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1120:33:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes32_$_t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "tuple(uint256,bytes32,struct Multicall2.Result memory[] memory)"
                            }
                          },
                          "src": "1081:72:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 100,
                        "nodeType": "ExpressionStatement",
                        "src": "1081:72:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "c3077fa9",
                  "id": 102,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "blockAndAggregate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 82,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 81,
                        "mutability": "mutable",
                        "name": "calls",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 102,
                        "src": "966:19:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Multicall2.Call[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 79,
                            "name": "Call",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 8,
                            "src": "966:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Call_$8_storage_ptr",
                              "typeString": "struct Multicall2.Call"
                            }
                          },
                          "id": 80,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "966:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Call_$8_storage_$dyn_storage_ptr",
                            "typeString": "struct Multicall2.Call[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "965:21:0"
                  },
                  "returnParameters": {
                    "id": 90,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 84,
                        "mutability": "mutable",
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 102,
                        "src": "1003:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 83,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1003:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 86,
                        "mutability": "mutable",
                        "name": "blockHash",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 102,
                        "src": "1024:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 85,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1024:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 89,
                        "mutability": "mutable",
                        "name": "returnData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 102,
                        "src": "1043:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Multicall2.Result[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 87,
                            "name": "Result",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 13,
                            "src": "1043:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Result_$13_storage_ptr",
                              "typeString": "struct Multicall2.Result"
                            }
                          },
                          "id": 88,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1043:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Result_$13_storage_$dyn_storage_ptr",
                            "typeString": "struct Multicall2.Result[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1002:68:0"
                  },
                  "scope": 301,
                  "src": "939:221:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 115,
                    "nodeType": "Block",
                    "src": "1248:51:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 109,
                            "name": "blockHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 107,
                            "src": "1258:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 111,
                                "name": "blockNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 104,
                                "src": "1280:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 110,
                              "name": "blockhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -5,
                              "src": "1270:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (uint256) view returns (bytes32)"
                              }
                            },
                            "id": 112,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1270:22:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1258:34:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 114,
                        "nodeType": "ExpressionStatement",
                        "src": "1258:34:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "ee82ac5e",
                  "id": 116,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBlockHash",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 105,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 104,
                        "mutability": "mutable",
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 116,
                        "src": "1187:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 103,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1187:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1186:21:0"
                  },
                  "returnParameters": {
                    "id": 108,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 107,
                        "mutability": "mutable",
                        "name": "blockHash",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 116,
                        "src": "1229:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 106,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1229:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1228:19:0"
                  },
                  "scope": 301,
                  "src": "1165:134:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 126,
                    "nodeType": "Block",
                    "src": "1372:43:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 124,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 121,
                            "name": "blockNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 119,
                            "src": "1382:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 122,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1396:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1396:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1382:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 125,
                        "nodeType": "ExpressionStatement",
                        "src": "1382:26:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "42cbb15c",
                  "id": 127,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBlockNumber",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 117,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1327:2:0"
                  },
                  "returnParameters": {
                    "id": 120,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 119,
                        "mutability": "mutable",
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 127,
                        "src": "1351:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 118,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1351:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1350:21:0"
                  },
                  "scope": 301,
                  "src": "1304:111:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 137,
                    "nodeType": "Block",
                    "src": "1494:42:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 132,
                            "name": "coinbase",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 130,
                            "src": "1504:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 133,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1515:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "coinbase",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1515:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1504:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 136,
                        "nodeType": "ExpressionStatement",
                        "src": "1504:25:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "a8b0574e",
                  "id": 138,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrentBlockCoinbase",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 128,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1452:2:0"
                  },
                  "returnParameters": {
                    "id": 131,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 130,
                        "mutability": "mutable",
                        "name": "coinbase",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 138,
                        "src": "1476:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 129,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1476:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1475:18:0"
                  },
                  "scope": 301,
                  "src": "1420:116:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 148,
                    "nodeType": "Block",
                    "src": "1619:46:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 143,
                            "name": "difficulty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 141,
                            "src": "1629:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 144,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1642:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "difficulty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1642:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1629:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 147,
                        "nodeType": "ExpressionStatement",
                        "src": "1629:29:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "72425d9d",
                  "id": 149,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrentBlockDifficulty",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 139,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1575:2:0"
                  },
                  "returnParameters": {
                    "id": 142,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 141,
                        "mutability": "mutable",
                        "name": "difficulty",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 149,
                        "src": "1599:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 140,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1599:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1598:20:0"
                  },
                  "scope": 301,
                  "src": "1541:124:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 159,
                    "nodeType": "Block",
                    "src": "1744:42:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 157,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 154,
                            "name": "gaslimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 152,
                            "src": "1754:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 155,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1765:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "gaslimit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1765:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1754:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 158,
                        "nodeType": "ExpressionStatement",
                        "src": "1754:25:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "86d516e8",
                  "id": 160,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrentBlockGasLimit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 150,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1702:2:0"
                  },
                  "returnParameters": {
                    "id": 153,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 152,
                        "mutability": "mutable",
                        "name": "gaslimit",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 160,
                        "src": "1726:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 151,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1726:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1725:18:0"
                  },
                  "scope": 301,
                  "src": "1670:116:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 170,
                    "nodeType": "Block",
                    "src": "1867:44:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 165,
                            "name": "timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 163,
                            "src": "1877:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 166,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1889:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 167,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1889:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1877:27:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 169,
                        "nodeType": "ExpressionStatement",
                        "src": "1877:27:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "0f28c97d",
                  "id": 171,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrentBlockTimestamp",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 161,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1824:2:0"
                  },
                  "returnParameters": {
                    "id": 164,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 163,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 171,
                        "src": "1848:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 162,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1848:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1847:19:0"
                  },
                  "scope": 301,
                  "src": "1791:120:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 183,
                    "nodeType": "Block",
                    "src": "1991:39:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 178,
                            "name": "balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 176,
                            "src": "2001:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 179,
                              "name": "addr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 173,
                              "src": "2011:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2011:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2001:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 182,
                        "nodeType": "ExpressionStatement",
                        "src": "2001:22:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "4d2301cc",
                  "id": 184,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getEthBalance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 174,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 173,
                        "mutability": "mutable",
                        "name": "addr",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 184,
                        "src": "1939:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 172,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1939:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1938:14:0"
                  },
                  "returnParameters": {
                    "id": 177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 176,
                        "mutability": "mutable",
                        "name": "balance",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 184,
                        "src": "1974:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 175,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1974:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1973:17:0"
                  },
                  "scope": 301,
                  "src": "1916:114:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 198,
                    "nodeType": "Block",
                    "src": "2103:56:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 189,
                            "name": "blockHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 187,
                            "src": "2113:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 191,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "2135:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 192,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "number",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2135:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2150:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "2135:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 190,
                              "name": "blockhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -5,
                              "src": "2125:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (uint256) view returns (bytes32)"
                              }
                            },
                            "id": 195,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2125:27:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2113:39:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 197,
                        "nodeType": "ExpressionStatement",
                        "src": "2113:39:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "27e86d6e",
                  "id": 199,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLastBlockHash",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 185,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2060:2:0"
                  },
                  "returnParameters": {
                    "id": 188,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 187,
                        "mutability": "mutable",
                        "name": "blockHash",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 199,
                        "src": "2084:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 186,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2084:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2083:19:0"
                  },
                  "scope": 301,
                  "src": "2035:124:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 264,
                    "nodeType": "Block",
                    "src": "2272:377:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 210,
                            "name": "returnData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 208,
                            "src": "2282:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct Multicall2.Result memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 214,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 204,
                                  "src": "2308:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct Multicall2.Call memory[] memory"
                                  }
                                },
                                "id": 215,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2308:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "2295:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (struct Multicall2.Result memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "contractScope": null,
                                  "id": 211,
                                  "name": "Result",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 13,
                                  "src": "2299:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Result_$13_storage_ptr",
                                    "typeString": "struct Multicall2.Result"
                                  }
                                },
                                "id": 212,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "2299:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Result_$13_storage_$dyn_storage_ptr",
                                  "typeString": "struct Multicall2.Result[]"
                                }
                              }
                            },
                            "id": 216,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2295:26:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct Multicall2.Result memory[] memory"
                            }
                          },
                          "src": "2282:39:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct Multicall2.Result memory[] memory"
                          }
                        },
                        "id": 218,
                        "nodeType": "ExpressionStatement",
                        "src": "2282:39:0"
                      },
                      {
                        "body": {
                          "id": 262,
                          "nodeType": "Block",
                          "src": "2373:270:0",
                          "statements": [
                            {
                              "assignments": [
                                231,
                                233
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 231,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 262,
                                  "src": "2388:12:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 230,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2388:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 233,
                                  "mutability": "mutable",
                                  "name": "ret",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 262,
                                  "src": "2402:16:0",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 232,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2402:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 244,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 239,
                                        "name": "calls",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 204,
                                        "src": "2443:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct Multicall2.Call memory[] memory"
                                        }
                                      },
                                      "id": 241,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 240,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 220,
                                        "src": "2449:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2443:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Call_$8_memory_ptr",
                                        "typeString": "struct Multicall2.Call memory"
                                      }
                                    },
                                    "id": 242,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "callData",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7,
                                    "src": "2443:17:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 234,
                                        "name": "calls",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 204,
                                        "src": "2422:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct Multicall2.Call memory[] memory"
                                        }
                                      },
                                      "id": 236,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 235,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 220,
                                        "src": "2428:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2422:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Call_$8_memory_ptr",
                                        "typeString": "struct Multicall2.Call memory"
                                      }
                                    },
                                    "id": 237,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "target",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5,
                                    "src": "2422:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 238,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2422:20:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                  }
                                },
                                "id": 243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2422:39:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2387:74:0"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 245,
                                "name": "requireSuccess",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 201,
                                "src": "2480:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 252,
                              "nodeType": "IfStatement",
                              "src": "2476:106:0",
                              "trueBody": {
                                "id": 251,
                                "nodeType": "Block",
                                "src": "2496:86:0",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 247,
                                          "name": "success",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 231,
                                          "src": "2522:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "4d756c746963616c6c32206167677265676174653a2063616c6c206661696c6564",
                                          "id": 248,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2531:35:0",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_bd97bfad63caef51f3372eed9dcabcf122404ebbb470c4fd9b09fcde78ebd3cf",
                                            "typeString": "literal_string \"Multicall2 aggregate: call failed\""
                                          },
                                          "value": "Multicall2 aggregate: call failed"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_bd97bfad63caef51f3372eed9dcabcf122404ebbb470c4fd9b09fcde78ebd3cf",
                                            "typeString": "literal_string \"Multicall2 aggregate: call failed\""
                                          }
                                        ],
                                        "id": 246,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "2514:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 249,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2514:53:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 250,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2514:53:0"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 260,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 253,
                                    "name": "returnData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 208,
                                    "src": "2596:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct Multicall2.Result memory[] memory"
                                    }
                                  },
                                  "id": 255,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 254,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 220,
                                    "src": "2607:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2596:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Result_$13_memory_ptr",
                                    "typeString": "struct Multicall2.Result memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 257,
                                      "name": "success",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 231,
                                      "src": "2619:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 258,
                                      "name": "ret",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 233,
                                      "src": "2628:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 256,
                                    "name": "Result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13,
                                    "src": "2612:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_Result_$13_storage_ptr_$",
                                      "typeString": "type(struct Multicall2.Result storage pointer)"
                                    }
                                  },
                                  "id": 259,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2612:20:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Result_$13_memory_ptr",
                                    "typeString": "struct Multicall2.Result memory"
                                  }
                                },
                                "src": "2596:36:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Result_$13_memory_ptr",
                                  "typeString": "struct Multicall2.Result memory"
                                }
                              },
                              "id": 261,
                              "nodeType": "ExpressionStatement",
                              "src": "2596:36:0"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 223,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 220,
                            "src": "2350:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 224,
                              "name": "calls",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 204,
                              "src": "2354:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct Multicall2.Call memory[] memory"
                              }
                            },
                            "id": 225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2354:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2350:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 263,
                        "initializationExpression": {
                          "assignments": [
                            220
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 220,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 263,
                              "src": "2335:9:0",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 219,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2335:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 222,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 221,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2347:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2335:13:0"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2368:3:0",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 227,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 220,
                              "src": "2368:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 229,
                          "nodeType": "ExpressionStatement",
                          "src": "2368:3:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "2331:312:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "bce38bd7",
                  "id": 265,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryAggregate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 205,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 201,
                        "mutability": "mutable",
                        "name": "requireSuccess",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 265,
                        "src": "2186:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 200,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2186:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 204,
                        "mutability": "mutable",
                        "name": "calls",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 265,
                        "src": "2207:19:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Multicall2.Call[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 202,
                            "name": "Call",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 8,
                            "src": "2207:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Call_$8_storage_ptr",
                              "typeString": "struct Multicall2.Call"
                            }
                          },
                          "id": 203,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2207:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Call_$8_storage_$dyn_storage_ptr",
                            "typeString": "struct Multicall2.Call[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2185:42:0"
                  },
                  "returnParameters": {
                    "id": 209,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 208,
                        "mutability": "mutable",
                        "name": "returnData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 265,
                        "src": "2244:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Multicall2.Result[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 206,
                            "name": "Result",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 13,
                            "src": "2244:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Result_$13_storage_ptr",
                              "typeString": "struct Multicall2.Result"
                            }
                          },
                          "id": 207,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2244:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Result_$13_storage_$dyn_storage_ptr",
                            "typeString": "struct Multicall2.Result[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2243:28:0"
                  },
                  "scope": 301,
                  "src": "2164:485:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 299,
                    "nodeType": "Block",
                    "src": "2810:146:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 280,
                            "name": "blockNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 273,
                            "src": "2820:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 281,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "2834:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2834:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2820:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 284,
                        "nodeType": "ExpressionStatement",
                        "src": "2820:26:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 285,
                            "name": "blockHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 275,
                            "src": "2856:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 287,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "2878:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2878:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 286,
                              "name": "blockhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -5,
                              "src": "2868:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (uint256) view returns (bytes32)"
                              }
                            },
                            "id": 289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2868:23:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2856:35:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 291,
                        "nodeType": "ExpressionStatement",
                        "src": "2856:35:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 292,
                            "name": "returnData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 278,
                            "src": "2901:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct Multicall2.Result memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 294,
                                "name": "requireSuccess",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 267,
                                "src": "2927:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 295,
                                "name": "calls",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 270,
                                "src": "2943:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct Multicall2.Call memory[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct Multicall2.Call memory[] memory"
                                }
                              ],
                              "id": 293,
                              "name": "tryAggregate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 265,
                              "src": "2914:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (bool,struct Multicall2.Call memory[] memory) returns (struct Multicall2.Result memory[] memory)"
                              }
                            },
                            "id": 296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2914:35:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct Multicall2.Result memory[] memory"
                            }
                          },
                          "src": "2901:48:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct Multicall2.Result memory[] memory"
                          }
                        },
                        "id": 298,
                        "nodeType": "ExpressionStatement",
                        "src": "2901:48:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "399542e9",
                  "id": 300,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryBlockAndAggregate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 271,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 267,
                        "mutability": "mutable",
                        "name": "requireSuccess",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 300,
                        "src": "2684:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 266,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2684:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 270,
                        "mutability": "mutable",
                        "name": "calls",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 300,
                        "src": "2705:19:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Call_$8_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Multicall2.Call[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 268,
                            "name": "Call",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 8,
                            "src": "2705:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Call_$8_storage_ptr",
                              "typeString": "struct Multicall2.Call"
                            }
                          },
                          "id": 269,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2705:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Call_$8_storage_$dyn_storage_ptr",
                            "typeString": "struct Multicall2.Call[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2683:42:0"
                  },
                  "returnParameters": {
                    "id": 279,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 273,
                        "mutability": "mutable",
                        "name": "blockNumber",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 300,
                        "src": "2742:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 272,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2742:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 275,
                        "mutability": "mutable",
                        "name": "blockHash",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 300,
                        "src": "2763:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 274,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2763:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 278,
                        "mutability": "mutable",
                        "name": "returnData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 300,
                        "src": "2782:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Result_$13_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Multicall2.Result[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 276,
                            "name": "Result",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 13,
                            "src": "2782:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Result_$13_storage_ptr",
                              "typeString": "struct Multicall2.Result"
                            }
                          },
                          "id": 277,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2782:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Result_$13_storage_$dyn_storage_ptr",
                            "typeString": "struct Multicall2.Result[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2741:68:0"
                  },
                  "scope": 301,
                  "src": "2654:302:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 302,
              "src": "317:2641:0"
            }
          ],
          "src": "33:2925:0"
        },
        "id": 0
      }
    }
  }
}
