{
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct IMulticall3.Call[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "aggregate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "bytes[]",
          "name": "returnData",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "allowFailure",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct IMulticall3.Call3[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "aggregate3",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "returnData",
              "type": "bytes"
            }
          ],
          "internalType": "struct IMulticall3.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "allowFailure",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct IMulticall3.Call3Value[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "aggregate3Value",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "returnData",
              "type": "bytes"
            }
          ],
          "internalType": "struct IMulticall3.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct IMulticall3.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 IMulticall3.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getBasefee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "basefee",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "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": "getChainId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "chainid",
          "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 IMulticall3.Call[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "tryAggregate",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "returnData",
              "type": "bytes"
            }
          ],
          "internalType": "struct IMulticall3.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "requireSuccess",
          "type": "bool"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct IMulticall3.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 IMulticall3.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x",
    "sourceMap": "",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x",
    "sourceMap": "",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "aggregate((address,bytes)[])": "252dba42",
    "aggregate3((address,bool,bytes)[])": "82ad56cb",
    "aggregate3Value((address,bool,uint256,bytes)[])": "174dea71",
    "blockAndAggregate((address,bytes)[])": "c3077fa9",
    "getBasefee()": "3e64a696",
    "getBlockHash(uint256)": "ee82ac5e",
    "getBlockNumber()": "42cbb15c",
    "getChainId()": "3408e470",
    "getCurrentBlockCoinbase()": "a8b0574e",
    "getCurrentBlockDifficulty()": "72425d9d",
    "getCurrentBlockGasLimit()": "86d516e8",
    "getCurrentBlockTimestamp()": "0f28c97d",
    "getEthBalance(address)": "4d2301cc",
    "getLastBlockHash()": "27e86d6e",
    "tryAggregate(bool,(address,bytes)[])": "bce38bd7",
    "tryBlockAndAggregate(bool,(address,bytes)[])": "399542e9"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3Value[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3Value\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.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 IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainid\",\"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 IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryAggregate\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.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 IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":\"IMulticall3\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.22+commit.4fc1097e"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "struct IMulticall3.Call[]",
              "name": "calls",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "callData",
                  "type": "bytes"
                }
              ]
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "aggregate",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            },
            {
              "internalType": "bytes[]",
              "name": "returnData",
              "type": "bytes[]"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "struct IMulticall3.Call3[]",
              "name": "calls",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "allowFailure",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "callData",
                  "type": "bytes"
                }
              ]
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "aggregate3",
          "outputs": [
            {
              "internalType": "struct IMulticall3.Result[]",
              "name": "returnData",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "bool",
                  "name": "success",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "returnData",
                  "type": "bytes"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "struct IMulticall3.Call3Value[]",
              "name": "calls",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "allowFailure",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "callData",
                  "type": "bytes"
                }
              ]
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "aggregate3Value",
          "outputs": [
            {
              "internalType": "struct IMulticall3.Result[]",
              "name": "returnData",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "bool",
                  "name": "success",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "returnData",
                  "type": "bytes"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "struct IMulticall3.Call[]",
              "name": "calls",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "callData",
                  "type": "bytes"
                }
              ]
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "blockAndAggregate",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "blockHash",
              "type": "bytes32"
            },
            {
              "internalType": "struct IMulticall3.Result[]",
              "name": "returnData",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "bool",
                  "name": "success",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "returnData",
                  "type": "bytes"
                }
              ]
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getBasefee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "basefee",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getBlockHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "blockHash",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getBlockNumber",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getChainId",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "chainid",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getCurrentBlockCoinbase",
          "outputs": [
            {
              "internalType": "address",
              "name": "coinbase",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getCurrentBlockDifficulty",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "difficulty",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getCurrentBlockGasLimit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "gaslimit",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getCurrentBlockTimestamp",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getEthBalance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "balance",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getLastBlockHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "blockHash",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "requireSuccess",
              "type": "bool"
            },
            {
              "internalType": "struct IMulticall3.Call[]",
              "name": "calls",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "callData",
                  "type": "bytes"
                }
              ]
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "tryAggregate",
          "outputs": [
            {
              "internalType": "struct IMulticall3.Result[]",
              "name": "returnData",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "bool",
                  "name": "success",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "returnData",
                  "type": "bytes"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "requireSuccess",
              "type": "bool"
            },
            {
              "internalType": "struct IMulticall3.Call[]",
              "name": "calls",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "callData",
                  "type": "bytes"
                }
              ]
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "tryBlockAndAggregate",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "blockHash",
              "type": "bytes32"
            },
            {
              "internalType": "struct IMulticall3.Result[]",
              "name": "returnData",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "bool",
                  "name": "success",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "returnData",
                  "type": "bytes"
                }
              ]
            }
          ]
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {},
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
        "@uniswap/v3-core/=lib_uniswap/v3-core/",
        "@uniswap/v3-periphery/=lib_uniswap/v3-periphery/",
        "ds-test/=lib/forge-std/lib/ds-test/src/",
        "forge-std/=lib/forge-std/src/",
        "openzeppelin-contracts/=lib/openzeppelin-contracts/",
        "v3-core/=lib_uniswap/v3-core/",
        "v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/"
      ],
      "optimizer": {
        "runs": 999999999,
        "details": {
          "peephole": true,
          "inliner": true,
          "jumpdestRemover": true,
          "orderLiterals": true,
          "deduplicate": true,
          "cse": true,
          "constantOptimizer": true,
          "yul": true,
          "yulDetails": {
            "stackAllocation": true,
            "optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu"
          }
        }
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "lib/forge-std/src/interfaces/IMulticall3.sol": "IMulticall3"
      },
      "libraries": {}
    },
    "sources": {
      "lib/forge-std/src/interfaces/IMulticall3.sol": {
        "keccak256": "0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a",
        "urls": [
          "bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0",
          "dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "lib/forge-std/src/interfaces/IMulticall3.sol",
    "id": 29817,
    "exportedSymbols": {
      "IMulticall3": [
        29816
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:2153:17",
    "nodes": [
      {
        "id": 29655,
        "nodeType": "PragmaDirective",
        "src": "32:31:17",
        "nodes": [],
        "literals": [
          "solidity",
          ">=",
          "0.6",
          ".2",
          "<",
          "0.9",
          ".0"
        ]
      },
      {
        "id": 29656,
        "nodeType": "PragmaDirective",
        "src": "65:33:17",
        "nodes": [],
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ]
      },
      {
        "id": 29816,
        "nodeType": "ContractDefinition",
        "src": "100:2084:17",
        "nodes": [
          {
            "id": 29661,
            "nodeType": "StructDefinition",
            "src": "128:67:17",
            "nodes": [],
            "canonicalName": "IMulticall3.Call",
            "members": [
              {
                "constant": false,
                "id": 29658,
                "mutability": "mutable",
                "name": "target",
                "nameLocation": "158:6:17",
                "nodeType": "VariableDeclaration",
                "scope": 29661,
                "src": "150:14:17",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 29657,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "150:7:17",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 29660,
                "mutability": "mutable",
                "name": "callData",
                "nameLocation": "180:8:17",
                "nodeType": "VariableDeclaration",
                "scope": 29661,
                "src": "174:14:17",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 29659,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "174:5:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Call",
            "nameLocation": "135:4:17",
            "scope": 29816,
            "visibility": "public"
          },
          {
            "id": 29668,
            "nodeType": "StructDefinition",
            "src": "201:95:17",
            "nodes": [],
            "canonicalName": "IMulticall3.Call3",
            "members": [
              {
                "constant": false,
                "id": 29663,
                "mutability": "mutable",
                "name": "target",
                "nameLocation": "232:6:17",
                "nodeType": "VariableDeclaration",
                "scope": 29668,
                "src": "224:14:17",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 29662,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "224:7:17",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 29665,
                "mutability": "mutable",
                "name": "allowFailure",
                "nameLocation": "253:12:17",
                "nodeType": "VariableDeclaration",
                "scope": 29668,
                "src": "248:17:17",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 29664,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "248:4:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 29667,
                "mutability": "mutable",
                "name": "callData",
                "nameLocation": "281:8:17",
                "nodeType": "VariableDeclaration",
                "scope": 29668,
                "src": "275:14:17",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 29666,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "275:5:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Call3",
            "nameLocation": "208:5:17",
            "scope": 29816,
            "visibility": "public"
          },
          {
            "id": 29677,
            "nodeType": "StructDefinition",
            "src": "302:123:17",
            "nodes": [],
            "canonicalName": "IMulticall3.Call3Value",
            "members": [
              {
                "constant": false,
                "id": 29670,
                "mutability": "mutable",
                "name": "target",
                "nameLocation": "338:6:17",
                "nodeType": "VariableDeclaration",
                "scope": 29677,
                "src": "330:14:17",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 29669,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "330:7:17",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 29672,
                "mutability": "mutable",
                "name": "allowFailure",
                "nameLocation": "359:12:17",
                "nodeType": "VariableDeclaration",
                "scope": 29677,
                "src": "354:17:17",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 29671,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "354:4:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 29674,
                "mutability": "mutable",
                "name": "value",
                "nameLocation": "389:5:17",
                "nodeType": "VariableDeclaration",
                "scope": 29677,
                "src": "381:13:17",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 29673,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "381:7:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 29676,
                "mutability": "mutable",
                "name": "callData",
                "nameLocation": "410:8:17",
                "nodeType": "VariableDeclaration",
                "scope": 29677,
                "src": "404:14:17",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 29675,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "404:5:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Call3Value",
            "nameLocation": "309:10:17",
            "scope": 29816,
            "visibility": "public"
          },
          {
            "id": 29682,
            "nodeType": "StructDefinition",
            "src": "431:69:17",
            "nodes": [],
            "canonicalName": "IMulticall3.Result",
            "members": [
              {
                "constant": false,
                "id": 29679,
                "mutability": "mutable",
                "name": "success",
                "nameLocation": "460:7:17",
                "nodeType": "VariableDeclaration",
                "scope": 29682,
                "src": "455:12:17",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 29678,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "455:4:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 29681,
                "mutability": "mutable",
                "name": "returnData",
                "nameLocation": "483:10:17",
                "nodeType": "VariableDeclaration",
                "scope": 29682,
                "src": "477:16:17",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 29680,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "477:5:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Result",
            "nameLocation": "438:6:17",
            "scope": 29816,
            "visibility": "public"
          },
          {
            "id": 29694,
            "nodeType": "FunctionDefinition",
            "src": "506:140:17",
            "nodes": [],
            "functionSelector": "252dba42",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "aggregate",
            "nameLocation": "515:9:17",
            "parameters": {
              "id": 29687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29686,
                  "mutability": "mutable",
                  "name": "calls",
                  "nameLocation": "541:5:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29694,
                  "src": "525:21:17",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Call_$29661_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "struct IMulticall3.Call[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 29684,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 29683,
                        "name": "Call",
                        "nameLocations": [
                          "525:4:17"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 29661,
                        "src": "525:4:17"
                      },
                      "referencedDeclaration": 29661,
                      "src": "525:4:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Call_$29661_storage_ptr",
                        "typeString": "struct IMulticall3.Call"
                      }
                    },
                    "id": 29685,
                    "nodeType": "ArrayTypeName",
                    "src": "525:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Call_$29661_storage_$dyn_storage_ptr",
                      "typeString": "struct IMulticall3.Call[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "524:23:17"
            },
            "returnParameters": {
              "id": 29693,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29689,
                  "mutability": "mutable",
                  "name": "blockNumber",
                  "nameLocation": "606:11:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29694,
                  "src": "598:19:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29688,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "598:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 29692,
                  "mutability": "mutable",
                  "name": "returnData",
                  "nameLocation": "634:10:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29694,
                  "src": "619:25:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 29690,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "619:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 29691,
                    "nodeType": "ArrayTypeName",
                    "src": "619:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "597:48:17"
            },
            "scope": 29816,
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 29705,
            "nodeType": "FunctionDefinition",
            "src": "652:98:17",
            "nodes": [],
            "functionSelector": "82ad56cb",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "aggregate3",
            "nameLocation": "661:10:17",
            "parameters": {
              "id": 29699,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29698,
                  "mutability": "mutable",
                  "name": "calls",
                  "nameLocation": "689:5:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29705,
                  "src": "672:22:17",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Call3_$29668_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "struct IMulticall3.Call3[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 29696,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 29695,
                        "name": "Call3",
                        "nameLocations": [
                          "672:5:17"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 29668,
                        "src": "672:5:17"
                      },
                      "referencedDeclaration": 29668,
                      "src": "672:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Call3_$29668_storage_ptr",
                        "typeString": "struct IMulticall3.Call3"
                      }
                    },
                    "id": 29697,
                    "nodeType": "ArrayTypeName",
                    "src": "672:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Call3_$29668_storage_$dyn_storage_ptr",
                      "typeString": "struct IMulticall3.Call3[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "671:24:17"
            },
            "returnParameters": {
              "id": 29704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29703,
                  "mutability": "mutable",
                  "name": "returnData",
                  "nameLocation": "738:10:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29705,
                  "src": "722:26:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Result_$29682_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct IMulticall3.Result[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 29701,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 29700,
                        "name": "Result",
                        "nameLocations": [
                          "722:6:17"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 29682,
                        "src": "722:6:17"
                      },
                      "referencedDeclaration": 29682,
                      "src": "722:6:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Result_$29682_storage_ptr",
                        "typeString": "struct IMulticall3.Result"
                      }
                    },
                    "id": 29702,
                    "nodeType": "ArrayTypeName",
                    "src": "722:8:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Result_$29682_storage_$dyn_storage_ptr",
                      "typeString": "struct IMulticall3.Result[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "721:28:17"
            },
            "scope": 29816,
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 29716,
            "nodeType": "FunctionDefinition",
            "src": "756:108:17",
            "nodes": [],
            "functionSelector": "174dea71",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "aggregate3Value",
            "nameLocation": "765:15:17",
            "parameters": {
              "id": 29710,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29709,
                  "mutability": "mutable",
                  "name": "calls",
                  "nameLocation": "803:5:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29716,
                  "src": "781:27:17",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Call3Value_$29677_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "struct IMulticall3.Call3Value[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 29707,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 29706,
                        "name": "Call3Value",
                        "nameLocations": [
                          "781:10:17"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 29677,
                        "src": "781:10:17"
                      },
                      "referencedDeclaration": 29677,
                      "src": "781:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Call3Value_$29677_storage_ptr",
                        "typeString": "struct IMulticall3.Call3Value"
                      }
                    },
                    "id": 29708,
                    "nodeType": "ArrayTypeName",
                    "src": "781:12:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Call3Value_$29677_storage_$dyn_storage_ptr",
                      "typeString": "struct IMulticall3.Call3Value[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "780:29:17"
            },
            "returnParameters": {
              "id": 29715,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29714,
                  "mutability": "mutable",
                  "name": "returnData",
                  "nameLocation": "852:10:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29716,
                  "src": "836:26:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Result_$29682_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct IMulticall3.Result[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 29712,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 29711,
                        "name": "Result",
                        "nameLocations": [
                          "836:6:17"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 29682,
                        "src": "836:6:17"
                      },
                      "referencedDeclaration": 29682,
                      "src": "836:6:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Result_$29682_storage_ptr",
                        "typeString": "struct IMulticall3.Result"
                      }
                    },
                    "id": 29713,
                    "nodeType": "ArrayTypeName",
                    "src": "836:8:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Result_$29682_storage_$dyn_storage_ptr",
                      "typeString": "struct IMulticall3.Result[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "835:28:17"
            },
            "scope": 29816,
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 29731,
            "nodeType": "FunctionDefinition",
            "src": "870:168:17",
            "nodes": [],
            "functionSelector": "c3077fa9",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "blockAndAggregate",
            "nameLocation": "879:17:17",
            "parameters": {
              "id": 29721,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29720,
                  "mutability": "mutable",
                  "name": "calls",
                  "nameLocation": "913:5:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29731,
                  "src": "897:21:17",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Call_$29661_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "struct IMulticall3.Call[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 29718,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 29717,
                        "name": "Call",
                        "nameLocations": [
                          "897:4:17"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 29661,
                        "src": "897:4:17"
                      },
                      "referencedDeclaration": 29661,
                      "src": "897:4:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Call_$29661_storage_ptr",
                        "typeString": "struct IMulticall3.Call"
                      }
                    },
                    "id": 29719,
                    "nodeType": "ArrayTypeName",
                    "src": "897:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Call_$29661_storage_$dyn_storage_ptr",
                      "typeString": "struct IMulticall3.Call[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "896:23:17"
            },
            "returnParameters": {
              "id": 29730,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29723,
                  "mutability": "mutable",
                  "name": "blockNumber",
                  "nameLocation": "978:11:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29731,
                  "src": "970:19:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29722,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "970:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 29725,
                  "mutability": "mutable",
                  "name": "blockHash",
                  "nameLocation": "999:9:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29731,
                  "src": "991:17:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 29724,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "991:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 29729,
                  "mutability": "mutable",
                  "name": "returnData",
                  "nameLocation": "1026:10:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29731,
                  "src": "1010:26:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Result_$29682_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct IMulticall3.Result[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 29727,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 29726,
                        "name": "Result",
                        "nameLocations": [
                          "1010:6:17"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 29682,
                        "src": "1010:6:17"
                      },
                      "referencedDeclaration": 29682,
                      "src": "1010:6:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Result_$29682_storage_ptr",
                        "typeString": "struct IMulticall3.Result"
                      }
                    },
                    "id": 29728,
                    "nodeType": "ArrayTypeName",
                    "src": "1010:8:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Result_$29682_storage_$dyn_storage_ptr",
                      "typeString": "struct IMulticall3.Result[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "969:68:17"
            },
            "scope": 29816,
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 29736,
            "nodeType": "FunctionDefinition",
            "src": "1044:62:17",
            "nodes": [],
            "functionSelector": "3e64a696",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getBasefee",
            "nameLocation": "1053:10:17",
            "parameters": {
              "id": 29732,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1063:2:17"
            },
            "returnParameters": {
              "id": 29735,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29734,
                  "mutability": "mutable",
                  "name": "basefee",
                  "nameLocation": "1097:7:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29736,
                  "src": "1089:15:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29733,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1089:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1088:17:17"
            },
            "scope": 29816,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 29743,
            "nodeType": "FunctionDefinition",
            "src": "1112:85:17",
            "nodes": [],
            "functionSelector": "ee82ac5e",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getBlockHash",
            "nameLocation": "1121:12:17",
            "parameters": {
              "id": 29739,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29738,
                  "mutability": "mutable",
                  "name": "blockNumber",
                  "nameLocation": "1142:11:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29743,
                  "src": "1134:19:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29737,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1134:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1133:21:17"
            },
            "returnParameters": {
              "id": 29742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29741,
                  "mutability": "mutable",
                  "name": "blockHash",
                  "nameLocation": "1186:9:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29743,
                  "src": "1178:17:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 29740,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1178:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1177:19:17"
            },
            "scope": 29816,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 29748,
            "nodeType": "FunctionDefinition",
            "src": "1203:70:17",
            "nodes": [],
            "functionSelector": "42cbb15c",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getBlockNumber",
            "nameLocation": "1212:14:17",
            "parameters": {
              "id": 29744,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1226:2:17"
            },
            "returnParameters": {
              "id": 29747,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29746,
                  "mutability": "mutable",
                  "name": "blockNumber",
                  "nameLocation": "1260:11:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29748,
                  "src": "1252:19:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29745,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1252:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1251:21:17"
            },
            "scope": 29816,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 29753,
            "nodeType": "FunctionDefinition",
            "src": "1279:62:17",
            "nodes": [],
            "functionSelector": "3408e470",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getChainId",
            "nameLocation": "1288:10:17",
            "parameters": {
              "id": 29749,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1298:2:17"
            },
            "returnParameters": {
              "id": 29752,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29751,
                  "mutability": "mutable",
                  "name": "chainid",
                  "nameLocation": "1332:7:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29753,
                  "src": "1324:15:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29750,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1324:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1323:17:17"
            },
            "scope": 29816,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 29758,
            "nodeType": "FunctionDefinition",
            "src": "1347:76:17",
            "nodes": [],
            "functionSelector": "a8b0574e",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getCurrentBlockCoinbase",
            "nameLocation": "1356:23:17",
            "parameters": {
              "id": 29754,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1379:2:17"
            },
            "returnParameters": {
              "id": 29757,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29756,
                  "mutability": "mutable",
                  "name": "coinbase",
                  "nameLocation": "1413:8:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29758,
                  "src": "1405:16:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 29755,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1405:7:17",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1404:18:17"
            },
            "scope": 29816,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 29763,
            "nodeType": "FunctionDefinition",
            "src": "1429:80:17",
            "nodes": [],
            "functionSelector": "72425d9d",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getCurrentBlockDifficulty",
            "nameLocation": "1438:25:17",
            "parameters": {
              "id": 29759,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1463:2:17"
            },
            "returnParameters": {
              "id": 29762,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29761,
                  "mutability": "mutable",
                  "name": "difficulty",
                  "nameLocation": "1497:10:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29763,
                  "src": "1489:18:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29760,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1489:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1488:20:17"
            },
            "scope": 29816,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 29768,
            "nodeType": "FunctionDefinition",
            "src": "1515:76:17",
            "nodes": [],
            "functionSelector": "86d516e8",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getCurrentBlockGasLimit",
            "nameLocation": "1524:23:17",
            "parameters": {
              "id": 29764,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1547:2:17"
            },
            "returnParameters": {
              "id": 29767,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29766,
                  "mutability": "mutable",
                  "name": "gaslimit",
                  "nameLocation": "1581:8:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29768,
                  "src": "1573:16:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29765,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1573:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1572:18:17"
            },
            "scope": 29816,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 29773,
            "nodeType": "FunctionDefinition",
            "src": "1597:78:17",
            "nodes": [],
            "functionSelector": "0f28c97d",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getCurrentBlockTimestamp",
            "nameLocation": "1606:24:17",
            "parameters": {
              "id": 29769,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1630:2:17"
            },
            "returnParameters": {
              "id": 29772,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29771,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nameLocation": "1664:9:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29773,
                  "src": "1656:17:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29770,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1656:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1655:19:17"
            },
            "scope": 29816,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 29780,
            "nodeType": "FunctionDefinition",
            "src": "1681:77:17",
            "nodes": [],
            "functionSelector": "4d2301cc",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getEthBalance",
            "nameLocation": "1690:13:17",
            "parameters": {
              "id": 29776,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29775,
                  "mutability": "mutable",
                  "name": "addr",
                  "nameLocation": "1712:4:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29780,
                  "src": "1704:12:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 29774,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1704:7:17",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1703:14:17"
            },
            "returnParameters": {
              "id": 29779,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29778,
                  "mutability": "mutable",
                  "name": "balance",
                  "nameLocation": "1749:7:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29780,
                  "src": "1741:15:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29777,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1741:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1740:17:17"
            },
            "scope": 29816,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 29785,
            "nodeType": "FunctionDefinition",
            "src": "1764:70:17",
            "nodes": [],
            "functionSelector": "27e86d6e",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getLastBlockHash",
            "nameLocation": "1773:16:17",
            "parameters": {
              "id": 29781,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1789:2:17"
            },
            "returnParameters": {
              "id": 29784,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29783,
                  "mutability": "mutable",
                  "name": "blockHash",
                  "nameLocation": "1823:9:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29785,
                  "src": "1815:17:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 29782,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1815:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1814:19:17"
            },
            "scope": 29816,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 29798,
            "nodeType": "FunctionDefinition",
            "src": "1840:144:17",
            "nodes": [],
            "functionSelector": "bce38bd7",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "tryAggregate",
            "nameLocation": "1849:12:17",
            "parameters": {
              "id": 29792,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29787,
                  "mutability": "mutable",
                  "name": "requireSuccess",
                  "nameLocation": "1867:14:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29798,
                  "src": "1862:19:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 29786,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1862:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 29791,
                  "mutability": "mutable",
                  "name": "calls",
                  "nameLocation": "1899:5:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29798,
                  "src": "1883:21:17",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Call_$29661_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "struct IMulticall3.Call[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 29789,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 29788,
                        "name": "Call",
                        "nameLocations": [
                          "1883:4:17"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 29661,
                        "src": "1883:4:17"
                      },
                      "referencedDeclaration": 29661,
                      "src": "1883:4:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Call_$29661_storage_ptr",
                        "typeString": "struct IMulticall3.Call"
                      }
                    },
                    "id": 29790,
                    "nodeType": "ArrayTypeName",
                    "src": "1883:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Call_$29661_storage_$dyn_storage_ptr",
                      "typeString": "struct IMulticall3.Call[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1861:44:17"
            },
            "returnParameters": {
              "id": 29797,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29796,
                  "mutability": "mutable",
                  "name": "returnData",
                  "nameLocation": "1972:10:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29798,
                  "src": "1956:26:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Result_$29682_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct IMulticall3.Result[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 29794,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 29793,
                        "name": "Result",
                        "nameLocations": [
                          "1956:6:17"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 29682,
                        "src": "1956:6:17"
                      },
                      "referencedDeclaration": 29682,
                      "src": "1956:6:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Result_$29682_storage_ptr",
                        "typeString": "struct IMulticall3.Result"
                      }
                    },
                    "id": 29795,
                    "nodeType": "ArrayTypeName",
                    "src": "1956:8:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Result_$29682_storage_$dyn_storage_ptr",
                      "typeString": "struct IMulticall3.Result[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1955:28:17"
            },
            "scope": 29816,
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 29815,
            "nodeType": "FunctionDefinition",
            "src": "1990:192:17",
            "nodes": [],
            "functionSelector": "399542e9",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "tryBlockAndAggregate",
            "nameLocation": "1999:20:17",
            "parameters": {
              "id": 29805,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29800,
                  "mutability": "mutable",
                  "name": "requireSuccess",
                  "nameLocation": "2025:14:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29815,
                  "src": "2020:19:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 29799,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2020:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 29804,
                  "mutability": "mutable",
                  "name": "calls",
                  "nameLocation": "2057:5:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29815,
                  "src": "2041:21:17",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Call_$29661_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "struct IMulticall3.Call[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 29802,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 29801,
                        "name": "Call",
                        "nameLocations": [
                          "2041:4:17"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 29661,
                        "src": "2041:4:17"
                      },
                      "referencedDeclaration": 29661,
                      "src": "2041:4:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Call_$29661_storage_ptr",
                        "typeString": "struct IMulticall3.Call"
                      }
                    },
                    "id": 29803,
                    "nodeType": "ArrayTypeName",
                    "src": "2041:6:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Call_$29661_storage_$dyn_storage_ptr",
                      "typeString": "struct IMulticall3.Call[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2019:44:17"
            },
            "returnParameters": {
              "id": 29814,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 29807,
                  "mutability": "mutable",
                  "name": "blockNumber",
                  "nameLocation": "2122:11:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29815,
                  "src": "2114:19:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29806,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2114:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 29809,
                  "mutability": "mutable",
                  "name": "blockHash",
                  "nameLocation": "2143:9:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29815,
                  "src": "2135:17:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 29808,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2135:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 29813,
                  "mutability": "mutable",
                  "name": "returnData",
                  "nameLocation": "2170:10:17",
                  "nodeType": "VariableDeclaration",
                  "scope": 29815,
                  "src": "2154:26:17",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Result_$29682_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct IMulticall3.Result[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 29811,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 29810,
                        "name": "Result",
                        "nameLocations": [
                          "2154:6:17"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 29682,
                        "src": "2154:6:17"
                      },
                      "referencedDeclaration": 29682,
                      "src": "2154:6:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Result_$29682_storage_ptr",
                        "typeString": "struct IMulticall3.Result"
                      }
                    },
                    "id": 29812,
                    "nodeType": "ArrayTypeName",
                    "src": "2154:8:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Result_$29682_storage_$dyn_storage_ptr",
                      "typeString": "struct IMulticall3.Result[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2113:68:17"
            },
            "scope": 29816,
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "IMulticall3",
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "linearizedBaseContracts": [
          29816
        ],
        "name": "IMulticall3",
        "nameLocation": "110:11:17",
        "scope": 29817,
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "license": "MIT"
  },
  "id": 17
}