{
  "id": "e3725fd75e5ecd5d0b32493df42c62f8",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.6.10",
  "solcLongVersion": "0.6.10+commit.00c0fcaf",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/protocol/integration/governance/CompoundBravoGovernanceAdapter.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 CompoundBravoGovernanceAdapter\n * @author Set Protocol\n *\n * Governance adapter for Compound Bravo governance system that returns data for voting, delegating and making proposals\n */\ncontract CompoundBravoGovernanceAdapter {\n\n    /* ============ Constants ============ */\n\n    // Signature of the propose function in Compound Governor Bravo. This is used to encode the calldata for the propose function\n    string public constant PROPOSE_SIGNATURE = \"propose(address[],uint256[],string[],bytes[],string)\";\n    \n    // Signature of the delegate function in Compound Governor Bravo\n    string public constant DELEGATE_SIGNATURE = \"delegate(address)\";\n\n    address public constant ZERO_ADDRESS = 0x0000000000000000000000000000000000000000;\n\n    /* ============ State Variables ============ */\n\n    // Address of governance token\n    address public immutable governanceToken;\n\n    // Address of Compound Governor Bravo contract\n    address public immutable governorBravo;\n\n    /* ============ Constructor ============ */\n\n    /**\n     * Set state variables\n     *\n     * @param _governorBravo    Address of Governor Bravo contract\n     * @param _governanceToken  Address of governance token\n     */\n    constructor(address _governorBravo, address _governanceToken) public {\n        governorBravo = _governorBravo;\n        governanceToken = _governanceToken;\n    }\n\n    /* ============ External Getter Functions ============ */\n\n    /**\n     * Generates the calldata to vote on a proposal. Bytes data paramater is unused in Compound\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        // castVote(uint256 _proposalId, uint8 supportNumber)\n        uint8 supportNumber = _support ? 1 : 0;\n        bytes memory callData = abi.encodeWithSignature(\"castVote(uint256,uint8)\", _proposalId, supportNumber);\n\n        return (governorBravo, 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 Compound\n     * like governance systems.\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        // delegate(address _delegatee)\n        bytes memory callData = abi.encodeWithSignature(DELEGATE_SIGNATURE, _delegatee);\n\n        return (governanceToken, 0, callData);\n    }\n\n    /**\n     * Generates the calldata to register for voting. This is equivalent to delegating to the SetToken address in Compound.\n     *\n     * @param _setToken             Address of SetToken\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 getRegisterCalldata(address _setToken) external view returns (address, uint256, bytes memory) {\n        // delegate(address _delegatee)\n        bytes memory callData = abi.encodeWithSignature(DELEGATE_SIGNATURE, _setToken);\n\n        return (governanceToken, 0, callData);\n    }\n\n    /**\n     * Generates the calldata to revoke voting. This is equivalent to delegating to the zero address in Compound.\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 getRevokeCalldata() external view returns (address, uint256, bytes memory) {\n        // delegate(address _delegatee)\n        bytes memory callData = abi.encodeWithSignature(DELEGATE_SIGNATURE, ZERO_ADDRESS);\n\n        return (governanceToken, 0, callData);\n    }\n\n    /**\n     * Generates the calldata to create a new proposal\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        // Decode proposal data\n        (\n            address[] memory targets,\n            uint256[] memory values,\n            string[] memory signatures,\n            bytes[] memory calldatas,\n            string memory description\n        ) = abi.decode(_proposalData, (address[],uint256[],string[],bytes[],string));\n\n        // propose(address[],uint256[],string[],bytes[],string)\n        bytes memory callData = abi.encodeWithSignature(PROPOSE_SIGNATURE, targets, values, signatures, calldatas, description);\n\n        return (governorBravo, 0, callData);\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/protocol/integration/governance/CompoundBravoGovernanceAdapter.sol": {
        "CompoundBravoGovernanceAdapter": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_governorBravo",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_governanceToken",
                  "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": "ZERO_ADDRESS",
              "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": "_setToken",
                  "type": "address"
                }
              ],
              "name": "getRegisterCalldata",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getRevokeCalldata",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "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"
            },
            {
              "inputs": [],
              "name": "governanceToken",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "governorBravo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c060405234801561001057600080fd5b50604051610c22380380610c2283398101604081905261002f9161004d565b6001600160601b0319606092831b811660a052911b1660805261009e565b6000806040838503121561005f578182fd5b825161006a81610086565b602084015190925061007b81610086565b809150509250929050565b6001600160a01b038116811461009b57600080fd5b50565b60805160601c60a05160601c610b476100db60003980610140528061020c5280610299525080610353528061040b52806104835250610b476000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063d3da53a411610066578063d3da53a4146100fe578063d5abba9914610111578063f3d414c814610119578063f3f4b7ea1461012e578063f96dae0a146101365761009e565b80631ddf25e8146100a3578063538ba4f9146100c15780635cb8b5e3146100c9578063a4fed2ce146100eb578063d0ae50ae146100fe575b600080fd5b6100ab61013e565b6040516100b891906108ec565b60405180910390f35b6100ab610162565b6100dc6100d736600461075c565b610167565b6040516100b893929190610900565b6100dc6100f9366004610797565b610240565b6100dc61010c36600461066d565b6102cb565b6100dc610382565b610121610438565b6040516100b891906109fd565b610121610465565b6100ab610481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081565b600080606080606080606080888060200190518101906101879190610690565b945094509450945094506060604051806060016040528060348152602001610ade6034913986868686866040516024016101c5959493929190610930565b60408051601f1981840301815290829052916101e0916108d0565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f000000000000000000000000000000000000000000000000000000000000000099506000985096505050505050509193909250565b6000806060600085610253576000610256565b60015b90506060878260405160240161026d929190610a10565b60408051601f198184030181529190526020810180516001600160e01b0316630acf027160e31b1790527f00000000000000000000000000000000000000000000000000000000000000009550600094509250505093509350939050565b6000806060806040518060400160405280601181526020017064656c656761746528616464726573732960781b8152508560405160240161030c91906108ec565b60408051601f198184030181529082905291610327916108d0565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f00000000000000000000000000000000000000000000000000000000000000009450600093509150509193909250565b6000806060806040518060400160405280601181526020017064656c656761746528616464726573732960781b81525060006040516024016103c491906108ec565b60408051601f1981840301815290829052916103df916108d0565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f0000000000000000000000000000000000000000000000000000000000000000945060009350915050909192565b6040518060400160405280601181526020017064656c656761746528616464726573732960781b81525081565b604051806060016040528060348152602001610ade6034913981565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082601f8301126104b5578081fd5b81516104c86104c382610a48565b610a21565b8181529150602080830190848101818402860182018710156104e957600080fd5b60005b848110156105115781516104ff81610ac5565b845292820192908201906001016104ec565b505050505092915050565b600082601f83011261052c578081fd5b815161053a6104c382610a48565b818152915060208083019084810160005b8481101561051157610562888484518a0101610620565b8452928201929082019060010161054b565b600082601f830112610584578081fd5b81516105926104c382610a48565b8181529150602080830190848101818402860182018710156105b357600080fd5b60005b84811015610511578151845292820192908201906001016105b6565b600082601f8301126105e2578081fd5b81356105f06104c382610a68565b915080825283602082850101111561060757600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112610630578081fd5b815161063e6104c382610a68565b915080825283602082850101111561065557600080fd5b610666816020840160208601610a95565b5092915050565b60006020828403121561067e578081fd5b813561068981610ac5565b9392505050565b600080600080600060a086880312156106a7578081fd5b855167ffffffffffffffff808211156106be578283fd5b6106ca89838a016104a5565b965060208801519150808211156106df578283fd5b6106eb89838a01610574565b95506040880151915080821115610700578283fd5b61070c89838a0161051c565b94506060880151915080821115610721578283fd5b61072d89838a0161051c565b93506080880151915080821115610742578283fd5b5061074f88828901610620565b9150509295509295909350565b60006020828403121561076d578081fd5b813567ffffffffffffffff811115610783578182fd5b61078f848285016105d2565b949350505050565b6000806000606084860312156107ab578283fd5b83359250602084013580151581146107c1578283fd5b9150604084013567ffffffffffffffff8111156107dc578182fd5b6107e8868287016105d2565b9150509250925092565b6001600160a01b0316815260200190565b815260200190565b60008282518085526020808601955080818302840101818601855b8481101561085457601f198684030189526108428383516108a4565b98840198925090830190600101610826565b5090979650505050505050565b6000815180845260208085019450848183028601828601855b858110156108545783830389526108928383516108a4565b9885019892509084019060010161087a565b600081518084526108bc816020860160208601610a95565b601f01601f19169290920160200192915050565b600082516108e2818460208701610a95565b9190910192915050565b6001600160a01b0391909116815260200190565b600060018060a01b03851682528360208301526060604083015261092760608301846108a4565b95945050505050565b600060a0820160a083528088516109478184610a8c565b915060209250828a01845b82811015610973576109658483516107f2565b935090840190600101610952565b5050508381038285015280885161098a8184610a8c565b9150838a019250845b818110156109b4576109a6838551610803565b938501939250600101610993565b505084810360408601526109c88189610861565b9250505082810360608401526109de818661080b565b83810360808501526109f081866108a4565b9998505050505050505050565b60006020825261068960208301846108a4565b91825260ff16602082015260400190565b60405181810167ffffffffffffffff81118282101715610a4057600080fd5b604052919050565b600067ffffffffffffffff821115610a5e578081fd5b5060209081020190565b600067ffffffffffffffff821115610a7e578081fd5b50601f01601f191660200190565b90815260200190565b60005b83811015610ab0578181015183820152602001610a98565b83811115610abf576000848401525b50505050565b6001600160a01b0381168114610ada57600080fd5b5056fe70726f706f736528616464726573735b5d2c75696e743235365b5d2c737472696e675b5d2c62797465735b5d2c737472696e6729a2646970667358221220d333d3921f71a73c9281cfc6832fb7a1de035cb8b2fbeadbaa17b547661fbcbe64736f6c634300060a0033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xC22 CODESIZE SUB DUP1 PUSH2 0xC22 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 0xA0 MSTORE SWAP2 SHL AND PUSH1 0x80 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 0xB47 PUSH2 0xDB PUSH1 0x0 CODECOPY DUP1 PUSH2 0x140 MSTORE DUP1 PUSH2 0x20C MSTORE DUP1 PUSH2 0x299 MSTORE POP DUP1 PUSH2 0x353 MSTORE DUP1 PUSH2 0x40B MSTORE DUP1 PUSH2 0x483 MSTORE POP PUSH2 0xB47 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 0xD3DA53A4 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD3DA53A4 EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0xD5ABBA99 EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0xF3D414C8 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0xF3F4B7EA EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0xF96DAE0A EQ PUSH2 0x136 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0x1DDF25E8 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x538BA4F9 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x5CB8B5E3 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xA4FED2CE EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xD0AE50AE EQ PUSH2 0xFE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0x13E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH2 0x162 JUMP JUMPDEST PUSH2 0xDC PUSH2 0xD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x75C JUMP JUMPDEST PUSH2 0x167 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x900 JUMP JUMPDEST PUSH2 0xDC PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x797 JUMP JUMPDEST PUSH2 0x240 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x10C CALLDATASIZE PUSH1 0x4 PUSH2 0x66D JUMP JUMPDEST PUSH2 0x2CB JUMP JUMPDEST PUSH2 0xDC PUSH2 0x382 JUMP JUMPDEST PUSH2 0x121 PUSH2 0x438 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0x9FD JUMP JUMPDEST PUSH2 0x121 PUSH2 0x465 JUMP JUMPDEST PUSH2 0xAB PUSH2 0x481 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 DUP9 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x187 SWAP2 SWAP1 PUSH2 0x690 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xADE PUSH1 0x34 SWAP2 CODECOPY DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1C5 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x930 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x1E0 SWAP2 PUSH2 0x8D0 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 SWAP10 POP PUSH1 0x0 SWAP9 POP SWAP7 POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 PUSH1 0x0 DUP6 PUSH2 0x253 JUMPI PUSH1 0x0 PUSH2 0x256 JUMP JUMPDEST PUSH1 0x1 JUMPDEST SWAP1 POP PUSH1 0x60 DUP8 DUP3 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x26D SWAP3 SWAP2 SWAP1 PUSH2 0xA10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xACF0271 PUSH1 0xE3 SHL OR SWAP1 MSTORE PUSH32 0x0 SWAP6 POP PUSH1 0x0 SWAP5 POP SWAP3 POP 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 0x30C SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x327 SWAP2 PUSH2 0x8D0 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 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 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3C4 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x3DF SWAP2 PUSH2 0x8D0 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 SWAP1 SWAP2 SWAP3 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 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xADE PUSH1 0x34 SWAP2 CODECOPY DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4B5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x4C8 PUSH2 0x4C3 DUP3 PUSH2 0xA48 JUMP JUMPDEST PUSH2 0xA21 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 0x4E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x511 JUMPI DUP2 MLOAD PUSH2 0x4FF DUP2 PUSH2 0xAC5 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4EC JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x52C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x53A PUSH2 0x4C3 DUP3 PUSH2 0xA48 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x511 JUMPI PUSH2 0x562 DUP9 DUP5 DUP5 MLOAD DUP11 ADD ADD PUSH2 0x620 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x54B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x584 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x592 PUSH2 0x4C3 DUP3 PUSH2 0xA48 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 0x5B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x511 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5E2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5F0 PUSH2 0x4C3 DUP3 PUSH2 0xA68 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x607 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 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x630 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x63E PUSH2 0x4C3 DUP3 PUSH2 0xA68 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x666 DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xA95 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x67E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x689 DUP2 PUSH2 0xAC5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x6A7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6BE JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x6CA DUP10 DUP4 DUP11 ADD PUSH2 0x4A5 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6DF JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x6EB DUP10 DUP4 DUP11 ADD PUSH2 0x574 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x700 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x70C DUP10 DUP4 DUP11 ADD PUSH2 0x51C JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x721 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x72D DUP10 DUP4 DUP11 ADD PUSH2 0x51C JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x742 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x74F DUP9 DUP3 DUP10 ADD PUSH2 0x620 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x76D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x783 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x78F DUP5 DUP3 DUP6 ADD PUSH2 0x5D2 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x7AB JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x7C1 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7DC JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x7E8 DUP7 DUP3 DUP8 ADD PUSH2 0x5D2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP6 POP DUP1 DUP2 DUP4 MUL DUP5 ADD ADD DUP2 DUP7 ADD DUP6 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x854 JUMPI PUSH1 0x1F NOT DUP7 DUP5 SUB ADD DUP10 MSTORE PUSH2 0x842 DUP4 DUP4 MLOAD PUSH2 0x8A4 JUMP JUMPDEST SWAP9 DUP5 ADD SWAP9 SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x826 JUMP JUMPDEST POP SWAP1 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 DUP5 DUP2 DUP4 MUL DUP7 ADD DUP3 DUP7 ADD DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x854 JUMPI DUP4 DUP4 SUB DUP10 MSTORE PUSH2 0x892 DUP4 DUP4 MLOAD PUSH2 0x8A4 JUMP JUMPDEST SWAP9 DUP6 ADD SWAP9 SWAP3 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x87A JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x8BC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xA95 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 0x8E2 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xA95 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND DUP3 MSTORE DUP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x927 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x8A4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH1 0xA0 DUP4 MSTORE DUP1 DUP9 MLOAD PUSH2 0x947 DUP2 DUP5 PUSH2 0xA8C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 SWAP3 POP DUP3 DUP11 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x973 JUMPI PUSH2 0x965 DUP5 DUP4 MLOAD PUSH2 0x7F2 JUMP JUMPDEST SWAP4 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x952 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP9 MLOAD PUSH2 0x98A DUP2 DUP5 PUSH2 0xA8C JUMP JUMPDEST SWAP2 POP DUP4 DUP11 ADD SWAP3 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x9B4 JUMPI PUSH2 0x9A6 DUP4 DUP6 MLOAD PUSH2 0x803 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x993 JUMP JUMPDEST POP POP DUP5 DUP2 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x9C8 DUP2 DUP10 PUSH2 0x861 JUMP JUMPDEST SWAP3 POP POP POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x9DE DUP2 DUP7 PUSH2 0x80B JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0x9F0 DUP2 DUP7 PUSH2 0x8A4 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x689 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x8A4 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0xFF AND 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 0xA40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA5E JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA7E JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAB0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA98 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xABF 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 0xADA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH17 0x726F706F736528616464726573735B5D2C PUSH22 0x696E743235365B5D2C737472696E675B5D2C62797465 PUSH20 0x5B5D2C737472696E6729A2646970667358221220 0xD3 CALLER 0xD3 SWAP3 0x1F PUSH18 0xA73C9281CFC6832FB7A1DE035CB8B2FBEADB 0xAA OR 0xB5 SELFBALANCE PUSH7 0x1FBCBE64736F6C PUSH4 0x4300060A STOP CALLER ",
              "sourceMap": "914:5193:0:-:0;;;1930:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2009:30:0;;;;;;;;2049:34;;;;;914:5193;;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;;;914:5193:0;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "14": [
                  {
                    "length": 32,
                    "start": 851
                  },
                  {
                    "length": 32,
                    "start": 1035
                  },
                  {
                    "length": 32,
                    "start": 1155
                  }
                ],
                "16": [
                  {
                    "length": 32,
                    "start": 320
                  },
                  {
                    "length": 32,
                    "start": 524
                  },
                  {
                    "length": 32,
                    "start": 665
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061009e5760003560e01c8063d3da53a411610066578063d3da53a4146100fe578063d5abba9914610111578063f3d414c814610119578063f3f4b7ea1461012e578063f96dae0a146101365761009e565b80631ddf25e8146100a3578063538ba4f9146100c15780635cb8b5e3146100c9578063a4fed2ce146100eb578063d0ae50ae146100fe575b600080fd5b6100ab61013e565b6040516100b891906108ec565b60405180910390f35b6100ab610162565b6100dc6100d736600461075c565b610167565b6040516100b893929190610900565b6100dc6100f9366004610797565b610240565b6100dc61010c36600461066d565b6102cb565b6100dc610382565b610121610438565b6040516100b891906109fd565b610121610465565b6100ab610481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081565b600080606080606080606080888060200190518101906101879190610690565b945094509450945094506060604051806060016040528060348152602001610ade6034913986868686866040516024016101c5959493929190610930565b60408051601f1981840301815290829052916101e0916108d0565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f000000000000000000000000000000000000000000000000000000000000000099506000985096505050505050509193909250565b6000806060600085610253576000610256565b60015b90506060878260405160240161026d929190610a10565b60408051601f198184030181529190526020810180516001600160e01b0316630acf027160e31b1790527f00000000000000000000000000000000000000000000000000000000000000009550600094509250505093509350939050565b6000806060806040518060400160405280601181526020017064656c656761746528616464726573732960781b8152508560405160240161030c91906108ec565b60408051601f198184030181529082905291610327916108d0565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f00000000000000000000000000000000000000000000000000000000000000009450600093509150509193909250565b6000806060806040518060400160405280601181526020017064656c656761746528616464726573732960781b81525060006040516024016103c491906108ec565b60408051601f1981840301815290829052916103df916108d0565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f0000000000000000000000000000000000000000000000000000000000000000945060009350915050909192565b6040518060400160405280601181526020017064656c656761746528616464726573732960781b81525081565b604051806060016040528060348152602001610ade6034913981565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082601f8301126104b5578081fd5b81516104c86104c382610a48565b610a21565b8181529150602080830190848101818402860182018710156104e957600080fd5b60005b848110156105115781516104ff81610ac5565b845292820192908201906001016104ec565b505050505092915050565b600082601f83011261052c578081fd5b815161053a6104c382610a48565b818152915060208083019084810160005b8481101561051157610562888484518a0101610620565b8452928201929082019060010161054b565b600082601f830112610584578081fd5b81516105926104c382610a48565b8181529150602080830190848101818402860182018710156105b357600080fd5b60005b84811015610511578151845292820192908201906001016105b6565b600082601f8301126105e2578081fd5b81356105f06104c382610a68565b915080825283602082850101111561060757600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112610630578081fd5b815161063e6104c382610a68565b915080825283602082850101111561065557600080fd5b610666816020840160208601610a95565b5092915050565b60006020828403121561067e578081fd5b813561068981610ac5565b9392505050565b600080600080600060a086880312156106a7578081fd5b855167ffffffffffffffff808211156106be578283fd5b6106ca89838a016104a5565b965060208801519150808211156106df578283fd5b6106eb89838a01610574565b95506040880151915080821115610700578283fd5b61070c89838a0161051c565b94506060880151915080821115610721578283fd5b61072d89838a0161051c565b93506080880151915080821115610742578283fd5b5061074f88828901610620565b9150509295509295909350565b60006020828403121561076d578081fd5b813567ffffffffffffffff811115610783578182fd5b61078f848285016105d2565b949350505050565b6000806000606084860312156107ab578283fd5b83359250602084013580151581146107c1578283fd5b9150604084013567ffffffffffffffff8111156107dc578182fd5b6107e8868287016105d2565b9150509250925092565b6001600160a01b0316815260200190565b815260200190565b60008282518085526020808601955080818302840101818601855b8481101561085457601f198684030189526108428383516108a4565b98840198925090830190600101610826565b5090979650505050505050565b6000815180845260208085019450848183028601828601855b858110156108545783830389526108928383516108a4565b9885019892509084019060010161087a565b600081518084526108bc816020860160208601610a95565b601f01601f19169290920160200192915050565b600082516108e2818460208701610a95565b9190910192915050565b6001600160a01b0391909116815260200190565b600060018060a01b03851682528360208301526060604083015261092760608301846108a4565b95945050505050565b600060a0820160a083528088516109478184610a8c565b915060209250828a01845b82811015610973576109658483516107f2565b935090840190600101610952565b5050508381038285015280885161098a8184610a8c565b9150838a019250845b818110156109b4576109a6838551610803565b938501939250600101610993565b505084810360408601526109c88189610861565b9250505082810360608401526109de818661080b565b83810360808501526109f081866108a4565b9998505050505050505050565b60006020825261068960208301846108a4565b91825260ff16602082015260400190565b60405181810167ffffffffffffffff81118282101715610a4057600080fd5b604052919050565b600067ffffffffffffffff821115610a5e578081fd5b5060209081020190565b600067ffffffffffffffff821115610a7e578081fd5b50601f01601f191660200190565b90815260200190565b60005b83811015610ab0578181015183820152602001610a98565b83811115610abf576000848401525b50505050565b6001600160a01b0381168114610ada57600080fd5b5056fe70726f706f736528616464726573735b5d2c75696e743235365b5d2c737472696e675b5d2c62797465735b5d2c737472696e6729a2646970667358221220d333d3921f71a73c9281cfc6832fb7a1de035cb8b2fbeadbaa17b547661fbcbe64736f6c634300060a0033",
              "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 0xD3DA53A4 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD3DA53A4 EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0xD5ABBA99 EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0xF3D414C8 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0xF3F4B7EA EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0xF96DAE0A EQ PUSH2 0x136 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0x1DDF25E8 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x538BA4F9 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x5CB8B5E3 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xA4FED2CE EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xD0AE50AE EQ PUSH2 0xFE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0x13E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH2 0x162 JUMP JUMPDEST PUSH2 0xDC PUSH2 0xD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x75C JUMP JUMPDEST PUSH2 0x167 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x900 JUMP JUMPDEST PUSH2 0xDC PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x797 JUMP JUMPDEST PUSH2 0x240 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x10C CALLDATASIZE PUSH1 0x4 PUSH2 0x66D JUMP JUMPDEST PUSH2 0x2CB JUMP JUMPDEST PUSH2 0xDC PUSH2 0x382 JUMP JUMPDEST PUSH2 0x121 PUSH2 0x438 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0x9FD JUMP JUMPDEST PUSH2 0x121 PUSH2 0x465 JUMP JUMPDEST PUSH2 0xAB PUSH2 0x481 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 DUP9 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x187 SWAP2 SWAP1 PUSH2 0x690 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xADE PUSH1 0x34 SWAP2 CODECOPY DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1C5 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x930 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x1E0 SWAP2 PUSH2 0x8D0 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 SWAP10 POP PUSH1 0x0 SWAP9 POP SWAP7 POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 PUSH1 0x0 DUP6 PUSH2 0x253 JUMPI PUSH1 0x0 PUSH2 0x256 JUMP JUMPDEST PUSH1 0x1 JUMPDEST SWAP1 POP PUSH1 0x60 DUP8 DUP3 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x26D SWAP3 SWAP2 SWAP1 PUSH2 0xA10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xACF0271 PUSH1 0xE3 SHL OR SWAP1 MSTORE PUSH32 0x0 SWAP6 POP PUSH1 0x0 SWAP5 POP SWAP3 POP 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 0x30C SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x327 SWAP2 PUSH2 0x8D0 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 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 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3C4 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x3DF SWAP2 PUSH2 0x8D0 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 SWAP1 SWAP2 SWAP3 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 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xADE PUSH1 0x34 SWAP2 CODECOPY DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4B5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x4C8 PUSH2 0x4C3 DUP3 PUSH2 0xA48 JUMP JUMPDEST PUSH2 0xA21 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 0x4E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x511 JUMPI DUP2 MLOAD PUSH2 0x4FF DUP2 PUSH2 0xAC5 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4EC JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x52C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x53A PUSH2 0x4C3 DUP3 PUSH2 0xA48 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x511 JUMPI PUSH2 0x562 DUP9 DUP5 DUP5 MLOAD DUP11 ADD ADD PUSH2 0x620 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x54B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x584 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x592 PUSH2 0x4C3 DUP3 PUSH2 0xA48 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 0x5B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x511 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5E2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5F0 PUSH2 0x4C3 DUP3 PUSH2 0xA68 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x607 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 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x630 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x63E PUSH2 0x4C3 DUP3 PUSH2 0xA68 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x655 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x666 DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xA95 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x67E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x689 DUP2 PUSH2 0xAC5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x6A7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6BE JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x6CA DUP10 DUP4 DUP11 ADD PUSH2 0x4A5 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6DF JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x6EB DUP10 DUP4 DUP11 ADD PUSH2 0x574 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x700 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x70C DUP10 DUP4 DUP11 ADD PUSH2 0x51C JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x721 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x72D DUP10 DUP4 DUP11 ADD PUSH2 0x51C JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x742 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x74F DUP9 DUP3 DUP10 ADD PUSH2 0x620 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x76D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x783 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x78F DUP5 DUP3 DUP6 ADD PUSH2 0x5D2 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x7AB JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x7C1 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7DC JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x7E8 DUP7 DUP3 DUP8 ADD PUSH2 0x5D2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP6 POP DUP1 DUP2 DUP4 MUL DUP5 ADD ADD DUP2 DUP7 ADD DUP6 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x854 JUMPI PUSH1 0x1F NOT DUP7 DUP5 SUB ADD DUP10 MSTORE PUSH2 0x842 DUP4 DUP4 MLOAD PUSH2 0x8A4 JUMP JUMPDEST SWAP9 DUP5 ADD SWAP9 SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x826 JUMP JUMPDEST POP SWAP1 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 DUP5 DUP2 DUP4 MUL DUP7 ADD DUP3 DUP7 ADD DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x854 JUMPI DUP4 DUP4 SUB DUP10 MSTORE PUSH2 0x892 DUP4 DUP4 MLOAD PUSH2 0x8A4 JUMP JUMPDEST SWAP9 DUP6 ADD SWAP9 SWAP3 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x87A JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x8BC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xA95 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 0x8E2 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xA95 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND DUP3 MSTORE DUP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x927 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x8A4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH1 0xA0 DUP4 MSTORE DUP1 DUP9 MLOAD PUSH2 0x947 DUP2 DUP5 PUSH2 0xA8C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 SWAP3 POP DUP3 DUP11 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x973 JUMPI PUSH2 0x965 DUP5 DUP4 MLOAD PUSH2 0x7F2 JUMP JUMPDEST SWAP4 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x952 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP9 MLOAD PUSH2 0x98A DUP2 DUP5 PUSH2 0xA8C JUMP JUMPDEST SWAP2 POP DUP4 DUP11 ADD SWAP3 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x9B4 JUMPI PUSH2 0x9A6 DUP4 DUP6 MLOAD PUSH2 0x803 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x993 JUMP JUMPDEST POP POP DUP5 DUP2 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x9C8 DUP2 DUP10 PUSH2 0x861 JUMP JUMPDEST SWAP3 POP POP POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x9DE DUP2 DUP7 PUSH2 0x80B JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0x9F0 DUP2 DUP7 PUSH2 0x8A4 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x689 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x8A4 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0xFF AND 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 0xA40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA5E JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA7E JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAB0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA98 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xABF 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 0xADA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH17 0x726F706F736528616464726573735B5D2C PUSH22 0x696E743235365B5D2C737472696E675B5D2C62797465 PUSH20 0x5B5D2C737472696E6729A2646970667358221220 0xD3 CALLER 0xD3 SWAP3 0x1F PUSH18 0xA73C9281CFC6832FB7A1DE035CB8B2FBEADB 0xAA OR 0xB5 SELFBALANCE PUSH7 0x1FBCBE64736F6C PUSH4 0x4300060A STOP CALLER ",
              "sourceMap": "914:5193:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1659:38;;;:::i;:::-;;;;;;;;;;;;;;;;1385:81;;;:::i;5428:677::-;;;;;;;;;:::i;:::-;;;;;;;;;;2616:417;;;;;;;;;:::i;3507:288::-;;;;;;;;;:::i;4804:270::-;;;:::i;1315:63::-;;;:::i;:::-;;;;;;;;1138:97;;;:::i;1561:40::-;;;:::i;1659:38::-;;;:::o;1385:81::-;1424:42;1385:81;:::o;5428:677::-;5507:7;5516;5525:12;5595:24;5633:23;5670:26;5710:24;5748:25;5797:13;5786:72;;;;;;;;;;;;;;5581:277;;;;;;;;;;5933:21;5981:17;;;;;;;;;;;;;;;;;6000:7;6009:6;6017:10;6029:9;6040:11;5957:95;;;;;;;;;;;;;;;;;-1:-1:-1;;5957:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5957:95:0;-1:-1:-1;;;;;;5957:95:0;;;;;;;;;6071:13;;-1:-1:-1;;;;5957:95:0;-1:-1:-1;;;;;;;5428:677:0;;;;;:::o;2616:417::-;2726:7;2735;2744:12;2830:19;2852:8;:16;;2867:1;2852:16;;;2863:1;2852:16;2830:38;;2878:21;2953:11;2966:13;2902:78;;;;;;;;;;;;;;-1:-1:-1;;2902:78:0;;;;;;;;;;;;;;-1:-1:-1;;;;;2902:78:0;-1:-1:-1;;;2902:78:0;;;2999:13;;-1:-1:-1;;;;2902:78:0;-1:-1:-1;;;2616:417:0;;;;;;;:::o;3507:288::-;3579:7;3588;3597:12;3661:21;3709:18;;;;;;;;;;;;;-1:-1:-1;;;3709:18:0;;;3729:10;3685:55;;;;;;;;;;;;;-1:-1:-1;;3685:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3685:55:0;-1:-1:-1;;;;;;3685:55:0;;;;;;;;;3759:15;;-1:-1:-1;;;;3685:55:0;-1:-1:-1;;3507:288:0;;;;;:::o;4804:270::-;4856:7;4865;4874:12;4938:21;4986:18;;;;;;;;;;;;;-1:-1:-1;;;4986:18:0;;;1424:42;4962:57;;;;;;;;;;;;;-1:-1:-1;;4962:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4962:57:0;-1:-1:-1;;;;;;4962:57:0;;;;;;;;;5038:15;;-1:-1:-1;;;;4962:57:0;-1:-1:-1;;4804:270:0;;;:::o;1315:63::-;;;;;;;;;;;;;;-1:-1:-1;;;1315:63:0;;;;:::o;1138:97::-;;;;;;;;;;;;;;;;;;;:::o;1561:40::-;;;:::o;301:722:-1:-;;429:3;422:4;414:6;410:17;406:27;396:2;;-1:-1;;437:12;396:2;477:6;471:13;499:80;514:64;571:6;514:64;;;499:80;;;607:21;;;490:89;-1:-1;651:4;664:14;;;;639:17;;;753;;;744:27;;;;741:36;-1:-1;738:2;;;790:1;;780:12;738:2;815:1;800:217;825:6;822:1;819:13;800:217;;;226:6;220:13;238:33;265:5;238:33;;;893:61;;968:14;;;;996;;;;847:1;840:9;800:217;;;804:14;;;;;389:634;;;;;1047:713;;1184:3;1177:4;1169:6;1165:17;1161:27;1151:2;;-1:-1;;1192:12;1151:2;1232:6;1226:13;1254:89;1269:73;1335:6;1269:73;;1254:89;1371:21;;;1245:98;-1:-1;1415:4;1428:14;;;;1403:17;;;1523:1;1508:246;1533:6;1530:1;1527:13;1508:246;;;1633:57;1686:3;1415:4;1609:3;1603:10;1407:6;1591:23;;1633:57;;;1621:70;;1705:14;;;;1733;;;;1555:1;1548:9;1508:246;;2527:722;;2655:3;2648:4;2640:6;2636:17;2632:27;2622:2;;-1:-1;;2663:12;2622:2;2703:6;2697:13;2725:80;2740:64;2797:6;2740:64;;2725:80;2833:21;;;2716:89;-1:-1;2877:4;2890:14;;;;2865:17;;;2979;;;2970:27;;;;2967:36;-1:-1;2964:2;;;3016:1;;3006:12;2964:2;3041:1;3026:217;3051:6;3048:1;3045:13;3026:217;;;4956:13;;3119:61;;3194:14;;;;3222;;;;3073:1;3066:9;3026:217;;3389:440;;3490:3;3483:4;3475:6;3471:17;3467:27;3457:2;;-1:-1;;3498:12;3457:2;3545:6;3532:20;3567:64;3582:48;3623:6;3582:48;;3567:64;3558:73;;3651:6;3644:5;3637:21;3755:3;3687:4;3746:6;3679;3737:16;;3734:25;3731:2;;;3772:1;;3762:12;3731:2;23580:6;3687:4;3679:6;3675:17;3687:4;3713:5;3709:16;23557:30;23636:1;23618:16;;;3687:4;23618:16;23611:27;3713:5;3450:379;-1:-1;;3450:379;3838:442;;3950:3;3943:4;3935:6;3931:17;3927:27;3917:2;;-1:-1;;3958:12;3917:2;3998:6;3992:13;4020:64;4035:48;4076:6;4035:48;;4020:64;4011:73;;4104:6;4097:5;4090:21;4208:3;4140:4;4199:6;4132;4190:16;;4187:25;4184:2;;;4225:1;;4215:12;4184:2;4235:39;4267:6;4140:4;4166:5;4162:16;4140:4;4132:6;4128:17;4235:39;;;;3910:370;;;;;5019:241;;5123:2;5111:9;5102:7;5098:23;5094:32;5091:2;;;-1:-1;;5129:12;5091:2;85:6;72:20;97:33;124:5;97:33;;;5181:63;5085:175;-1:-1;;;5085:175;5267:1462;;;;;;5579:3;5567:9;5558:7;5554:23;5550:33;5547:2;;;-1:-1;;5586:12;5547:2;5637:17;5631:24;5675:18;;5667:6;5664:30;5661:2;;;-1:-1;;5697:12;5661:2;5727:89;5808:7;5799:6;5788:9;5784:22;5727:89;;;5717:99;;5874:2;5863:9;5859:18;5853:25;5839:39;;5675:18;5890:6;5887:30;5884:2;;;-1:-1;;5920:12;5884:2;5950:89;6031:7;6022:6;6011:9;6007:22;5950:89;;;5940:99;;6097:2;6086:9;6082:18;6076:25;6062:39;;5675:18;6113:6;6110:30;6107:2;;;-1:-1;;6143:12;6107:2;6173:99;6264:7;6255:6;6244:9;6240:22;6173:99;;;6163:109;;6330:2;6319:9;6315:18;6309:25;6295:39;;5675:18;6346:6;6343:30;6340:2;;;-1:-1;;6376:12;6340:2;6406:98;6496:7;6487:6;6476:9;6472:22;6406:98;;;6396:108;;6562:3;6551:9;6547:19;6541:26;6527:40;;5675:18;6579:6;6576:30;6573:2;;;-1:-1;;6609:12;6573:2;;6639:74;6705:7;6696:6;6685:9;6681:22;6639:74;;;6629:84;;;5541:1188;;;;;;;;;6736:345;;6849:2;6837:9;6828:7;6824:23;6820:32;6817:2;;;-1:-1;;6855:12;6817:2;6913:17;6900:31;6951:18;6943:6;6940:30;6937:2;;;-1:-1;;6973:12;6937:2;7003:62;7057:7;7048:6;7037:9;7033:22;7003:62;;;6993:72;6811:270;-1:-1;;;;6811:270;7088:589;;;;7232:2;7220:9;7211:7;7207:23;7203:32;7200:2;;;-1:-1;;7238:12;7200:2;4821:6;4808:20;7290:63;;7390:2;7430:9;7426:22;3321:20;24239:5;23177:13;23170:21;24217:5;24214:32;24204:2;;-1:-1;;24250:12;24204:2;7398:60;-1:-1;7523:2;7508:18;;7495:32;7547:18;7536:30;;7533:2;;;-1:-1;;7569:12;7533:2;7599:62;7653:7;7644:6;7633:9;7629:22;7599:62;;;7589:72;;;7194:483;;;;;;7685:173;-1:-1;;;;;23265:54;8509:37;;7847:4;7838:14;;7765:93;8267:173;13852:37;;8429:4;8420:14;;8347:93;9434:920;;9583:77;9654:5;20198:12;21557:6;21552:3;21545:19;21594:4;;21589:3;21585:14;9666:102;;21594:4;;9825:6;9821:17;21589:3;9812:27;;21594:4;9919:5;19559:14;-1:-1;9958:357;9983:6;9980:1;9977:13;9958:357;;;10035:20;;21589:3;10039:4;10035:20;;10030:3;10023:33;7986:64;8046:3;10090:6;10084:13;7986:64;;;10294:14;;;;10104:90;-1:-1;21036:14;;;;10005:1;9998:9;9958:357;;;-1:-1;10338:10;;9576:778;-1:-1;;;;;;;9576:778;10391:928;;10614:5;20198:12;21557:6;21552:3;21545:19;21594:4;;21589:3;21585:14;10626:103;;;21594:4;10786:6;10782:17;10777:3;10773:27;21594:4;10881:5;19559:14;-1:-1;10920:360;10945:6;10942:1;10939:13;10920:360;;;11007:9;11001:4;10997:20;10992:3;10985:33;8186:66;8248:3;11052:6;11046:13;8186:66;;;11259:14;;;;11066:92;-1:-1;21036:14;;;;10967:1;10960:9;10920:360;;12056:323;;12188:5;20198:12;21557:6;21552:3;21545:19;12271:52;12316:6;21594:4;21589:3;21585:14;21594:4;12297:5;12293:16;12271:52;;;10035:20;23997:14;-1:-1;;23993:28;12335:39;;;;21594:4;12335:39;;12136:243;-1:-1;;12136:243;14135:275;;13587:5;20198:12;13699:52;13744:6;13739:3;13732:4;13725:5;13721:16;13699:52;;;13763:16;;;;;14271:139;-1:-1;;14271:139;14417:222;-1:-1;;;;;23265:54;;;;8509:37;;14544:2;14529:18;;14515:124;14646:528;;5675:18;;23276:42;;;23269:5;23265:54;8516:3;8509:37;13882:5;15011:2;15000:9;14996:18;13852:37;14847:2;15048;15037:9;15033:18;15026:48;15088:76;14847:2;14836:9;14832:18;15150:6;15088:76;;;15080:84;14818:356;-1:-1;;;;;14818:356;15181:1424;;15678:3;15667:9;15663:19;15678:3;15700:17;15693:47;15754:108;8902:5;20198:12;8921:86;9000:6;8995:3;8921:86;;;8914:93;;19568:4;;;;9078:5;19559:14;-1:-1;9117:260;9142:6;9139:1;9136:13;9117:260;;;9230:63;9289:3;9209:6;9203:13;9230:63;;;9223:70;-1:-1;21036:14;;;;9164:1;9157:9;9117:260;;;9121:14;;;15910:9;15904:4;15900:20;19568:4;15884:9;15880:18;15873:48;15935:108;11551:5;20198:12;11570:86;11649:6;11644:3;11570:86;;;11563:93;;19568:4;11727:5;19559:14;11739:21;;-1:-1;11766:260;11791:6;11788:1;11785:13;11766:260;;;11879:63;11938:3;11858:6;11852:13;11879:63;;;21036:14;;;;11872:70;-1:-1;9164:1;11806:9;11766:260;;;11770:14;;16091:9;16085:4;16081:20;16076:2;16065:9;16061:18;16054:48;16116:128;16239:4;16230:6;16116:128;;;16108:136;;;;16292:9;16286:4;16282:20;16277:2;16266:9;16262:18;16255:48;16317:126;16438:4;16429:6;16317:126;;;16492:9;16486:4;16482:20;16476:3;16465:9;16461:19;16454:49;16517:78;16590:4;16581:6;16517:78;;;16509:86;15649:956;-1:-1;;;;;;;;;15649:956;16612:310;;16759:2;16780:17;16773:47;16834:78;16759:2;16748:9;16744:18;16898:6;16834:78;;16929:325;13852:37;;;23481:4;23470:16;17240:2;17225:18;;14088:35;17080:2;17065:18;;17051:203;17261:256;17323:2;17317:9;17349:17;;;17424:18;17409:34;;17445:22;;;17406:62;17403:2;;;17481:1;;17471:12;17403:2;17323;17490:22;17301:216;;-1:-1;17301:216;17524:304;;17683:18;17675:6;17672:30;17669:2;;;-1:-1;;17705:12;17669:2;-1:-1;17750:4;17738:17;;;17803:15;;17606:222;18787:321;;18930:18;18922:6;18919:30;18916:2;;;-1:-1;;18952:12;18916:2;-1:-1;10035:20;19006:17;-1:-1;;19002:33;19093:4;19083:15;;18853:255;21427:178;21545:19;;;21594:4;21585:14;;21538:67;23653:268;23718:1;23725:101;23739:6;23736:1;23733:13;23725:101;;;23806:11;;;23800:18;23787:11;;;23780:39;23761:2;23754:10;23725:101;;;23841:6;23838:1;23835:13;23832:2;;;23718:1;23897:6;23892:3;23888:16;23881:27;23832:2;;23702:219;;;;24034:117;-1:-1;;;;;23265:54;;24093:35;;24083:2;;24142:1;;24132:12;24083:2;24077:74;"
            },
            "methodIdentifiers": {
              "DELEGATE_SIGNATURE()": "f3d414c8",
              "PROPOSE_SIGNATURE()": "f3f4b7ea",
              "ZERO_ADDRESS()": "538ba4f9",
              "getDelegateCalldata(address)": "d0ae50ae",
              "getProposeCalldata(bytes)": "5cb8b5e3",
              "getRegisterCalldata(address)": "d3da53a4",
              "getRevokeCalldata()": "d5abba99",
              "getVoteCalldata(uint256,bool,bytes)": "a4fed2ce",
              "governanceToken()": "f96dae0a",
              "governorBravo()": "1ddf25e8"
            }
          }
        }
      }
    },
    "sources": {
      "contracts/protocol/integration/governance/CompoundBravoGovernanceAdapter.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/integration/governance/CompoundBravoGovernanceAdapter.sol",
          "exportedSymbols": {
            "CompoundBravoGovernanceAdapter": [
              214
            ]
          },
          "id": 215,
          "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:196:0",
                "text": " @title CompoundBravoGovernanceAdapter\n @author Set Protocol\n Governance adapter for Compound Bravo governance system that returns data for voting, delegating and making proposals"
              },
              "fullyImplemented": true,
              "id": 214,
              "linearizedBaseContracts": [
                214
              ],
              "name": "CompoundBravoGovernanceAdapter",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "functionSelector": "f3f4b7ea",
                  "id": 6,
                  "mutability": "constant",
                  "name": "PROPOSE_SIGNATURE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 214,
                  "src": "1138:97:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1138:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "70726f706f736528616464726573735b5d2c75696e743235365b5d2c737472696e675b5d2c62797465735b5d2c737472696e6729",
                    "id": 5,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1181:54:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_da95691a8ecd75fda62a6d7fa1f00f0435e15a380eb69f49bc44a2b26d485645",
                      "typeString": "literal_string \"propose(address[],uint256[],string[],bytes[],string)\""
                    },
                    "value": "propose(address[],uint256[],string[],bytes[],string)"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "f3d414c8",
                  "id": 9,
                  "mutability": "constant",
                  "name": "DELEGATE_SIGNATURE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 214,
                  "src": "1315:63:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1315:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "64656c6567617465286164647265737329",
                    "id": 8,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1359:19:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_5c19a95c96fe5699f69181241d04ecef12a0c89506c08c7360f0f7e9a556859f",
                      "typeString": "literal_string \"delegate(address)\""
                    },
                    "value": "delegate(address)"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "538ba4f9",
                  "id": 12,
                  "mutability": "constant",
                  "name": "ZERO_ADDRESS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 214,
                  "src": "1385:81:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1385:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307830303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 11,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1424:42:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    },
                    "value": "0x0000000000000000000000000000000000000000"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "f96dae0a",
                  "id": 14,
                  "mutability": "immutable",
                  "name": "governanceToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 214,
                  "src": "1561:40:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1561:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "1ddf25e8",
                  "id": 16,
                  "mutability": "immutable",
                  "name": "governorBravo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 214,
                  "src": "1659:38:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1659:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 32,
                    "nodeType": "Block",
                    "src": "1999:91:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 24,
                            "name": "governorBravo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16,
                            "src": "2009:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 25,
                            "name": "_governorBravo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19,
                            "src": "2025:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2009:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 27,
                        "nodeType": "ExpressionStatement",
                        "src": "2009:30:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 28,
                            "name": "governanceToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14,
                            "src": "2049:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 29,
                            "name": "_governanceToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21,
                            "src": "2067:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2049:34:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 31,
                        "nodeType": "ExpressionStatement",
                        "src": "2049:34:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17,
                    "nodeType": "StructuredDocumentation",
                    "src": "1753:172:0",
                    "text": " Set state variables\n @param _governorBravo    Address of Governor Bravo contract\n @param _governanceToken  Address of governance token"
                  },
                  "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": "_governorBravo",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 33,
                        "src": "1942:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1942:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21,
                        "mutability": "mutable",
                        "name": "_governanceToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 33,
                        "src": "1966:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1966:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1941:50:0"
                  },
                  "returnParameters": {
                    "id": 23,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1999:0:0"
                  },
                  "scope": 214,
                  "src": "1930:160:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 70,
                    "nodeType": "Block",
                    "src": "2758:275:0",
                    "statements": [
                      {
                        "assignments": [
                          50
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 50,
                            "mutability": "mutable",
                            "name": "supportNumber",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 70,
                            "src": "2830:19:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 49,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "2830:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 55,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "id": 51,
                            "name": "_support",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38,
                            "src": "2852:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 53,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2867:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "id": 54,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "2852:16:0",
                          "trueExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 52,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2863:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2830:38:0"
                      },
                      {
                        "assignments": [
                          57
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 57,
                            "mutability": "mutable",
                            "name": "callData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 70,
                            "src": "2878:21:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 56,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2878:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 64,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "63617374566f74652875696e743235362c75696e743829",
                              "id": 60,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2926:25:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_567813887e9a02f0fdc9e5cce34dad3f5e8ac785aa0259ba5d30339dd056cd23",
                                "typeString": "literal_string \"castVote(uint256,uint8)\""
                              },
                              "value": "castVote(uint256,uint8)"
                            },
                            {
                              "argumentTypes": null,
                              "id": 61,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36,
                              "src": "2953:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 62,
                              "name": "supportNumber",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 50,
                              "src": "2966:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_567813887e9a02f0fdc9e5cce34dad3f5e8ac785aa0259ba5d30339dd056cd23",
                                "typeString": "literal_string \"castVote(uint256,uint8)\""
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 58,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "2902:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 59,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2902: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": 63,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2902:78:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2878:102:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 65,
                              "name": "governorBravo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16,
                              "src": "2999:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 66,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3014:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 67,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 57,
                              "src": "3017:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 68,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2998:28: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": 69,
                        "nodeType": "Return",
                        "src": "2991:35:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 34,
                    "nodeType": "StructuredDocumentation",
                    "src": "2159:452:0",
                    "text": " Generates the calldata to vote on a proposal. Bytes data paramater is unused in Compound\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": 71,
                  "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": 71,
                        "src": "2641:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2641: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": 71,
                        "src": "2662:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 37,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2662:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 71,
                        "src": "2677:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 39,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2677:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2640:62:0"
                  },
                  "returnParameters": {
                    "id": 48,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 71,
                        "src": "2726:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2726: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": 71,
                        "src": "2735:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2735:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 47,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 71,
                        "src": "2744:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 46,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2744:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2725:32:0"
                  },
                  "scope": 214,
                  "src": "2616:417:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 96,
                    "nodeType": "Block",
                    "src": "3611:184:0",
                    "statements": [
                      {
                        "assignments": [
                          84
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 84,
                            "mutability": "mutable",
                            "name": "callData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 96,
                            "src": "3661:21:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 83,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3661:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 90,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 87,
                              "name": "DELEGATE_SIGNATURE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9,
                              "src": "3709:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 88,
                              "name": "_delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 74,
                              "src": "3729: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": 85,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "3685:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 86,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3685: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": 89,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3685:55:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3661:79:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 91,
                              "name": "governanceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14,
                              "src": "3759:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 92,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3776:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 93,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 84,
                              "src": "3779:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 94,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3758:30: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": 82,
                        "id": 95,
                        "nodeType": "Return",
                        "src": "3751:37:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 72,
                    "nodeType": "StructuredDocumentation",
                    "src": "3039:463: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 Compound\n like governance systems.\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": 97,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDelegateCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 75,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 74,
                        "mutability": "mutable",
                        "name": "_delegatee",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 97,
                        "src": "3536:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 73,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3536:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3535:20:0"
                  },
                  "returnParameters": {
                    "id": 82,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 77,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 97,
                        "src": "3579:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 76,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3579:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 79,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 97,
                        "src": "3588:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 78,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3588:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 81,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 97,
                        "src": "3597:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 80,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3597:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3578:32:0"
                  },
                  "scope": 214,
                  "src": "3507:288:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 122,
                    "nodeType": "Block",
                    "src": "4296:183:0",
                    "statements": [
                      {
                        "assignments": [
                          110
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 110,
                            "mutability": "mutable",
                            "name": "callData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 122,
                            "src": "4346:21:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 109,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4346:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 116,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 113,
                              "name": "DELEGATE_SIGNATURE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9,
                              "src": "4394:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 114,
                              "name": "_setToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 100,
                              "src": "4414:9: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": 111,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "4370:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 112,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4370: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": 115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4370:54:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4346:78:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 117,
                              "name": "governanceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14,
                              "src": "4443:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 118,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4460:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 119,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 110,
                              "src": "4463:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 120,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4442:30: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": 108,
                        "id": 121,
                        "nodeType": "Return",
                        "src": "4435:37:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 98,
                    "nodeType": "StructuredDocumentation",
                    "src": "3801:387:0",
                    "text": " Generates the calldata to register for voting. This is equivalent to delegating to the SetToken address in Compound.\n @param _setToken             Address of SetToken\n @return address              Target contract address\n @return uint256              Total quantity of ETH (Set to 0)\n @return bytes                Propose calldata"
                  },
                  "functionSelector": "d3da53a4",
                  "id": 123,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRegisterCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 101,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 100,
                        "mutability": "mutable",
                        "name": "_setToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 123,
                        "src": "4222:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 99,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4222:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4221:19:0"
                  },
                  "returnParameters": {
                    "id": 108,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 103,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 123,
                        "src": "4264:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 102,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4264:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 105,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 123,
                        "src": "4273:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 104,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4273:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 107,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 123,
                        "src": "4282:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 106,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4282:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4263:32:0"
                  },
                  "scope": 214,
                  "src": "4193:286:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 146,
                    "nodeType": "Block",
                    "src": "4888:186:0",
                    "statements": [
                      {
                        "assignments": [
                          134
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 134,
                            "mutability": "mutable",
                            "name": "callData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 146,
                            "src": "4938:21:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 133,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4938:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 140,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 137,
                              "name": "DELEGATE_SIGNATURE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9,
                              "src": "4986:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 138,
                              "name": "ZERO_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12,
                              "src": "5006:12: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": 135,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "4962:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4962: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": 139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4962:57:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4938:81:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 141,
                              "name": "governanceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14,
                              "src": "5038:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5055:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 143,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 134,
                              "src": "5058:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 144,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5037:30: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": 132,
                        "id": 145,
                        "nodeType": "Return",
                        "src": "5030:37:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 124,
                    "nodeType": "StructuredDocumentation",
                    "src": "4485:314:0",
                    "text": " Generates the calldata to revoke voting. This is equivalent to delegating to the zero address in Compound.\n @return address              Target contract address\n @return uint256              Total quantity of ETH (Set to 0)\n @return bytes                Propose calldata"
                  },
                  "functionSelector": "d5abba99",
                  "id": 147,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevokeCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 125,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4830:2:0"
                  },
                  "returnParameters": {
                    "id": 132,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 127,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 147,
                        "src": "4856:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 126,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4856:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 129,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 147,
                        "src": "4865:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 128,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4865:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 131,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 147,
                        "src": "4874:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 130,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4874:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4855:32:0"
                  },
                  "scope": 214,
                  "src": "4804:270:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 212,
                    "nodeType": "Block",
                    "src": "5539:566:0",
                    "statements": [
                      {
                        "assignments": [
                          163,
                          166,
                          169,
                          172,
                          174
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 163,
                            "mutability": "mutable",
                            "name": "targets",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 212,
                            "src": "5595:24:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 161,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5595:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 162,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "5595:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 166,
                            "mutability": "mutable",
                            "name": "values",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 212,
                            "src": "5633:23:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 164,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5633:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 165,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "5633:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 169,
                            "mutability": "mutable",
                            "name": "signatures",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 212,
                            "src": "5670:26:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                              "typeString": "string[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 167,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "5670:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage_ptr",
                                  "typeString": "string"
                                }
                              },
                              "id": 168,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "5670:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                                "typeString": "string[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 172,
                            "mutability": "mutable",
                            "name": "calldatas",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 212,
                            "src": "5710:24:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 170,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "5710:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              },
                              "id": 171,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "5710:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                                "typeString": "bytes[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 174,
                            "mutability": "mutable",
                            "name": "description",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 212,
                            "src": "5748:25:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 173,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "5748:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 194,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 177,
                              "name": "_proposalData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 150,
                              "src": "5797:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 179,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5813:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 178,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5813:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 180,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5813:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_address_$dyn_memory_ptr_$",
                                    "typeString": "type(address[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 182,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5823:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 181,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5823:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 183,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5823:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 185,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5833:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 184,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5833:6:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 186,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5833: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": 188,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5842:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 187,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5842:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 189,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5842:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                                    "typeString": "type(bytes memory[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 191,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5850:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                    "typeString": "type(string storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 190,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5850:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                }
                              ],
                              "id": 192,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5812:45:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_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_string_storage_ptr_$_$",
                                "typeString": "tuple(type(address[] memory),type(uint256[] memory),type(string memory[] memory),type(bytes memory[] memory),type(string storage pointer))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_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_string_storage_ptr_$_$",
                                "typeString": "tuple(type(address[] memory),type(uint256[] memory),type(string memory[] memory),type(bytes memory[] memory),type(string storage pointer))"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 175,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "5786:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 176,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5786:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5786:72:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_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_string_memory_ptr_$",
                            "typeString": "tuple(address[] memory,uint256[] memory,string memory[] memory,bytes memory[] memory,string memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5581:277:0"
                      },
                      {
                        "assignments": [
                          196
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 196,
                            "mutability": "mutable",
                            "name": "callData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 212,
                            "src": "5933:21:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 195,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5933:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 206,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 199,
                              "name": "PROPOSE_SIGNATURE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6,
                              "src": "5981:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 200,
                              "name": "targets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 163,
                              "src": "6000:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 201,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 166,
                              "src": "6009:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 202,
                              "name": "signatures",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 169,
                              "src": "6017:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 203,
                              "name": "calldatas",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 172,
                              "src": "6029:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                "typeString": "bytes memory[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 204,
                              "name": "description",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 174,
                              "src": "6040:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "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_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 197,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "5957:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 198,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5957: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": 205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5957:95:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5933:119:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 207,
                              "name": "governorBravo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16,
                              "src": "6071:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6086:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 209,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 196,
                              "src": "6089:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 210,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6070:28: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": 158,
                        "id": 211,
                        "nodeType": "Return",
                        "src": "6063:35:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 148,
                    "nodeType": "StructuredDocumentation",
                    "src": "5080:343:0",
                    "text": " Generates the calldata to create a new proposal\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": 213,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getProposeCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 151,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 150,
                        "mutability": "mutable",
                        "name": "_proposalData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 213,
                        "src": "5456:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 149,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5456:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5455:28:0"
                  },
                  "returnParameters": {
                    "id": 158,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 153,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 213,
                        "src": "5507:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 152,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5507:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 155,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 213,
                        "src": "5516:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 154,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5516:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 157,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 213,
                        "src": "5525:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 156,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5525:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5506:32:0"
                  },
                  "scope": 214,
                  "src": "5428:677:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 215,
              "src": "914:5193:0"
            }
          ],
          "src": "655:5453:0"
        },
        "id": 0
      }
    }
  }
}
