{
  "id": "280f189b2e9ed1ecdd57a561d37ce68c",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.6.10",
  "solcLongVersion": "0.6.10+commit.00c0fcaf",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/protocol/integration/governance/AaveGovernanceV2Adapter.sol": {
        "content": "/*\n    Copyright 2021 Set Labs Inc.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n    SPDX-License-Identifier: Apache License, Version 2.0\n*/\n\npragma solidity 0.6.10;\npragma experimental \"ABIEncoderV2\";\n\n\n/**\n * @title AaveGovernanceV2Adapter\n * @author Noah Citron\n *\n * Governance adapter for Aave governance that returns data for voting, delegating, and creating proposals\n */\ncontract AaveGovernanceV2Adapter {\n\n    /* ============ Constants ============ */\n\n    // Signature of delegate function\n    string public constant DELEGATE_SIGNATURE = \"delegate(address)\";\n\n    // Signature of vote function\n    string public constant VOTE_SIGNATURE = \"submitVote(uint256,bool)\";\n\n    // Signature of propose function\n    string public constant PROPOSE_SIGNATURE = \"create(address,address[],uint256[],string[],bytes[],bool[],bytes32)\";\n\n    /* ============ State Variables ============ */\n\n    // Address of Aave proto governance contract\n    address public immutable aaveGovernanceV2;\n\n    // Address of the Aave token\n    address public immutable aaveToken;\n\n    /* ============ Constructor ============ */\n\n    /**\n     * Set state variables\n     *\n     * @param _aaveGovernanceV2    Address of AAVE Governance V2 contract\n     */\n    constructor(address _aaveGovernanceV2, address _aaveToken) public {\n        aaveGovernanceV2 =  _aaveGovernanceV2;\n        aaveToken = _aaveToken;\n    }\n\n    /* ============ External Getter Functions ============ */\n\n    /**\n     * Generates the calldata to vote on a proposal.\n     *\n     * @param _proposalId           ID of the proposal to vote on\n     * @param _support              Boolean indicating whether to support proposal\n     *\n     * @return address              Target contract address\n     * @return uint256              Total quantity of ETH (Set to 0)\n     * @return bytes                Propose calldata\n     */\n    function getVoteCalldata(uint256 _proposalId, bool _support, bytes memory /* _data */) external view returns (address, uint256, bytes memory) {\n        bytes memory callData = abi.encodeWithSignature(VOTE_SIGNATURE, _proposalId, _support);\n        return (aaveGovernanceV2, 0, callData);\n    }\n\n    /**\n     * Generates the calldata to delegate votes to another ETH address. Self and zero address allowed, which is equivalent to registering and revoking in Aave.\n     *\n     * @param _delegatee            Address of the delegatee\n     *\n     * @return address              Target contract address\n     * @return uint256              Total quantity of ETH (Set to 0)\n     * @return bytes                Propose calldata\n     */\n    function getDelegateCalldata(address _delegatee) external view returns (address, uint256, bytes memory) {\n        bytes memory callData = abi.encodeWithSignature(DELEGATE_SIGNATURE, _delegatee);\n        return (aaveToken, 0, callData);\n    }\n\n    /**\n     * Generates the calldata to create a new proposal.\n     * The caller must have proposition power higher than PROPOSITION_THRESHOLD to create a proposal.\n     * Executor is a contract deployed to validate proposal creation and voting.\n     * There two types of proposals and each has it's own executor.\n     * Critical proposals that affect governance consensus (long) and proposals affecting only protocol parameters (short).\n     * https://docs.aave.com/developers/protocol-governance/governance#proposal-types\n     *\n     * @param _proposalData         Byte data containing data about the proposal\n     *\n     * @return address              Target contract address\n     * @return uint256              Total quantity of ETH (Set to 0)\n     * @return bytes                Propose calldata\n     */\n    function getProposeCalldata(bytes memory _proposalData) external view returns (address, uint256, bytes memory) {\n        (\n            address executor,\n            address[] memory targets,\n            uint256[] memory values,\n            string[] memory signatures,\n            bytes[] memory calldatas,\n            bool[] memory withDelegateCalls,\n            bytes32 ipfsHash\n        ) = abi.decode(_proposalData, (address,address[],uint256[],string[],bytes[],bool[],bytes32));\n\n        bytes memory callData = abi.encodeWithSignature(\n            PROPOSE_SIGNATURE,\n            executor,\n            targets,\n            values,\n            signatures,\n            calldatas,\n            withDelegateCalls,\n            ipfsHash\n        );\n\n        return (aaveGovernanceV2, 0, callData);\n    }\n\n    /**\n     * Reverts as AAVE currently does not have a register mechanism in governance\n     */\n    function getRegisterCalldata(address /* _setToken */) external pure returns (address, uint256, bytes memory) {\n        revert(\"No register available in AAVE governance\");\n    }\n\n    /**\n     * Reverts as AAVE currently does not have a revoke mechanism in governance\n     */\n    function getRevokeCalldata() external pure returns (address, uint256, bytes memory) {\n        revert(\"No revoke available in AAVE governance\");\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/protocol/integration/governance/AaveGovernanceV2Adapter.sol": {
        "AaveGovernanceV2Adapter": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_aaveGovernanceV2",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_aaveToken",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "DELEGATE_SIGNATURE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PROPOSE_SIGNATURE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VOTE_SIGNATURE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "aaveGovernanceV2",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "aaveToken",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_delegatee",
                  "type": "address"
                }
              ],
              "name": "getDelegateCalldata",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_proposalData",
                  "type": "bytes"
                }
              ],
              "name": "getProposeCalldata",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "getRegisterCalldata",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getRevokeCalldata",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_proposalId",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "_support",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "getVoteCalldata",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c060405234801561001057600080fd5b50604051610d54380380610d5483398101604081905261002f9161004d565b6001600160601b0319606092831b8116608052911b1660a05261009e565b6000806040838503121561005f578182fd5b825161006a81610086565b602084015190925061007b81610086565b809150509250929050565b6001600160a01b038116811461009b57600080fd5b50565b60805160601c60a05160601c610c7e6100d66000398061015352806103ff525080610177528061024b52806103465250610c7e6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063d0ae50ae11610066578063d0ae50ae14610113578063d3da53a414610126578063d5abba9914610139578063f3d414c814610141578063f3f4b7ea146101495761009e565b806306a3fe59146100a357806344799753146100c15780635cb8b5e3146100c957806394016dcf146100eb578063a4fed2ce14610100575b600080fd5b6100ab610151565b6040516100b89190610998565b60405180910390f35b6100ab610175565b6100dc6100d73660046107f3565b610199565b6040516100b893929190610a63565b6100f3610281565b6040516100b89190610a93565b6100dc61010e36600461082e565b6102b5565b6100dc6101213660046106e9565b610377565b6100dc6101343660046106e9565b61042e565b6100dc610454565b6100f3610471565b6100f361049e565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060606000606080606080606060008a8060200190518101906101be919061070c565b96509650965096509650965096506060604051806080016040528060438152602001610c06604391398888888888888860405160240161020497969594939291906109ac565b60408051601f19818403018152908290529161021f9161097c565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f00000000000000000000000000000000000000000000000000000000000000009b5060009a50985050505050505050509193909250565b604051806040016040528060188152602001777375626d6974566f74652875696e743235362c626f6f6c2960401b81525081565b600080606080604051806040016040528060188152602001777375626d6974566f74652875696e743235362c626f6f6c2960401b81525087876040516024016102ff929190610b34565b60408051601f19818403018152908290529161031a9161097c565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f000000000000000000000000000000000000000000000000000000000000000094506000935091505093509350939050565b6000806060806040518060400160405280601181526020017064656c656761746528616464726573732960781b815250856040516024016103b89190610998565b60408051601f1981840301815290829052916103d39161097c565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f00000000000000000000000000000000000000000000000000000000000000009450600093509150509193909250565b600080606060405162461bcd60e51b815260040161044b90610aec565b60405180910390fd5b600080606060405162461bcd60e51b815260040161044b90610aa6565b6040518060400160405280601181526020017064656c656761746528616464726573732960781b81525081565b604051806080016040528060438152602001610c066043913981565b80516104c581610bdf565b92915050565b600082601f8301126104db578081fd5b81516104ee6104e982610b6b565b610b44565b81815291506020808301908481018184028601820187101561050f57600080fd5b60005b8481101561053757815161052581610bdf565b84529282019290820190600101610512565b505050505092915050565b600082601f830112610552578081fd5b81516105606104e982610b6b565b81815291506020808301908481018184028601820187101561058157600080fd5b60005b8481101561053757815161059781610bf7565b84529282019290820190600101610584565b600082601f8301126105b9578081fd5b81516105c76104e982610b6b565b818152915060208083019084810160005b84811015610537578151870188603f8201126105f357600080fd5b838101516106036104e982610b8b565b81815260408b8184860101111561061957600080fd5b61062883888401838701610baf565b508652505092820192908201906001016105d8565b600082601f83011261064d578081fd5b815161065b6104e982610b6b565b81815291506020808301908481018184028601820187101561067c57600080fd5b60005b848110156105375781518452928201929082019060010161067f565b600082601f8301126106ab578081fd5b81356106b96104e982610b8b565b91508082528360208285010111156106d057600080fd5b8060208401602084013760009082016020015292915050565b6000602082840312156106fa578081fd5b813561070581610bdf565b9392505050565b600080600080600080600060e0888a031215610726578283fd5b61073089896104ba565b9650602088015167ffffffffffffffff8082111561074c578485fd5b6107588b838c016104cb565b975060408a015191508082111561076d578485fd5b6107798b838c0161063d565b965060608a015191508082111561078e578485fd5b61079a8b838c016105a9565b955060808a01519150808211156107af578485fd5b6107bb8b838c016105a9565b945060a08a01519150808211156107d0578384fd5b506107dd8a828b01610542565b92505060c0880151905092959891949750929550565b600060208284031215610804578081fd5b813567ffffffffffffffff81111561081a578182fd5b6108268482850161069b565b949350505050565b600080600060608486031215610842578283fd5b83359250602084013561085481610bf7565b9150604084013567ffffffffffffffff81111561086f578182fd5b61087b8682870161069b565b9150509250925092565b6001600160a01b03169052565b6000815180845260208085019450808401835b838110156108c35781511515875295820195908201906001016108a5565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b85811015610914578284038952610902848351610950565b988501989350908401906001016108ea565b5091979650505050505050565b6000815180845260208085019450808401835b838110156108c357815187529582019590820190600101610934565b60008151808452610968816020860160208601610baf565b601f01601f19169290920160200192915050565b6000825161098e818460208701610baf565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b038816815260e0602080830182905288519183018290526000918982019190610100850190845b818110156109fd576109ed838651610885565b93830193918301916001016109da565b50508481036040860152610a11818b610921565b925050508281036060840152610a2781886108ce565b8381036080850152610a3981886108ce565b91505082810360a0840152610a4e8186610892565b9150508260c083015298975050505050505050565b600060018060a01b038516825283602083015260606040830152610a8a6060830184610950565b95945050505050565b6000602082526107056020830184610950565b60208082526026908201527f4e6f207265766f6b6520617661696c61626c6520696e204141564520676f7665604082015265726e616e636560d01b606082015260800190565b60208082526028908201527f4e6f20726567697374657220617661696c61626c6520696e204141564520676f6040820152677665726e616e636560c01b606082015260800190565b9182521515602082015260400190565b60405181810167ffffffffffffffff81118282101715610b6357600080fd5b604052919050565b600067ffffffffffffffff821115610b81578081fd5b5060209081020190565b600067ffffffffffffffff821115610ba1578081fd5b50601f01601f191660200190565b60005b83811015610bca578181015183820152602001610bb2565b83811115610bd9576000848401525b50505050565b6001600160a01b0381168114610bf457600080fd5b50565b8015158114610bf457600080fdfe63726561746528616464726573732c616464726573735b5d2c75696e743235365b5d2c737472696e675b5d2c62797465735b5d2c626f6f6c5b5d2c6279746573333229a2646970667358221220ae5a2d48d628da49753471558dfceedd7481bbdb610f6b713d993875beeed4a964736f6c634300060a0033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xD54 CODESIZE SUB DUP1 PUSH2 0xD54 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x4D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0x9E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x6A DUP2 PUSH2 0x86 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x7B DUP2 PUSH2 0x86 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0xC7E PUSH2 0xD6 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x153 MSTORE DUP1 PUSH2 0x3FF MSTORE POP DUP1 PUSH2 0x177 MSTORE DUP1 PUSH2 0x24B MSTORE DUP1 PUSH2 0x346 MSTORE POP PUSH2 0xC7E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD0AE50AE GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD0AE50AE EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0xD3DA53A4 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xD5ABBA99 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0xF3D414C8 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0xF3F4B7EA EQ PUSH2 0x149 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0x6A3FE59 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x44799753 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x5CB8B5E3 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x94016DCF EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA4FED2CE EQ PUSH2 0x100 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0x998 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH2 0x175 JUMP JUMPDEST PUSH2 0xDC PUSH2 0xD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x7F3 JUMP JUMPDEST PUSH2 0x199 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA63 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x281 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0xA93 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x10E CALLDATASIZE PUSH1 0x4 PUSH2 0x82E JUMP JUMPDEST PUSH2 0x2B5 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x121 CALLDATASIZE PUSH1 0x4 PUSH2 0x6E9 JUMP JUMPDEST PUSH2 0x377 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x134 CALLDATASIZE PUSH1 0x4 PUSH2 0x6E9 JUMP JUMPDEST PUSH2 0x42E JUMP JUMPDEST PUSH2 0xDC PUSH2 0x454 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x471 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x49E JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 PUSH1 0x0 DUP11 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0x70C JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC06 PUSH1 0x43 SWAP2 CODECOPY DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x204 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x9AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x21F SWAP2 PUSH2 0x97C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x0 SWAP12 POP PUSH1 0x0 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD PUSH24 0x7375626D6974566F74652875696E743235362C626F6F6C29 PUSH1 0x40 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD PUSH24 0x7375626D6974566F74652875696E743235362C626F6F6C29 PUSH1 0x40 SHL DUP2 MSTORE POP DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2FF SWAP3 SWAP2 SWAP1 PUSH2 0xB34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x31A SWAP2 PUSH2 0x97C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x0 SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP2 POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x64656C6567617465286164647265737329 PUSH1 0x78 SHL DUP2 MSTORE POP DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3B8 SWAP2 SWAP1 PUSH2 0x998 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x3D3 SWAP2 PUSH2 0x97C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x0 SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP2 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x44B SWAP1 PUSH2 0xAEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x44B SWAP1 PUSH2 0xAA6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x64656C6567617465286164647265737329 PUSH1 0x78 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC06 PUSH1 0x43 SWAP2 CODECOPY DUP2 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x4C5 DUP2 PUSH2 0xBDF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4DB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x4EE PUSH2 0x4E9 DUP3 PUSH2 0xB6B JUMP JUMPDEST PUSH2 0xB44 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x537 JUMPI DUP2 MLOAD PUSH2 0x525 DUP2 PUSH2 0xBDF JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x512 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x552 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x560 PUSH2 0x4E9 DUP3 PUSH2 0xB6B JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x581 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x537 JUMPI DUP2 MLOAD PUSH2 0x597 DUP2 PUSH2 0xBF7 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x584 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5B9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x5C7 PUSH2 0x4E9 DUP3 PUSH2 0xB6B JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x537 JUMPI DUP2 MLOAD DUP8 ADD DUP9 PUSH1 0x3F DUP3 ADD SLT PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP2 ADD MLOAD PUSH2 0x603 PUSH2 0x4E9 DUP3 PUSH2 0xB8B JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x40 DUP12 DUP2 DUP5 DUP7 ADD ADD GT ISZERO PUSH2 0x619 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x628 DUP4 DUP9 DUP5 ADD DUP4 DUP8 ADD PUSH2 0xBAF JUMP JUMPDEST POP DUP7 MSTORE POP POP SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5D8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x64D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x65B PUSH2 0x4E9 DUP3 PUSH2 0xB6B JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x67C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x537 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x67F JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6AB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6B9 PUSH2 0x4E9 DUP3 PUSH2 0xB8B JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x6D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6FA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x705 DUP2 PUSH2 0xBDF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x726 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x730 DUP10 DUP10 PUSH2 0x4BA JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x74C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x758 DUP12 DUP4 DUP13 ADD PUSH2 0x4CB JUMP JUMPDEST SWAP8 POP PUSH1 0x40 DUP11 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x76D JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x779 DUP12 DUP4 DUP13 ADD PUSH2 0x63D JUMP JUMPDEST SWAP7 POP PUSH1 0x60 DUP11 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x78E JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x79A DUP12 DUP4 DUP13 ADD PUSH2 0x5A9 JUMP JUMPDEST SWAP6 POP PUSH1 0x80 DUP11 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x7AF JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x7BB DUP12 DUP4 DUP13 ADD PUSH2 0x5A9 JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x7D0 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x7DD DUP11 DUP3 DUP12 ADD PUSH2 0x542 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 DUP9 ADD MLOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x804 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x81A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x826 DUP5 DUP3 DUP6 ADD PUSH2 0x69B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x842 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x854 DUP2 PUSH2 0xBF7 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x86F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x87B DUP7 DUP3 DUP8 ADD PUSH2 0x69B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8C3 JUMPI DUP2 MLOAD ISZERO ISZERO DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x8A5 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP3 DUP5 MUL DUP2 ADD SWAP2 POP DUP3 DUP7 ADD DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x914 JUMPI DUP3 DUP5 SUB DUP10 MSTORE PUSH2 0x902 DUP5 DUP4 MLOAD PUSH2 0x950 JUMP JUMPDEST SWAP9 DUP6 ADD SWAP9 SWAP4 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x8EA JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8C3 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x934 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x968 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xBAF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x98E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xBAF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP2 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP9 MLOAD SWAP2 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP10 DUP3 ADD SWAP2 SWAP1 PUSH2 0x100 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x9FD JUMPI PUSH2 0x9ED DUP4 DUP7 MLOAD PUSH2 0x885 JUMP JUMPDEST SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x9DA JUMP JUMPDEST POP POP DUP5 DUP2 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0xA11 DUP2 DUP12 PUSH2 0x921 JUMP JUMPDEST SWAP3 POP POP POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0xA27 DUP2 DUP9 PUSH2 0x8CE JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0xA39 DUP2 DUP9 PUSH2 0x8CE JUMP JUMPDEST SWAP2 POP POP DUP3 DUP2 SUB PUSH1 0xA0 DUP5 ADD MSTORE PUSH2 0xA4E DUP2 DUP7 PUSH2 0x892 JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH1 0xC0 DUP4 ADD MSTORE SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND DUP3 MSTORE DUP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xA8A PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x950 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x705 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x950 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F207265766F6B6520617661696C61626C6520696E204141564520676F7665 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x726E616E6365 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F20726567697374657220617661696C61626C6520696E204141564520676F PUSH1 0x40 DUP3 ADD MSTORE PUSH8 0x7665726E616E6365 PUSH1 0xC0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xB63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xB81 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xBA1 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBCA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBB2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xBD9 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xBF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xBF4 JUMPI PUSH1 0x0 DUP1 REVERT INVALID PUSH4 0x72656174 PUSH6 0x286164647265 PUSH20 0x732C616464726573735B5D2C75696E743235365B 0x5D 0x2C PUSH20 0x7472696E675B5D2C62797465735B5D2C626F6F6C JUMPDEST 0x5D 0x2C PUSH3 0x797465 PUSH20 0x333229A2646970667358221220AE5A2D48D628DA 0x49 PUSH22 0x3471558DFCEEDD7481BBDB610F6B713D993875BEEED4 0xA9 PUSH5 0x736F6C6343 STOP MOD EXP STOP CALLER ",
              "sourceMap": "892:4610:0:-:0;;;1747:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1823:37:0;;;;;;;;1870:22;;;;;892:4610;;146:399:-1;;;278:2;266:9;257:7;253:23;249:32;246:2;;;-1:-1;;284:12;246:2;89:6;83:13;101:33;128:5;101:33;;;447:2;497:22;;83:13;336:74;;-1:-1;101:33;83:13;101:33;;;455:74;;;;240:305;;;;;;778:117;-1:-1;;;;;712:54;;837:35;;827:2;;886:1;;876:12;827:2;821:74;;;892:4610:0;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "14": [
                  {
                    "length": 32,
                    "start": 375
                  },
                  {
                    "length": 32,
                    "start": 587
                  },
                  {
                    "length": 32,
                    "start": 838
                  }
                ],
                "16": [
                  {
                    "length": 32,
                    "start": 339
                  },
                  {
                    "length": 32,
                    "start": 1023
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061009e5760003560e01c8063d0ae50ae11610066578063d0ae50ae14610113578063d3da53a414610126578063d5abba9914610139578063f3d414c814610141578063f3f4b7ea146101495761009e565b806306a3fe59146100a357806344799753146100c15780635cb8b5e3146100c957806394016dcf146100eb578063a4fed2ce14610100575b600080fd5b6100ab610151565b6040516100b89190610998565b60405180910390f35b6100ab610175565b6100dc6100d73660046107f3565b610199565b6040516100b893929190610a63565b6100f3610281565b6040516100b89190610a93565b6100dc61010e36600461082e565b6102b5565b6100dc6101213660046106e9565b610377565b6100dc6101343660046106e9565b61042e565b6100dc610454565b6100f3610471565b6100f361049e565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060606000606080606080606060008a8060200190518101906101be919061070c565b96509650965096509650965096506060604051806080016040528060438152602001610c06604391398888888888888860405160240161020497969594939291906109ac565b60408051601f19818403018152908290529161021f9161097c565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f00000000000000000000000000000000000000000000000000000000000000009b5060009a50985050505050505050509193909250565b604051806040016040528060188152602001777375626d6974566f74652875696e743235362c626f6f6c2960401b81525081565b600080606080604051806040016040528060188152602001777375626d6974566f74652875696e743235362c626f6f6c2960401b81525087876040516024016102ff929190610b34565b60408051601f19818403018152908290529161031a9161097c565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f000000000000000000000000000000000000000000000000000000000000000094506000935091505093509350939050565b6000806060806040518060400160405280601181526020017064656c656761746528616464726573732960781b815250856040516024016103b89190610998565b60408051601f1981840301815290829052916103d39161097c565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f00000000000000000000000000000000000000000000000000000000000000009450600093509150509193909250565b600080606060405162461bcd60e51b815260040161044b90610aec565b60405180910390fd5b600080606060405162461bcd60e51b815260040161044b90610aa6565b6040518060400160405280601181526020017064656c656761746528616464726573732960781b81525081565b604051806080016040528060438152602001610c066043913981565b80516104c581610bdf565b92915050565b600082601f8301126104db578081fd5b81516104ee6104e982610b6b565b610b44565b81815291506020808301908481018184028601820187101561050f57600080fd5b60005b8481101561053757815161052581610bdf565b84529282019290820190600101610512565b505050505092915050565b600082601f830112610552578081fd5b81516105606104e982610b6b565b81815291506020808301908481018184028601820187101561058157600080fd5b60005b8481101561053757815161059781610bf7565b84529282019290820190600101610584565b600082601f8301126105b9578081fd5b81516105c76104e982610b6b565b818152915060208083019084810160005b84811015610537578151870188603f8201126105f357600080fd5b838101516106036104e982610b8b565b81815260408b8184860101111561061957600080fd5b61062883888401838701610baf565b508652505092820192908201906001016105d8565b600082601f83011261064d578081fd5b815161065b6104e982610b6b565b81815291506020808301908481018184028601820187101561067c57600080fd5b60005b848110156105375781518452928201929082019060010161067f565b600082601f8301126106ab578081fd5b81356106b96104e982610b8b565b91508082528360208285010111156106d057600080fd5b8060208401602084013760009082016020015292915050565b6000602082840312156106fa578081fd5b813561070581610bdf565b9392505050565b600080600080600080600060e0888a031215610726578283fd5b61073089896104ba565b9650602088015167ffffffffffffffff8082111561074c578485fd5b6107588b838c016104cb565b975060408a015191508082111561076d578485fd5b6107798b838c0161063d565b965060608a015191508082111561078e578485fd5b61079a8b838c016105a9565b955060808a01519150808211156107af578485fd5b6107bb8b838c016105a9565b945060a08a01519150808211156107d0578384fd5b506107dd8a828b01610542565b92505060c0880151905092959891949750929550565b600060208284031215610804578081fd5b813567ffffffffffffffff81111561081a578182fd5b6108268482850161069b565b949350505050565b600080600060608486031215610842578283fd5b83359250602084013561085481610bf7565b9150604084013567ffffffffffffffff81111561086f578182fd5b61087b8682870161069b565b9150509250925092565b6001600160a01b03169052565b6000815180845260208085019450808401835b838110156108c35781511515875295820195908201906001016108a5565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b85811015610914578284038952610902848351610950565b988501989350908401906001016108ea565b5091979650505050505050565b6000815180845260208085019450808401835b838110156108c357815187529582019590820190600101610934565b60008151808452610968816020860160208601610baf565b601f01601f19169290920160200192915050565b6000825161098e818460208701610baf565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b038816815260e0602080830182905288519183018290526000918982019190610100850190845b818110156109fd576109ed838651610885565b93830193918301916001016109da565b50508481036040860152610a11818b610921565b925050508281036060840152610a2781886108ce565b8381036080850152610a3981886108ce565b91505082810360a0840152610a4e8186610892565b9150508260c083015298975050505050505050565b600060018060a01b038516825283602083015260606040830152610a8a6060830184610950565b95945050505050565b6000602082526107056020830184610950565b60208082526026908201527f4e6f207265766f6b6520617661696c61626c6520696e204141564520676f7665604082015265726e616e636560d01b606082015260800190565b60208082526028908201527f4e6f20726567697374657220617661696c61626c6520696e204141564520676f6040820152677665726e616e636560c01b606082015260800190565b9182521515602082015260400190565b60405181810167ffffffffffffffff81118282101715610b6357600080fd5b604052919050565b600067ffffffffffffffff821115610b81578081fd5b5060209081020190565b600067ffffffffffffffff821115610ba1578081fd5b50601f01601f191660200190565b60005b83811015610bca578181015183820152602001610bb2565b83811115610bd9576000848401525b50505050565b6001600160a01b0381168114610bf457600080fd5b50565b8015158114610bf457600080fdfe63726561746528616464726573732c616464726573735b5d2c75696e743235365b5d2c737472696e675b5d2c62797465735b5d2c626f6f6c5b5d2c6279746573333229a2646970667358221220ae5a2d48d628da49753471558dfceedd7481bbdb610f6b713d993875beeed4a964736f6c634300060a0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD0AE50AE GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD0AE50AE EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0xD3DA53A4 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xD5ABBA99 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0xF3D414C8 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0xF3F4B7EA EQ PUSH2 0x149 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0x6A3FE59 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x44799753 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x5CB8B5E3 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x94016DCF EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA4FED2CE EQ PUSH2 0x100 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0x998 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH2 0x175 JUMP JUMPDEST PUSH2 0xDC PUSH2 0xD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x7F3 JUMP JUMPDEST PUSH2 0x199 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA63 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x281 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0xA93 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x10E CALLDATASIZE PUSH1 0x4 PUSH2 0x82E JUMP JUMPDEST PUSH2 0x2B5 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x121 CALLDATASIZE PUSH1 0x4 PUSH2 0x6E9 JUMP JUMPDEST PUSH2 0x377 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x134 CALLDATASIZE PUSH1 0x4 PUSH2 0x6E9 JUMP JUMPDEST PUSH2 0x42E JUMP JUMPDEST PUSH2 0xDC PUSH2 0x454 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x471 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x49E JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 PUSH1 0x0 DUP11 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0x70C JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC06 PUSH1 0x43 SWAP2 CODECOPY DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x204 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x9AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x21F SWAP2 PUSH2 0x97C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x0 SWAP12 POP PUSH1 0x0 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD PUSH24 0x7375626D6974566F74652875696E743235362C626F6F6C29 PUSH1 0x40 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD PUSH24 0x7375626D6974566F74652875696E743235362C626F6F6C29 PUSH1 0x40 SHL DUP2 MSTORE POP DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2FF SWAP3 SWAP2 SWAP1 PUSH2 0xB34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x31A SWAP2 PUSH2 0x97C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x0 SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP2 POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x64656C6567617465286164647265737329 PUSH1 0x78 SHL DUP2 MSTORE POP DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3B8 SWAP2 SWAP1 PUSH2 0x998 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x3D3 SWAP2 PUSH2 0x97C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x0 SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP2 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x44B SWAP1 PUSH2 0xAEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x44B SWAP1 PUSH2 0xAA6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x64656C6567617465286164647265737329 PUSH1 0x78 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC06 PUSH1 0x43 SWAP2 CODECOPY DUP2 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x4C5 DUP2 PUSH2 0xBDF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4DB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x4EE PUSH2 0x4E9 DUP3 PUSH2 0xB6B JUMP JUMPDEST PUSH2 0xB44 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x537 JUMPI DUP2 MLOAD PUSH2 0x525 DUP2 PUSH2 0xBDF JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x512 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x552 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x560 PUSH2 0x4E9 DUP3 PUSH2 0xB6B JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x581 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x537 JUMPI DUP2 MLOAD PUSH2 0x597 DUP2 PUSH2 0xBF7 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x584 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5B9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x5C7 PUSH2 0x4E9 DUP3 PUSH2 0xB6B JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x537 JUMPI DUP2 MLOAD DUP8 ADD DUP9 PUSH1 0x3F DUP3 ADD SLT PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP2 ADD MLOAD PUSH2 0x603 PUSH2 0x4E9 DUP3 PUSH2 0xB8B JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x40 DUP12 DUP2 DUP5 DUP7 ADD ADD GT ISZERO PUSH2 0x619 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x628 DUP4 DUP9 DUP5 ADD DUP4 DUP8 ADD PUSH2 0xBAF JUMP JUMPDEST POP DUP7 MSTORE POP POP SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5D8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x64D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x65B PUSH2 0x4E9 DUP3 PUSH2 0xB6B JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x67C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x537 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x67F JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6AB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6B9 PUSH2 0x4E9 DUP3 PUSH2 0xB8B JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x6D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6FA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x705 DUP2 PUSH2 0xBDF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x726 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x730 DUP10 DUP10 PUSH2 0x4BA JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x74C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x758 DUP12 DUP4 DUP13 ADD PUSH2 0x4CB JUMP JUMPDEST SWAP8 POP PUSH1 0x40 DUP11 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x76D JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x779 DUP12 DUP4 DUP13 ADD PUSH2 0x63D JUMP JUMPDEST SWAP7 POP PUSH1 0x60 DUP11 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x78E JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x79A DUP12 DUP4 DUP13 ADD PUSH2 0x5A9 JUMP JUMPDEST SWAP6 POP PUSH1 0x80 DUP11 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x7AF JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x7BB DUP12 DUP4 DUP13 ADD PUSH2 0x5A9 JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x7D0 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x7DD DUP11 DUP3 DUP12 ADD PUSH2 0x542 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 DUP9 ADD MLOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x804 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x81A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x826 DUP5 DUP3 DUP6 ADD PUSH2 0x69B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x842 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x854 DUP2 PUSH2 0xBF7 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x86F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x87B DUP7 DUP3 DUP8 ADD PUSH2 0x69B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8C3 JUMPI DUP2 MLOAD ISZERO ISZERO DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x8A5 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP3 DUP5 MUL DUP2 ADD SWAP2 POP DUP3 DUP7 ADD DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x914 JUMPI DUP3 DUP5 SUB DUP10 MSTORE PUSH2 0x902 DUP5 DUP4 MLOAD PUSH2 0x950 JUMP JUMPDEST SWAP9 DUP6 ADD SWAP9 SWAP4 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x8EA JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8C3 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x934 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x968 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xBAF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x98E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xBAF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP2 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP9 MLOAD SWAP2 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP10 DUP3 ADD SWAP2 SWAP1 PUSH2 0x100 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x9FD JUMPI PUSH2 0x9ED DUP4 DUP7 MLOAD PUSH2 0x885 JUMP JUMPDEST SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x9DA JUMP JUMPDEST POP POP DUP5 DUP2 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0xA11 DUP2 DUP12 PUSH2 0x921 JUMP JUMPDEST SWAP3 POP POP POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0xA27 DUP2 DUP9 PUSH2 0x8CE JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0xA39 DUP2 DUP9 PUSH2 0x8CE JUMP JUMPDEST SWAP2 POP POP DUP3 DUP2 SUB PUSH1 0xA0 DUP5 ADD MSTORE PUSH2 0xA4E DUP2 DUP7 PUSH2 0x892 JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH1 0xC0 DUP4 ADD MSTORE SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND DUP3 MSTORE DUP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xA8A PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x950 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x705 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x950 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F207265766F6B6520617661696C61626C6520696E204141564520676F7665 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x726E616E6365 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F20726567697374657220617661696C61626C6520696E204141564520676F PUSH1 0x40 DUP3 ADD MSTORE PUSH8 0x7665726E616E6365 PUSH1 0xC0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xB63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xB81 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xBA1 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBCA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBB2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xBD9 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xBF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xBF4 JUMPI PUSH1 0x0 DUP1 REVERT INVALID PUSH4 0x72656174 PUSH6 0x286164647265 PUSH20 0x732C616464726573735B5D2C75696E743235365B 0x5D 0x2C PUSH20 0x7472696E675B5D2C62797465735B5D2C626F6F6C JUMPDEST 0x5D 0x2C PUSH3 0x797465 PUSH20 0x333229A2646970667358221220AE5A2D48D628DA 0x49 PUSH22 0x3471558DFCEEDD7481BBDB610F6B713D993875BEEED4 0xA9 PUSH5 0x736F6C6343 STOP MOD EXP STOP CALLER ",
              "sourceMap": "892:4610:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1533:34;;;:::i;:::-;;;;;;;;;;;;;;;;1452:41;;;:::i;4171:798::-;;;;;;;;;:::i;:::-;;;;;;;;;;1121:66;;;:::i;:::-;;;;;;;;2382:293;;;;;;;;;:::i;3114:241::-;;;;;;;;;:::i;5073:176::-;;;;;;;;;:::i;5351:149::-;;;:::i;1017:63::-;;;:::i;1231:112::-;;;:::i;1533:34::-;;;:::o;1452:41::-;;;:::o;4171:798::-;4250:7;4259;4268:12;4306:16;4336:24;4374:23;4411:26;4451:24;4489:31;4534:16;4574:13;4563:88;;;;;;;;;;;;;;4292:359;;;;;;;;;;;;;;4662:21;4723:17;;;;;;;;;;;;;;;;;4754:8;4776:7;4797:6;4817:10;4841:9;4864:17;4895:8;4686:227;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4686:227:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4686:227:0;-1:-1:-1;;;;;;4686:227:0;;;;;;;;;4932:16;;-1:-1:-1;;;;4686:227:0;-1:-1:-1;;;;;;;;;4171:798:0;;;;;:::o;1121:66::-;;;;;;;;;;;;;;-1:-1:-1;;;1121:66:0;;;;:::o;2382:293::-;2492:7;2501;2510:12;2534:21;2582:14;;;;;;;;;;;;;-1:-1:-1;;;2582:14:0;;;2598:11;2611:8;2558:62;;;;;;;;;;;;;;-1:-1:-1;;2558:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2558:62:0;-1:-1:-1;;;;;;2558:62:0;;;;;;;;;2638:16;;-1:-1:-1;;;;2558:62:0;-1:-1:-1;;2382:293:0;;;;;;;:::o;3114:241::-;3186:7;3195;3204:12;3228:21;3276:18;;;;;;;;;;;;;-1:-1:-1;;;3276:18:0;;;3296:10;3252:55;;;;;;;;;;;;;-1:-1:-1;;3252:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3252:55:0;-1:-1:-1;;;;;;3252:55:0;;;;;;;;;3325:9;;-1:-1:-1;;;;3252:55:0;-1:-1:-1;;3114:241:0;;;;;:::o;5073:176::-;5150:7;5159;5168:12;5192:50;;-1:-1:-1;;;5192:50:0;;;;;;;;;;;;;;;;5351:149;5403:7;5412;5421:12;5445:48;;-1:-1:-1;;;5445:48:0;;;;;;;;1017:63;;;;;;;;;;;;;;-1:-1:-1;;;1017:63:0;;;;:::o;1231:112::-;;;;;;;;;;;;;;;;;;;:::o;283:150:-1:-;369:13;;387:41;369:13;387:41;;;354:79;;;;;458:722;;586:3;579:4;571:6;567:17;563:27;553:2;;-1:-1;;594:12;553:2;634:6;628:13;656:80;671:64;728:6;671:64;;;656:80;;;764:21;;;647:89;-1:-1;808:4;821:14;;;;796:17;;;910;;;901:27;;;;898:36;-1:-1;895:2;;;947:1;;937:12;895:2;972:1;957:217;982:6;979:1;976:13;957:217;;;226:6;220:13;238:33;265:5;238:33;;;1050:61;;1125:14;;;;1153;;;;1004:1;997:9;957:217;;;961:14;;;;;546:634;;;;;1203:713;;1328:3;1321:4;1313:6;1309:17;1305:27;1295:2;;-1:-1;;1336:12;1295:2;1376:6;1370:13;1398:77;1413:61;1467:6;1413:61;;1398:77;1503:21;;;1389:86;-1:-1;1547:4;1560:14;;;;1535:17;;;1649;;;1640:27;;;;1637:36;-1:-1;1634:2;;;1686:1;;1676:12;1634:2;1711:1;1696:214;1721:6;1718:1;1715:13;1696:214;;;4362:6;4356:13;4374:30;4398:5;4374:30;;;1789:58;;1861:14;;;;1889;;;;1743:1;1736:9;1696:214;;1940:713;;2077:3;2070:4;2062:6;2058:17;2054:27;2044:2;;-1:-1;;2085:12;2044:2;2125:6;2119:13;2147:89;2162:73;2228:6;2162:73;;2147:89;2264:21;;;2138:98;-1:-1;2308:4;2321:14;;;;2296:17;;;2416:1;2401:246;2426:6;2423:1;2420:13;2401:246;;;2502:3;2496:10;2300:6;2484:23;5119:3;5100:17;2484:23;5100:17;5096:27;5086:2;;2416:1;;5127:12;5086:2;2308:4;2484:23;;5161:13;5189:64;5204:48;5245:6;5204:48;;5189:64;5273:6;5266:5;5259:21;5297:17;5377:3;5297:17;5368:6;2484:23;5359:16;;5356:25;5353:2;;;2416:1;;5384:12;5353:2;5404:39;5436:6;2308:4;5335:5;5331:16;5297:17;2484:23;5297:17;5404:39;;;-1:-1;2514:70;;-1:-1;;2598:14;;;;2626;;;;2448:1;2441:9;2401:246;;3420:722;;3548:3;3541:4;3533:6;3529:17;3525:27;3515:2;;-1:-1;;3556:12;3515:2;3596:6;3590:13;3618:80;3633:64;3690:6;3633:64;;3618:80;3726:21;;;3609:89;-1:-1;3770:4;3783:14;;;;3758:17;;;3872;;;3863:27;;;;3860:36;-1:-1;3857:2;;;3909:1;;3899:12;3857:2;3934:1;3919:217;3944:6;3941:1;3938:13;3919:217;;;6125:13;;4012:61;;4087:14;;;;4115;;;;3966:1;3959:9;3919:217;;4558:440;;4659:3;4652:4;4644:6;4640:17;4636:27;4626:2;;-1:-1;;4667:12;4626:2;4714:6;4701:20;4736:64;4751:48;4792:6;4751:48;;4736:64;4727:73;;4820:6;4813:5;4806:21;4924:3;4856:4;4915:6;4848;4906:16;;4903:25;4900:2;;;4941:1;;4931:12;4900:2;29031:6;4856:4;4848:6;4844:17;4856:4;4882:5;4878:16;29008:30;29087:1;29069:16;;;4856:4;29069:16;29062:27;4882:5;4619:379;-1:-1;;4619:379;6188:241;;6292:2;6280:9;6271:7;6267:23;6263:32;6260:2;;;-1:-1;;6298:12;6260:2;85:6;72:20;97:33;124:5;97:33;;;6350:63;6254:175;-1:-1;;;6254:175;6436:1776;;;;;;;;6802:3;6790:9;6781:7;6777:23;6773:33;6770:2;;;-1:-1;;6809:12;6770:2;6871:72;6935:7;6911:22;6871:72;;;6861:82;;7001:2;6990:9;6986:18;6980:25;7025:18;;7017:6;7014:30;7011:2;;;-1:-1;;7047:12;7011:2;7077:89;7158:7;7149:6;7138:9;7134:22;7077:89;;;7067:99;;7224:2;7213:9;7209:18;7203:25;7189:39;;7025:18;7240:6;7237:30;7234:2;;;-1:-1;;7270:12;7234:2;7300:89;7381:7;7372:6;7361:9;7357:22;7300:89;;;7290:99;;7447:2;7436:9;7432:18;7426:25;7412:39;;7025:18;7463:6;7460:30;7457:2;;;-1:-1;;7493:12;7457:2;7523:99;7614:7;7605:6;7594:9;7590:22;7523:99;;;7513:109;;7680:3;7669:9;7665:19;7659:26;7645:40;;7025:18;7697:6;7694:30;7691:2;;;-1:-1;;7727:12;7691:2;7757:98;7847:7;7838:6;7827:9;7823:22;7757:98;;;7747:108;;7913:3;7902:9;7898:19;7892:26;7878:40;;7025:18;7930:6;7927:30;7924:2;;;-1:-1;;7960:12;7924:2;;7990:86;8068:7;8059:6;8048:9;8044:22;7990:86;;;7980:96;;;8113:3;8168:9;8164:22;4494:13;8122:74;;6764:1448;;;;;;;;;;;8219:345;;8332:2;8320:9;8311:7;8307:23;8303:32;8300:2;;;-1:-1;;8338:12;8300:2;8396:17;8383:31;8434:18;8426:6;8423:30;8420:2;;;-1:-1;;8456:12;8420:2;8486:62;8540:7;8531:6;8520:9;8516:22;8486:62;;;8476:72;8294:270;-1:-1;;;;8294:270;8571:589;;;;8715:2;8703:9;8694:7;8690:23;8686:32;8683:2;;;-1:-1;;8721:12;8683:2;5990:6;5977:20;8773:63;;8873:2;8913:9;8909:22;4214:20;4239:30;4263:5;4239:30;;;8881:60;-1:-1;9006:2;8991:18;;8978:32;9030:18;9019:30;;9016:2;;;-1:-1;;9052:12;9016:2;9082:62;9136:7;9127:6;9116:9;9112:22;9082:62;;;9072:72;;;8677:483;;;;;;10101:103;-1:-1;;;;;28804:54;10162:37;;10156:48;11085:666;;11269:5;25115:12;26727:6;26722:3;26715:19;26764:4;;26759:3;26755:14;11281:90;;26764:4;11439:5;24321:14;-1:-1;11478:251;11503:6;11500:1;11497:13;11478:251;;;11564:13;;28637;28630:21;14463:34;;9491:14;;;;26094;;;;11525:1;11518:9;11478:251;;;-1:-1;11735:10;;11203:548;-1:-1;;;;;11203:548;11786:920;;12006:5;25115:12;26727:6;26722:3;26715:19;26764:4;;26759:3;26755:14;12018:102;;;;26764:4;12177:6;12173:17;12168:3;12164:27;12152:39;;26764:4;12271:5;24321:14;-1:-1;12310:357;12335:6;12332:1;12329:13;12310:357;;;12397:9;12391:4;12387:20;12382:3;12375:33;9639:64;9699:3;12442:6;12436:13;9639:64;;;12646:14;;;;12456:90;-1:-1;26094:14;;;;12357:1;12350:9;12310:357;;;-1:-1;12690:10;;11928:778;-1:-1;;;;;;;11928:778;13710:690;;13903:5;25115:12;26727:6;26722:3;26715:19;26764:4;;26759:3;26755:14;13915:93;;26764:4;14079:5;24321:14;-1:-1;14118:260;14143:6;14140:1;14137:13;14118:260;;;14204:13;;14691:37;;10073:14;;;;26094;;;;14165:1;14158:9;14118:260;;14740:323;;14872:5;25115:12;26727:6;26722:3;26715:19;14955:52;15000:6;26764:4;26759:3;26755:14;26764:4;14981:5;14977:16;14955:52;;;29464:7;29448:14;-1:-1;;29444:28;15019:39;;;;26764:4;15019:39;;14820:243;-1:-1;;14820:243;17475:275;;16271:5;25115:12;16383:52;16428:6;16423:3;16416:4;16409:5;16405:16;16383:52;;;16447:16;;;;;17611:139;-1:-1;;17611:139;17757:222;-1:-1;;;;;28804:54;;;;10162:37;;17884:2;17869:18;;17855:124;17986:1696;-1:-1;;;;;28804:54;;10162:37;;18563:3;18682:2;18667:18;;;18660:48;;;25115:12;;18548:19;;;26715;;;17986:1696;;24321:14;;;;18682:2;26755:14;;;;17986:1696;10770:260;10795:6;10792:1;10789:13;10770:260;;;9255:46;9297:3;10862:6;10856:13;9255:46;;;26094:14;;;;9321;;;;10817:1;10810:9;10770:260;;;10774:14;;18878:9;18872:4;18868:20;18863:2;18852:9;18848:18;18841:48;18903:108;19006:4;18997:6;18903:108;;;18895:116;;;;19059:9;19053:4;19049:20;19044:2;19033:9;19029:18;19022:48;19084:128;19207:4;19198:6;19084:128;;;19261:9;19255:4;19251:20;19245:3;19234:9;19230:19;19223:49;19286:126;19407:4;19398:6;19286:126;;;19278:134;;;19461:9;19455:4;19451:20;19445:3;19434:9;19430:19;19423:49;19486:102;19583:4;19574:6;19486:102;;;19478:110;;;14721:5;19667:3;19656:9;19652:19;14691:37;18534:1148;;;;;;;;;;;19689:528;;7025:18;;28815:42;;;28808:5;28804:54;10169:3;10162:37;14721:5;20054:2;20043:9;20039:18;14691:37;19890:2;20091;20080:9;20076:18;20069:48;20131:76;19890:2;19879:9;19875:18;20193:6;20131:76;;;20123:84;19861:356;-1:-1;;;;;19861:356;20224:310;;20371:2;20392:17;20385:47;20446:78;20371:2;20360:9;20356:18;20510:6;20446:78;;20541:416;20741:2;20755:47;;;16700:2;20726:18;;;26715:19;16736:34;26755:14;;;16716:55;-1:-1;;;16791:12;;;16784:30;16833:12;;;20712:245;20964:416;21164:2;21178:47;;;17084:2;21149:18;;;26715:19;17120:34;26755:14;;;17100:55;-1:-1;;;17175:12;;;17168:32;17219:12;;;21135:245;21387:321;14691:37;;;28637:13;28630:21;21694:2;21679:18;;14463:34;21536:2;21521:18;;21507:201;21715:256;21777:2;21771:9;21803:17;;;21878:18;21863:34;;21899:22;;;21860:62;21857:2;;;21935:1;;21925:12;21857:2;21777;21944:22;21755:216;;-1:-1;21755:216;21978:304;;22137:18;22129:6;22126:30;22123:2;;;-1:-1;;22159:12;22123:2;-1:-1;22204:4;22192:17;;;22257:15;;22060:222;23549:321;;23692:18;23684:6;23681:30;23678:2;;;-1:-1;;23714:12;23678:2;-1:-1;29464:7;23768:17;-1:-1;;23764:33;23855:4;23845:15;;23615:255;29104:268;29169:1;29176:101;29190:6;29187:1;29184:13;29176:101;;;29257:11;;;29251:18;29238:11;;;29231:39;29212:2;29205:10;29176:101;;;29292:6;29289:1;29286:13;29283:2;;;29169:1;29348:6;29343:3;29339:16;29332:27;29283:2;;29153:219;;;;29485:117;-1:-1;;;;;28804:54;;29544:35;;29534:2;;29593:1;;29583:12;29534:2;29528:74;;29749:111;29830:5;28637:13;28630:21;29808:5;29805:32;29795:2;;29851:1;;29841:12"
            },
            "methodIdentifiers": {
              "DELEGATE_SIGNATURE()": "f3d414c8",
              "PROPOSE_SIGNATURE()": "f3f4b7ea",
              "VOTE_SIGNATURE()": "94016dcf",
              "aaveGovernanceV2()": "44799753",
              "aaveToken()": "06a3fe59",
              "getDelegateCalldata(address)": "d0ae50ae",
              "getProposeCalldata(bytes)": "5cb8b5e3",
              "getRegisterCalldata(address)": "d3da53a4",
              "getRevokeCalldata()": "d5abba99",
              "getVoteCalldata(uint256,bool,bytes)": "a4fed2ce"
            }
          }
        }
      }
    },
    "sources": {
      "contracts/protocol/integration/governance/AaveGovernanceV2Adapter.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/integration/governance/AaveGovernanceV2Adapter.sol",
          "exportedSymbols": {
            "AaveGovernanceV2Adapter": [
              199
            ]
          },
          "id": 200,
          "license": "Apache License",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "0.6",
                ".10"
              ],
              "nodeType": "PragmaDirective",
              "src": "655:23:0"
            },
            {
              "id": 2,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "679:35:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3,
                "nodeType": "StructuredDocumentation",
                "src": "717:174:0",
                "text": " @title AaveGovernanceV2Adapter\n @author Noah Citron\n Governance adapter for Aave governance that returns data for voting, delegating, and creating proposals"
              },
              "fullyImplemented": true,
              "id": 199,
              "linearizedBaseContracts": [
                199
              ],
              "name": "AaveGovernanceV2Adapter",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "functionSelector": "f3d414c8",
                  "id": 6,
                  "mutability": "constant",
                  "name": "DELEGATE_SIGNATURE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 199,
                  "src": "1017:63:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1017:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "64656c6567617465286164647265737329",
                    "id": 5,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1061:19:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_5c19a95c96fe5699f69181241d04ecef12a0c89506c08c7360f0f7e9a556859f",
                      "typeString": "literal_string \"delegate(address)\""
                    },
                    "value": "delegate(address)"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "94016dcf",
                  "id": 9,
                  "mutability": "constant",
                  "name": "VOTE_SIGNATURE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 199,
                  "src": "1121:66:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1121:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "7375626d6974566f74652875696e743235362c626f6f6c29",
                    "id": 8,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1161:26:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_612c56fa65faa8ee0695774188225a9d35b0138ce1dab9441deba3599161a540",
                      "typeString": "literal_string \"submitVote(uint256,bool)\""
                    },
                    "value": "submitVote(uint256,bool)"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "f3f4b7ea",
                  "id": 12,
                  "mutability": "constant",
                  "name": "PROPOSE_SIGNATURE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 199,
                  "src": "1231:112:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 10,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1231:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "63726561746528616464726573732c616464726573735b5d2c75696e743235365b5d2c737472696e675b5d2c62797465735b5d2c626f6f6c5b5d2c6279746573333229",
                    "id": 11,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1274:69:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_f8741a9cd783cbed831659a6ecdbbd2897081ed702ee842615a376b50c3795df",
                      "typeString": "literal_string \"create(address,address[],uint256[],string[],bytes[],bool[],bytes32)\""
                    },
                    "value": "create(address,address[],uint256[],string[],bytes[],bool[],bytes32)"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "44799753",
                  "id": 14,
                  "mutability": "immutable",
                  "name": "aaveGovernanceV2",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 199,
                  "src": "1452:41:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1452:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "06a3fe59",
                  "id": 16,
                  "mutability": "immutable",
                  "name": "aaveToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 199,
                  "src": "1533:34:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1533:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 32,
                    "nodeType": "Block",
                    "src": "1813:86:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 24,
                            "name": "aaveGovernanceV2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14,
                            "src": "1823:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 25,
                            "name": "_aaveGovernanceV2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19,
                            "src": "1843:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1823:37:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 27,
                        "nodeType": "ExpressionStatement",
                        "src": "1823:37:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 28,
                            "name": "aaveToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16,
                            "src": "1870:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 29,
                            "name": "_aaveToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21,
                            "src": "1882:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1870:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 31,
                        "nodeType": "ExpressionStatement",
                        "src": "1870:22:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17,
                    "nodeType": "StructuredDocumentation",
                    "src": "1623:119:0",
                    "text": " Set state variables\n @param _aaveGovernanceV2    Address of AAVE Governance V2 contract"
                  },
                  "id": 33,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 22,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19,
                        "mutability": "mutable",
                        "name": "_aaveGovernanceV2",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 33,
                        "src": "1759:25:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1759:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21,
                        "mutability": "mutable",
                        "name": "_aaveToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 33,
                        "src": "1786:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1786:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1758:47:0"
                  },
                  "returnParameters": {
                    "id": 23,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1813:0:0"
                  },
                  "scope": 199,
                  "src": "1747:152:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 63,
                    "nodeType": "Block",
                    "src": "2524:151:0",
                    "statements": [
                      {
                        "assignments": [
                          50
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 50,
                            "mutability": "mutable",
                            "name": "callData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 63,
                            "src": "2534:21:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 49,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2534:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 57,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 53,
                              "name": "VOTE_SIGNATURE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9,
                              "src": "2582:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 54,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36,
                              "src": "2598:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 55,
                              "name": "_support",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38,
                              "src": "2611:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 51,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "2558:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 52,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2558:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 56,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2558:62:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2534:86:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 58,
                              "name": "aaveGovernanceV2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14,
                              "src": "2638:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 59,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2656:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 60,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 50,
                              "src": "2659:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 61,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2637:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(address,int_const 0,bytes memory)"
                          }
                        },
                        "functionReturnParameters": 48,
                        "id": 62,
                        "nodeType": "Return",
                        "src": "2630:38:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 34,
                    "nodeType": "StructuredDocumentation",
                    "src": "1968:409:0",
                    "text": " Generates the calldata to vote on a proposal.\n @param _proposalId           ID of the proposal to vote on\n @param _support              Boolean indicating whether to support proposal\n @return address              Target contract address\n @return uint256              Total quantity of ETH (Set to 0)\n @return bytes                Propose calldata"
                  },
                  "functionSelector": "a4fed2ce",
                  "id": 64,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getVoteCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 41,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36,
                        "mutability": "mutable",
                        "name": "_proposalId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "2407:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2407:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 38,
                        "mutability": "mutable",
                        "name": "_support",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "2428:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 37,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2428:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "2443:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 39,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2443:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2406:62:0"
                  },
                  "returnParameters": {
                    "id": 48,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "2492:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2492:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 45,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "2501:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2501:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 47,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "2510:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 46,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2510:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2491:32:0"
                  },
                  "scope": 199,
                  "src": "2382:293:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 89,
                    "nodeType": "Block",
                    "src": "3218:137:0",
                    "statements": [
                      {
                        "assignments": [
                          77
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 77,
                            "mutability": "mutable",
                            "name": "callData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 89,
                            "src": "3228:21:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 76,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3228:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 83,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 80,
                              "name": "DELEGATE_SIGNATURE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6,
                              "src": "3276:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 81,
                              "name": "_delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 67,
                              "src": "3296:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 78,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "3252:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 79,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3252:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 82,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3252:55:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3228:79:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 84,
                              "name": "aaveToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16,
                              "src": "3325:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 85,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3336:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 86,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 77,
                              "src": "3339:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 87,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3324:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(address,int_const 0,bytes memory)"
                          }
                        },
                        "functionReturnParameters": 75,
                        "id": 88,
                        "nodeType": "Return",
                        "src": "3317:31:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 65,
                    "nodeType": "StructuredDocumentation",
                    "src": "2681:428:0",
                    "text": " Generates the calldata to delegate votes to another ETH address. Self and zero address allowed, which is equivalent to registering and revoking in Aave.\n @param _delegatee            Address of the delegatee\n @return address              Target contract address\n @return uint256              Total quantity of ETH (Set to 0)\n @return bytes                Propose calldata"
                  },
                  "functionSelector": "d0ae50ae",
                  "id": 90,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDelegateCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 68,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 67,
                        "mutability": "mutable",
                        "name": "_delegatee",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 90,
                        "src": "3143:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 66,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3143:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3142:20:0"
                  },
                  "returnParameters": {
                    "id": 75,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 70,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 90,
                        "src": "3186:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 69,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3186:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 72,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 90,
                        "src": "3195:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 71,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3195:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 74,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 90,
                        "src": "3204:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 73,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3204:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3185:32:0"
                  },
                  "scope": 199,
                  "src": "3114:241:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 165,
                    "nodeType": "Block",
                    "src": "4282:687:0",
                    "statements": [
                      {
                        "assignments": [
                          103,
                          106,
                          109,
                          112,
                          115,
                          118,
                          120
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 103,
                            "mutability": "mutable",
                            "name": "executor",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 165,
                            "src": "4306:16:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 102,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4306:7:0",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 106,
                            "mutability": "mutable",
                            "name": "targets",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 165,
                            "src": "4336:24:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 104,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4336:7:0",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 105,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4336:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 109,
                            "mutability": "mutable",
                            "name": "values",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 165,
                            "src": "4374:23:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 107,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4374:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 108,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4374:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 112,
                            "mutability": "mutable",
                            "name": "signatures",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 165,
                            "src": "4411:26:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                              "typeString": "string[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 110,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "4411:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage_ptr",
                                  "typeString": "string"
                                }
                              },
                              "id": 111,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4411:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                                "typeString": "string[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 115,
                            "mutability": "mutable",
                            "name": "calldatas",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 165,
                            "src": "4451:24:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 113,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "4451:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              },
                              "id": 114,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4451:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                                "typeString": "bytes[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 118,
                            "mutability": "mutable",
                            "name": "withDelegateCalls",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 165,
                            "src": "4489:31:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 116,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "4489:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 117,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4489:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                "typeString": "bool[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 120,
                            "mutability": "mutable",
                            "name": "ipfsHash",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 165,
                            "src": "4534:16:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 119,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4534:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 145,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 123,
                              "name": "_proposalData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 93,
                              "src": "4574:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 125,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4590:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 124,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4590:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 127,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4598:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 126,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4598:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 128,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4598:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_address_$dyn_memory_ptr_$",
                                    "typeString": "type(address[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 130,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4608:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 129,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4608:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 131,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4608:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 133,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4618:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 132,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4618:6:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 134,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4618:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$",
                                    "typeString": "type(string memory[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 136,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4627:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 135,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4627:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 137,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4627:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                                    "typeString": "type(bytes memory[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 139,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4635:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bool_$",
                                      "typeString": "type(bool)"
                                    },
                                    "typeName": {
                                      "id": 138,
                                      "name": "bool",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4635:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 140,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4635:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_bool_$dyn_memory_ptr_$",
                                    "typeString": "type(bool[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 142,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4642:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 141,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4642:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                }
                              ],
                              "id": 143,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4589:61:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bool_$dyn_memory_ptr_$_$_t_type$_t_bytes32_$_$",
                                "typeString": "tuple(type(address),type(address[] memory),type(uint256[] memory),type(string memory[] memory),type(bytes memory[] memory),type(bool[] memory),type(bytes32))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bool_$dyn_memory_ptr_$_$_t_type$_t_bytes32_$_$",
                                "typeString": "tuple(type(address),type(address[] memory),type(uint256[] memory),type(string memory[] memory),type(bytes memory[] memory),type(bool[] memory),type(bytes32))"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 121,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "4563:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 122,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4563:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4563:88:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_array$_t_bool_$dyn_memory_ptr_$_t_bytes32_$",
                            "typeString": "tuple(address payable,address[] memory,uint256[] memory,string memory[] memory,bytes memory[] memory,bool[] memory,bytes32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4292:359:0"
                      },
                      {
                        "assignments": [
                          147
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 147,
                            "mutability": "mutable",
                            "name": "callData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 165,
                            "src": "4662:21:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 146,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4662:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 159,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 150,
                              "name": "PROPOSE_SIGNATURE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12,
                              "src": "4723:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 151,
                              "name": "executor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 103,
                              "src": "4754:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 152,
                              "name": "targets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 106,
                              "src": "4776:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 153,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 109,
                              "src": "4797:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 154,
                              "name": "signatures",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 112,
                              "src": "4817:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 155,
                              "name": "calldatas",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 115,
                              "src": "4841:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                "typeString": "bytes memory[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 156,
                              "name": "withDelegateCalls",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 118,
                              "src": "4864:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                "typeString": "bool[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 157,
                              "name": "ipfsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 120,
                              "src": "4895:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                "typeString": "bytes memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                "typeString": "bool[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 148,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "4686:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4686:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4686:227:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4662:251:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 160,
                              "name": "aaveGovernanceV2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14,
                              "src": "4932:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 161,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4950:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 162,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 147,
                              "src": "4953:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 163,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4931:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(address,int_const 0,bytes memory)"
                          }
                        },
                        "functionReturnParameters": 101,
                        "id": 164,
                        "nodeType": "Return",
                        "src": "4924:38:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 91,
                    "nodeType": "StructuredDocumentation",
                    "src": "3361:805:0",
                    "text": " Generates the calldata to create a new proposal.\n The caller must have proposition power higher than PROPOSITION_THRESHOLD to create a proposal.\n Executor is a contract deployed to validate proposal creation and voting.\n There two types of proposals and each has it's own executor.\n Critical proposals that affect governance consensus (long) and proposals affecting only protocol parameters (short).\n https://docs.aave.com/developers/protocol-governance/governance#proposal-types\n @param _proposalData         Byte data containing data about the proposal\n @return address              Target contract address\n @return uint256              Total quantity of ETH (Set to 0)\n @return bytes                Propose calldata"
                  },
                  "functionSelector": "5cb8b5e3",
                  "id": 166,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getProposeCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 94,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 93,
                        "mutability": "mutable",
                        "name": "_proposalData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 166,
                        "src": "4199:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 92,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4199:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4198:28:0"
                  },
                  "returnParameters": {
                    "id": 101,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 96,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 166,
                        "src": "4250:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 95,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4250:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 98,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 166,
                        "src": "4259:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 97,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4259:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 100,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 166,
                        "src": "4268:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 99,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4268:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4249:32:0"
                  },
                  "scope": 199,
                  "src": "4171:798:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 182,
                    "nodeType": "Block",
                    "src": "5182:67:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "4e6f20726567697374657220617661696c61626c6520696e204141564520676f7665726e616e6365",
                              "id": 179,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5199:42:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f7e3a13fd3392c7bc2bc6ca9f16d70896156eaf1a4ff1179d659c00665c7ac8e",
                                "typeString": "literal_string \"No register available in AAVE governance\""
                              },
                              "value": "No register available in AAVE governance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_f7e3a13fd3392c7bc2bc6ca9f16d70896156eaf1a4ff1179d659c00665c7ac8e",
                                "typeString": "literal_string \"No register available in AAVE governance\""
                              }
                            ],
                            "id": 178,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "5192:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5192:50:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 181,
                        "nodeType": "ExpressionStatement",
                        "src": "5192:50:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 167,
                    "nodeType": "StructuredDocumentation",
                    "src": "4975:93:0",
                    "text": " Reverts as AAVE currently does not have a register mechanism in governance"
                  },
                  "functionSelector": "d3da53a4",
                  "id": 183,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRegisterCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 170,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 169,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 183,
                        "src": "5102:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 168,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5102:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5101:25:0"
                  },
                  "returnParameters": {
                    "id": 177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 172,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 183,
                        "src": "5150:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 171,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5150:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 174,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 183,
                        "src": "5159:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 173,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5159:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 176,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 183,
                        "src": "5168:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 175,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5168:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5149:32:0"
                  },
                  "scope": 199,
                  "src": "5073:176:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 197,
                    "nodeType": "Block",
                    "src": "5435:65:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "4e6f207265766f6b6520617661696c61626c6520696e204141564520676f7665726e616e6365",
                              "id": 194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5452:40:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_bfca77a7eea8b8885993c539b7642924dbe2977336b5fd0b54ec1c0918a13bbe",
                                "typeString": "literal_string \"No revoke available in AAVE governance\""
                              },
                              "value": "No revoke available in AAVE governance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_bfca77a7eea8b8885993c539b7642924dbe2977336b5fd0b54ec1c0918a13bbe",
                                "typeString": "literal_string \"No revoke available in AAVE governance\""
                              }
                            ],
                            "id": 193,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "5445:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5445:48:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 196,
                        "nodeType": "ExpressionStatement",
                        "src": "5445:48:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 184,
                    "nodeType": "StructuredDocumentation",
                    "src": "5255:91:0",
                    "text": " Reverts as AAVE currently does not have a revoke mechanism in governance"
                  },
                  "functionSelector": "d5abba99",
                  "id": 198,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevokeCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 185,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5377:2:0"
                  },
                  "returnParameters": {
                    "id": 192,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 187,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 198,
                        "src": "5403:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 186,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5403:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 189,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 198,
                        "src": "5412:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 188,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5412:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 191,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 198,
                        "src": "5421:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 190,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5421:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5402:32:0"
                  },
                  "scope": 199,
                  "src": "5351:149:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 200,
              "src": "892:4610:0"
            }
          ],
          "src": "655:4848:0"
        },
        "id": 0
      }
    }
  }
}
