UNPKG

@venusprotocol/governance-contracts

Version:

### Prerequisites

1 lines 649 kB
{"id":"5ef7ba07b1e4b96d9b02042d36d229c2","_format":"hh-sol-build-info-1","solcVersion":"0.5.16","solcLongVersion":"0.5.16+commit.9c3226ce","input":{"language":"Solidity","sources":{"contracts/legacy/GovernorAlpha2.sol":{"content":"pragma solidity ^0.5.16;\npragma experimental ABIEncoderV2;\n\ncontract GovernorAlpha2 {\n /// @notice The name of this contract\n string public constant name = \"Venus Governor Alpha\";\n\n /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed\n function quorumVotes() public pure returns (uint) {\n return 600000e18;\n } // 600,000 = 2% of XVS\n\n /// @notice The number of votes required in order for a voter to become a proposer\n function proposalThreshold() public pure returns (uint) {\n return 300000e18;\n } // 300,000 = 1% of XVS\n\n /// @notice The maximum number of actions that can be included in a proposal\n function proposalMaxOperations() public pure returns (uint) {\n return 30;\n } // 30 actions\n\n /// @notice The delay before voting on a proposal may take place, once proposed\n function votingDelay() public pure returns (uint) {\n return 1;\n } // 1 block\n\n /// @notice The duration of voting on a proposal, in blocks\n function votingPeriod() public pure returns (uint) {\n return (60 * 60 * 24 * 3) / 3;\n } // ~3 days in blocks (assuming 3s blocks)\n\n /// @notice The address of the Venus Protocol Timelock\n TimelockInterface public timelock;\n\n /// @notice The address of the Venus governance token\n XVSInterface public xvs;\n\n /// @notice The address of the Governor Guardian\n address public guardian;\n\n /// @notice The total number of proposals\n uint public proposalCount;\n\n struct Proposal {\n /// @notice Unique id for looking up a proposal\n uint id;\n /// @notice Creator of the proposal\n address proposer;\n /// @notice The timestamp that the proposal will be available for execution, set once the vote succeeds\n uint eta;\n /// @notice the ordered list of target addresses for calls to be made\n address[] targets;\n /// @notice The ordered list of values (i.e. msg.value) to be passed to the calls to be made\n uint[] values;\n /// @notice The ordered list of function signatures to be called\n string[] signatures;\n /// @notice The ordered list of calldata to be passed to each call\n bytes[] calldatas;\n /// @notice The block at which voting begins: holders must delegate their votes prior to this block\n uint startBlock;\n /// @notice The block at which voting ends: votes must be cast prior to this block\n uint endBlock;\n /// @notice Current number of votes in favor of this proposal\n uint forVotes;\n /// @notice Current number of votes in opposition to this proposal\n uint againstVotes;\n /// @notice Flag marking whether the proposal has been canceled\n bool canceled;\n /// @notice Flag marking whether the proposal has been executed\n bool executed;\n /// @notice Receipts of ballots for the entire set of voters\n mapping(address => Receipt) receipts;\n }\n\n /// @notice Ballot receipt record for a voter\n struct Receipt {\n /// @notice Whether or not a vote has been cast\n bool hasVoted;\n /// @notice Whether or not the voter supports the proposal\n bool support;\n /// @notice The number of votes the voter had, which were cast\n uint96 votes;\n }\n\n /// @notice Possible states that a proposal may be in\n enum ProposalState {\n Pending,\n Active,\n Canceled,\n Defeated,\n Succeeded,\n Queued,\n Expired,\n Executed\n }\n\n /// @notice The official record of all proposals ever proposed\n mapping(uint => Proposal) public proposals;\n\n /// @notice The latest proposal for each proposer\n mapping(address => uint) public latestProposalIds;\n\n /// @notice The EIP-712 typehash for the contract's domain\n bytes32 public constant DOMAIN_TYPEHASH =\n keccak256(\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\");\n\n /// @notice The EIP-712 typehash for the ballot struct used by the contract\n bytes32 public constant BALLOT_TYPEHASH = keccak256(\"Ballot(uint256 proposalId,bool support)\");\n\n /// @notice An event emitted when a new proposal is created\n event ProposalCreated(\n uint id,\n address proposer,\n address[] targets,\n uint[] values,\n string[] signatures,\n bytes[] calldatas,\n uint startBlock,\n uint endBlock,\n string description\n );\n\n /// @notice An event emitted when a vote has been cast on a proposal\n event VoteCast(address voter, uint proposalId, bool support, uint votes);\n\n /// @notice An event emitted when a proposal has been canceled\n event ProposalCanceled(uint id);\n\n /// @notice An event emitted when a proposal has been queued in the Timelock\n event ProposalQueued(uint id, uint eta);\n\n /// @notice An event emitted when a proposal has been executed in the Timelock\n event ProposalExecuted(uint id);\n\n constructor(address timelock_, address xvs_, address guardian_, uint256 lastProposalId_) public {\n timelock = TimelockInterface(timelock_);\n xvs = XVSInterface(xvs_);\n guardian = guardian_;\n proposalCount = lastProposalId_;\n }\n\n function propose(\n address[] memory targets,\n uint[] memory values,\n string[] memory signatures,\n bytes[] memory calldatas,\n string memory description\n ) public returns (uint) {\n require(\n xvs.getPriorVotes(msg.sender, sub256(block.number, 1)) > proposalThreshold(),\n \"GovernorAlpha::propose: proposer votes below proposal threshold\"\n );\n require(\n targets.length == values.length &&\n targets.length == signatures.length &&\n targets.length == calldatas.length,\n \"GovernorAlpha::propose: proposal function information arity mismatch\"\n );\n require(targets.length != 0, \"GovernorAlpha::propose: must provide actions\");\n require(targets.length <= proposalMaxOperations(), \"GovernorAlpha::propose: too many actions\");\n\n uint latestProposalId = latestProposalIds[msg.sender];\n if (latestProposalId != 0) {\n ProposalState proposersLatestProposalState = state(latestProposalId);\n require(\n proposersLatestProposalState != ProposalState.Active,\n \"GovernorAlpha::propose: found an already active proposal\"\n );\n require(\n proposersLatestProposalState != ProposalState.Pending,\n \"GovernorAlpha::propose: found an already pending proposal\"\n );\n }\n\n uint startBlock = add256(block.number, votingDelay());\n uint endBlock = add256(startBlock, votingPeriod());\n\n proposalCount++;\n Proposal memory newProposal = Proposal({\n id: proposalCount,\n proposer: msg.sender,\n eta: 0,\n targets: targets,\n values: values,\n signatures: signatures,\n calldatas: calldatas,\n startBlock: startBlock,\n endBlock: endBlock,\n forVotes: 0,\n againstVotes: 0,\n canceled: false,\n executed: false\n });\n\n proposals[newProposal.id] = newProposal;\n latestProposalIds[newProposal.proposer] = newProposal.id;\n\n emit ProposalCreated(\n newProposal.id,\n msg.sender,\n targets,\n values,\n signatures,\n calldatas,\n startBlock,\n endBlock,\n description\n );\n return newProposal.id;\n }\n\n function queue(uint proposalId) public {\n require(\n state(proposalId) == ProposalState.Succeeded,\n \"GovernorAlpha::queue: proposal can only be queued if it is succeeded\"\n );\n Proposal storage proposal = proposals[proposalId];\n uint eta = add256(block.timestamp, timelock.delay());\n for (uint i = 0; i < proposal.targets.length; i++) {\n _queueOrRevert(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], eta);\n }\n proposal.eta = eta;\n emit ProposalQueued(proposalId, eta);\n }\n\n function _queueOrRevert(address target, uint value, string memory signature, bytes memory data, uint eta) internal {\n require(\n !timelock.queuedTransactions(keccak256(abi.encode(target, value, signature, data, eta))),\n \"GovernorAlpha::_queueOrRevert: proposal action already queued at eta\"\n );\n timelock.queueTransaction(target, value, signature, data, eta);\n }\n\n function execute(uint proposalId) public payable {\n require(\n state(proposalId) == ProposalState.Queued,\n \"GovernorAlpha::execute: proposal can only be executed if it is queued\"\n );\n Proposal storage proposal = proposals[proposalId];\n proposal.executed = true;\n for (uint i = 0; i < proposal.targets.length; i++) {\n timelock.executeTransaction.value(proposal.values[i])(\n proposal.targets[i],\n proposal.values[i],\n proposal.signatures[i],\n proposal.calldatas[i],\n proposal.eta\n );\n }\n emit ProposalExecuted(proposalId);\n }\n\n function cancel(uint proposalId) public {\n ProposalState state = state(proposalId);\n require(state != ProposalState.Executed, \"GovernorAlpha::cancel: cannot cancel executed proposal\");\n\n Proposal storage proposal = proposals[proposalId];\n require(\n msg.sender == guardian ||\n xvs.getPriorVotes(proposal.proposer, sub256(block.number, 1)) < proposalThreshold(),\n \"GovernorAlpha::cancel: proposer above threshold\"\n );\n\n proposal.canceled = true;\n for (uint i = 0; i < proposal.targets.length; i++) {\n timelock.cancelTransaction(\n proposal.targets[i],\n proposal.values[i],\n proposal.signatures[i],\n proposal.calldatas[i],\n proposal.eta\n );\n }\n\n emit ProposalCanceled(proposalId);\n }\n\n function getActions(\n uint proposalId\n )\n public\n view\n returns (address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas)\n {\n Proposal storage p = proposals[proposalId];\n return (p.targets, p.values, p.signatures, p.calldatas);\n }\n\n function getReceipt(uint proposalId, address voter) public view returns (Receipt memory) {\n return proposals[proposalId].receipts[voter];\n }\n\n function state(uint proposalId) public view returns (ProposalState) {\n require(proposalCount >= proposalId && proposalId > 0, \"GovernorAlpha::state: invalid proposal id\");\n Proposal storage proposal = proposals[proposalId];\n if (proposal.canceled) {\n return ProposalState.Canceled;\n } else if (block.number <= proposal.startBlock) {\n return ProposalState.Pending;\n } else if (block.number <= proposal.endBlock) {\n return ProposalState.Active;\n } else if (proposal.forVotes <= proposal.againstVotes || proposal.forVotes < quorumVotes()) {\n return ProposalState.Defeated;\n } else if (proposal.eta == 0) {\n return ProposalState.Succeeded;\n } else if (proposal.executed) {\n return ProposalState.Executed;\n } else if (block.timestamp >= add256(proposal.eta, timelock.GRACE_PERIOD())) {\n return ProposalState.Expired;\n } else {\n return ProposalState.Queued;\n }\n }\n\n function castVote(uint proposalId, bool support) public {\n return _castVote(msg.sender, proposalId, support);\n }\n\n function castVoteBySig(uint proposalId, bool support, uint8 v, bytes32 r, bytes32 s) public {\n bytes32 domainSeparator = keccak256(\n abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))\n );\n bytes32 structHash = keccak256(abi.encode(BALLOT_TYPEHASH, proposalId, support));\n bytes32 digest = keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator, structHash));\n address signatory = ecrecover(digest, v, r, s);\n require(signatory != address(0), \"GovernorAlpha::castVoteBySig: invalid signature\");\n return _castVote(signatory, proposalId, support);\n }\n\n function _castVote(address voter, uint proposalId, bool support) internal {\n require(state(proposalId) == ProposalState.Active, \"GovernorAlpha::_castVote: voting is closed\");\n Proposal storage proposal = proposals[proposalId];\n Receipt storage receipt = proposal.receipts[voter];\n require(receipt.hasVoted == false, \"GovernorAlpha::_castVote: voter already voted\");\n uint96 votes = xvs.getPriorVotes(voter, proposal.startBlock);\n\n if (support) {\n proposal.forVotes = add256(proposal.forVotes, votes);\n } else {\n proposal.againstVotes = add256(proposal.againstVotes, votes);\n }\n\n receipt.hasVoted = true;\n receipt.support = support;\n receipt.votes = votes;\n\n emit VoteCast(voter, proposalId, support, votes);\n }\n\n function __acceptAdmin() public {\n require(msg.sender == guardian, \"GovernorAlpha::__acceptAdmin: sender must be gov guardian\");\n timelock.acceptAdmin();\n }\n\n function __abdicate() public {\n require(msg.sender == guardian, \"GovernorAlpha::__abdicate: sender must be gov guardian\");\n guardian = address(0);\n }\n\n function __queueSetTimelockPendingAdmin(address newPendingAdmin, uint eta) public {\n require(msg.sender == guardian, \"GovernorAlpha::__queueSetTimelockPendingAdmin: sender must be gov guardian\");\n timelock.queueTransaction(address(timelock), 0, \"setPendingAdmin(address)\", abi.encode(newPendingAdmin), eta);\n }\n\n function __executeSetTimelockPendingAdmin(address newPendingAdmin, uint eta) public {\n require(msg.sender == guardian, \"GovernorAlpha::__executeSetTimelockPendingAdmin: sender must be gov guardian\");\n timelock.executeTransaction(address(timelock), 0, \"setPendingAdmin(address)\", abi.encode(newPendingAdmin), eta);\n }\n\n function add256(uint256 a, uint256 b) internal pure returns (uint) {\n uint c = a + b;\n require(c >= a, \"addition overflow\");\n return c;\n }\n\n function sub256(uint256 a, uint256 b) internal pure returns (uint) {\n require(b <= a, \"subtraction underflow\");\n return a - b;\n }\n\n function getChainId() internal pure returns (uint) {\n uint chainId;\n assembly {\n chainId := chainid()\n }\n return chainId;\n }\n}\n\ninterface TimelockInterface {\n function delay() external view returns (uint);\n\n function GRACE_PERIOD() external view returns (uint);\n\n function acceptAdmin() external;\n\n function queuedTransactions(bytes32 hash) external view returns (bool);\n\n function queueTransaction(\n address target,\n uint value,\n string calldata signature,\n bytes calldata data,\n uint eta\n ) external returns (bytes32);\n\n function cancelTransaction(\n address target,\n uint value,\n string calldata signature,\n bytes calldata data,\n uint eta\n ) external;\n\n function executeTransaction(\n address target,\n uint value,\n string calldata signature,\n bytes calldata data,\n uint eta\n ) external payable returns (bytes memory);\n}\n\ninterface XVSInterface {\n function getPriorVotes(address account, uint blockNumber) external view returns (uint96);\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"outputSelection":{"*":{"*":["storageLayout","abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"errors":[{"component":"general","formattedMessage":"contracts/legacy/GovernorAlpha2.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n","message":"Experimental features are turned on. Do not use experimental features on live deployments.","severity":"warning","sourceLocation":{"end":58,"file":"contracts/legacy/GovernorAlpha2.sol","start":25},"type":"Warning"}],"sources":{"contracts/legacy/GovernorAlpha2.sol":{"ast":{"absolutePath":"contracts/legacy/GovernorAlpha2.sol","exportedSymbols":{"GovernorAlpha2":[1184],"TimelockInterface":[1248],"XVSInterface":[1258]},"id":1259,"nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.5",".16"],"nodeType":"PragmaDirective","src":"0:24:0"},{"id":2,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"25:33:0"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":1184,"linearizedBaseContracts":[1184],"name":"GovernorAlpha2","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":5,"name":"name","nodeType":"VariableDeclaration","scope":1184,"src":"132:52:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string"},"typeName":{"id":3,"name":"string","nodeType":"ElementaryTypeName","src":"132:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"argumentTypes":null,"hexValue":"56656e757320476f7665726e6f7220416c706861","id":4,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"162:22:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_e7831129eb24a15f1f8f822483f1d64bd3e968215bb4c81d28d0d3ca9310a835","typeString":"literal_string \"Venus Governor Alpha\""},"value":"Venus Governor Alpha"},"visibility":"public"},{"body":{"id":12,"nodeType":"Block","src":"373:33:0","statements":[{"expression":{"argumentTypes":null,"hexValue":"363030303030653138","id":10,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"390:9:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_600000000000000000000000_by_1","typeString":"int_const 600000000000000000000000"},"value":"600000e18"},"functionReturnParameters":9,"id":11,"nodeType":"Return","src":"383:16:0"}]},"documentation":"@notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed","id":13,"implemented":true,"kind":"function","modifiers":[],"name":"quorumVotes","nodeType":"FunctionDefinition","parameters":{"id":6,"nodeType":"ParameterList","parameters":[],"src":"343:2:0"},"returnParameters":{"id":9,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8,"name":"","nodeType":"VariableDeclaration","scope":13,"src":"367:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7,"name":"uint","nodeType":"ElementaryTypeName","src":"367:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"366:6:0"},"scope":1184,"src":"323:83:0","stateMutability":"pure","superFunction":null,"visibility":"public"},{"body":{"id":20,"nodeType":"Block","src":"578:33:0","statements":[{"expression":{"argumentTypes":null,"hexValue":"333030303030653138","id":18,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"595:9:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_300000000000000000000000_by_1","typeString":"int_const 300000000000000000000000"},"value":"300000e18"},"functionReturnParameters":17,"id":19,"nodeType":"Return","src":"588:16:0"}]},"documentation":"@notice The number of votes required in order for a voter to become a proposer","id":21,"implemented":true,"kind":"function","modifiers":[],"name":"proposalThreshold","nodeType":"FunctionDefinition","parameters":{"id":14,"nodeType":"ParameterList","parameters":[],"src":"548:2:0"},"returnParameters":{"id":17,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16,"name":"","nodeType":"VariableDeclaration","scope":21,"src":"572:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15,"name":"uint","nodeType":"ElementaryTypeName","src":"572:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"571:6:0"},"scope":1184,"src":"522:89:0","stateMutability":"pure","superFunction":null,"visibility":"public"},{"body":{"id":28,"nodeType":"Block","src":"781:26:0","statements":[{"expression":{"argumentTypes":null,"hexValue":"3330","id":26,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"798:2:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_30_by_1","typeString":"int_const 30"},"value":"30"},"functionReturnParameters":25,"id":27,"nodeType":"Return","src":"791:9:0"}]},"documentation":"@notice The maximum number of actions that can be included in a proposal","id":29,"implemented":true,"kind":"function","modifiers":[],"name":"proposalMaxOperations","nodeType":"FunctionDefinition","parameters":{"id":22,"nodeType":"ParameterList","parameters":[],"src":"751:2:0"},"returnParameters":{"id":25,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"name":"","nodeType":"VariableDeclaration","scope":29,"src":"775:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23,"name":"uint","nodeType":"ElementaryTypeName","src":"775:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"774:6:0"},"scope":1184,"src":"721:86:0","stateMutability":"pure","superFunction":null,"visibility":"public"},{"body":{"id":36,"nodeType":"Block","src":"961:25:0","statements":[{"expression":{"argumentTypes":null,"hexValue":"31","id":34,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"978:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"functionReturnParameters":33,"id":35,"nodeType":"Return","src":"971:8:0"}]},"documentation":"@notice The delay before voting on a proposal may take place, once proposed","id":37,"implemented":true,"kind":"function","modifiers":[],"name":"votingDelay","nodeType":"FunctionDefinition","parameters":{"id":30,"nodeType":"ParameterList","parameters":[],"src":"931:2:0"},"returnParameters":{"id":33,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32,"name":"","nodeType":"VariableDeclaration","scope":37,"src":"955:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31,"name":"uint","nodeType":"ElementaryTypeName","src":"955:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"954:6:0"},"scope":1184,"src":"911:75:0","stateMutability":"pure","superFunction":null,"visibility":"public"},{"body":{"id":53,"nodeType":"Block","src":"1118:46:0","statements":[{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"id":51,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_259200_by_1","typeString":"int_const 259200"},"id":48,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"id":46,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_3600_by_1","typeString":"int_const 3600"},"id":44,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"3630","id":42,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1136:2:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_60_by_1","typeString":"int_const 60"},"value":"60"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"hexValue":"3630","id":43,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1141:2:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_60_by_1","typeString":"int_const 60"},"value":"60"},"src":"1136:7:0","typeDescriptions":{"typeIdentifier":"t_rational_3600_by_1","typeString":"int_const 3600"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"hexValue":"3234","id":45,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1146:2:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},"src":"1136:12:0","typeDescriptions":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"hexValue":"33","id":47,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1151:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1136:16:0","typeDescriptions":{"typeIdentifier":"t_rational_259200_by_1","typeString":"int_const 259200"}}],"id":49,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1135:18:0","typeDescriptions":{"typeIdentifier":"t_rational_259200_by_1","typeString":"int_const 259200"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"hexValue":"33","id":50,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1156:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1135:22:0","typeDescriptions":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}},"functionReturnParameters":41,"id":52,"nodeType":"Return","src":"1128:29:0"}]},"documentation":"@notice The duration of voting on a proposal, in blocks","id":54,"implemented":true,"kind":"function","modifiers":[],"name":"votingPeriod","nodeType":"FunctionDefinition","parameters":{"id":38,"nodeType":"ParameterList","parameters":[],"src":"1088:2:0"},"returnParameters":{"id":41,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40,"name":"","nodeType":"VariableDeclaration","scope":54,"src":"1112:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39,"name":"uint","nodeType":"ElementaryTypeName","src":"1112:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1111:6:0"},"scope":1184,"src":"1067:97:0","stateMutability":"pure","superFunction":null,"visibility":"public"},{"constant":false,"id":56,"name":"timelock","nodeType":"VariableDeclaration","scope":1184,"src":"1271:33:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$1248","typeString":"contract TimelockInterface"},"typeName":{"contractScope":null,"id":55,"name":"TimelockInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":1248,"src":"1271:17:0","typeDescriptions":{"typeIdentifier":"t_contract$_TimelockInterface_$1248","typeString":"contract TimelockInterface"}},"value":null,"visibility":"public"},{"constant":false,"id":58,"name":"xvs","nodeType":"VariableDeclaration","scope":1184,"src":"1369:23:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_XVSInterface_$1258","typeString":"contract XVSInterface"},"typeName":{"contractScope":null,"id":57,"name":"XVSInterface","nodeType":"UserDefinedTypeName","referencedDeclaration":1258,"src":"1369:12:0","typeDescriptions":{"typeIdentifier":"t_contract$_XVSInterface_$1258","typeString":"contract XVSInterface"}},"value":null,"visibility":"public"},{"constant":false,"id":60,"name":"guardian","nodeType":"VariableDeclaration","scope":1184,"src":"1452:23:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"id":62,"name":"proposalCount","nodeType":"VariableDeclaration","scope":1184,"src":"1528:25:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61,"name":"uint","nodeType":"ElementaryTypeName","src":"1528:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"canonicalName":"GovernorAlpha2.Proposal","id":97,"members":[{"constant":false,"id":64,"name":"id","nodeType":"VariableDeclaration","scope":97,"src":"1642:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":63,"name":"uint","nodeType":"ElementaryTypeName","src":"1642:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":66,"name":"proposer","nodeType":"VariableDeclaration","scope":97,"src":"1703:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":65,"name":"address","nodeType":"ElementaryTypeName","src":"1703:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":68,"name":"eta","nodeType":"VariableDeclaration","scope":97,"src":"1841:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67,"name":"uint","nodeType":"ElementaryTypeName","src":"1841:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":71,"name":"targets","nodeType":"VariableDeclaration","scope":97,"src":"1937:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":69,"name":"address","nodeType":"ElementaryTypeName","src":"1937:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":70,"length":null,"nodeType":"ArrayTypeName","src":"1937:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":74,"name":"values","nodeType":"VariableDeclaration","scope":97,"src":"2065:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":72,"name":"uint","nodeType":"ElementaryTypeName","src":"2065:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73,"length":null,"nodeType":"ArrayTypeName","src":"2065:6:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":77,"name":"signatures","nodeType":"VariableDeclaration","scope":97,"src":"2161:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":75,"name":"string","nodeType":"ElementaryTypeName","src":"2161:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":76,"length":null,"nodeType":"ArrayTypeName","src":"2161:8:0","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":80,"name":"calldatas","nodeType":"VariableDeclaration","scope":97,"src":"2265:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":78,"name":"bytes","nodeType":"ElementaryTypeName","src":"2265:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":79,"length":null,"nodeType":"ArrayTypeName","src":"2265:7:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":82,"name":"startBlock","nodeType":"VariableDeclaration","scope":97,"src":"2400:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81,"name":"uint","nodeType":"ElementaryTypeName","src":"2400:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":84,"name":"endBlock","nodeType":"VariableDeclaration","scope":97,"src":"2516:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83,"name":"uint","nodeType":"ElementaryTypeName","src":"2516:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":86,"name":"forVotes","nodeType":"VariableDeclaration","scope":97,"src":"2609:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85,"name":"uint","nodeType":"ElementaryTypeName","src":"2609:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":88,"name":"againstVotes","nodeType":"VariableDeclaration","scope":97,"src":"2707:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87,"name":"uint","nodeType":"ElementaryTypeName","src":"2707:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":90,"name":"canceled","nodeType":"VariableDeclaration","scope":97,"src":"2806:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":89,"name":"bool","nodeType":"ElementaryTypeName","src":"2806:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":92,"name":"executed","nodeType":"VariableDeclaration","scope":97,"src":"2901:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":91,"name":"bool","nodeType":"ElementaryTypeName","src":"2901:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":96,"name":"receipts","nodeType":"VariableDeclaration","scope":97,"src":"2993:36:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Receipt_$104_storage_$","typeString":"mapping(address => struct GovernorAlpha2.Receipt)"},"typeName":{"id":95,"keyType":{"id":93,"name":"address","nodeType":"ElementaryTypeName","src":"3001:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2993:27:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Receipt_$104_storage_$","typeString":"mapping(address => struct GovernorAlpha2.Receipt)"},"valueType":{"contractScope":null,"id":94,"name":"Receipt","nodeType":"UserDefinedTypeName","referencedDeclaration":104,"src":"3012:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_Receipt_$104_storage_ptr","typeString":"struct GovernorAlpha2.Receipt"}}},"value":null,"visibility":"internal"}],"name":"Proposal","nodeType":"StructDefinition","scope":1184,"src":"1560:1476:0","visibility":"public"},{"canonicalName":"GovernorAlpha2.Receipt","id":104,"members":[{"constant":false,"id":99,"name":"hasVoted","nodeType":"VariableDeclaration","scope":104,"src":"3173:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":98,"name":"bool","nodeType":"ElementaryTypeName","src":"3173:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":101,"name":"support","nodeType":"VariableDeclaration","scope":104,"src":"3263:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":100,"name":"bool","nodeType":"ElementaryTypeName","src":"3263:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":103,"name":"votes","nodeType":"VariableDeclaration","scope":104,"src":"3356:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":102,"name":"uint96","nodeType":"ElementaryTypeName","src":"3356:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"name":"Receipt","nodeType":"StructDefinition","scope":1184,"src":"3092:283:0","visibility":"public"},{"canonicalName":"GovernorAlpha2.ProposalState","id":113,"members":[{"id":105,"name":"Pending","nodeType":"EnumValue","src":"3468:7:0"},{"id":106,"name":"Active","nodeType":"EnumValue","src":"3485:6:0"},{"id":107,"name":"Canceled","nodeType":"EnumValue","src":"3501:8:0"},{"id":108,"name":"Defeated","nodeType":"EnumValue","src":"3519:8:0"},{"id":109,"name":"Succeeded","nodeType":"EnumValue","src":"3537:9:0"},{"id":110,"name":"Queued","nodeType":"EnumValue","src":"3556:6:0"},{"id":111,"name":"Expired","nodeType":"EnumValue","src":"3572:7:0"},{"id":112,"name":"Executed","nodeType":"EnumValue","src":"3589:8:0"}],"name":"ProposalState","nodeType":"EnumDefinition","src":"3439:164:0"},{"constant":false,"id":117,"name":"proposals","nodeType":"VariableDeclaration","scope":1184,"src":"3676:42:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$97_storage_$","typeString":"mapping(uint256 => struct GovernorAlpha2.Proposal)"},"typeName":{"id":116,"keyType":{"id":114,"name":"uint","nodeType":"ElementaryTypeName","src":"3684:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"3676:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Proposal_$97_storage_$","typeString":"mapping(uint256 => struct GovernorAlpha2.Proposal)"},"valueType":{"contractScope":null,"id":115,"name":"Proposal","nodeType":"UserDefinedTypeName","referencedDeclaration":97,"src":"3692:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_Proposal_$97_storage_ptr","typeString":"struct GovernorAlpha2.Proposal"}}},"value":null,"visibility":"public"},{"constant":false,"id":121,"name":"latestProposalIds","nodeType":"VariableDeclaration","scope":1184,"src":"3779:49:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":120,"keyType":{"id":118,"name":"address","nodeType":"ElementaryTypeName","src":"3787:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"3779:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":119,"name":"uint","nodeType":"ElementaryTypeName","src":"3798:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"constant":true,"id":126,"name":"DOMAIN_TYPEHASH","nodeType":"VariableDeclaration","scope":1184,"src":"3898:130:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":122,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3898:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3958:69:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866","typeString":"literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866","typeString":"literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""}],"id":123,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1267,"src":"3948:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3948:80:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"id":131,"name":"BALLOT_TYPEHASH","nodeType":"VariableDeclaration","scope":1184,"src":"4115:94:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":127,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4115:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c20737570706f727429","id":129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4167:41:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee","typeString":"literal_string \"Ballot(uint256 proposalId,bool support)\""},"value":"Ballot(uint256 proposalId,bool support)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee","typeString":"literal_string \"Ballot(uint256 proposalId,bool support)\""}],"id":128,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1267,"src":"4157:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4157:52:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"anonymous":false,"documentation":"@notice An event emitted when a new proposal is created","id":155,"name":"ProposalCreated","nodeType":"EventDefinition","parameters":{"id":154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":133,"indexed":false,"name":"id","nodeType":"VariableDeclaration","scope":155,"src":"4311:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint","nodeType":"ElementaryTypeName","src":"4311:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":135,"indexed":false,"name":"proposer","nodeType":"VariableDeclaration","scope":155,"src":"4328:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134,"name":"address","nodeType":"ElementaryTypeName","src":"4328:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":138,"indexed":false,"name":"targets","nodeType":"VariableDeclaration","scope":155,"src":"4354:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":136,"name":"address","nodeType":"ElementaryTypeName","src":"4354:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":137,"length":null,"nodeType":"ArrayTypeName","src":"4354:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":141,"indexed":false,"name":"values","nodeType":"VariableDeclaration","scope":155,"src":"4381:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":139,"name":"uint","nodeType":"ElementaryTypeName","src":"4381:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":140,"length":null,"nodeType":"ArrayTypeName","src":"4381:6:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":144,"indexed":false,"name":"signatures","nodeType":"VariableDeclaration","scope":155,"src":"4404:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":142,"name":"string","nodeType":"ElementaryTypeName","src":"4404:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":143,"length":null,"nodeType":"ArrayTypeName","src":"4404:8:0","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":147,"indexed":false,"name":"calldatas","nodeType":"VariableDeclaration","scope":155,"src":"4433:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":145,"name":"bytes","nodeType":"ElementaryTypeName","src":"4433:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":146,"length":null,"nodeType":"ArrayTypeName","src":"4433:7:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":149,"indexed":false,"name":"startBlock","nodeType":"VariableDeclaration","scope":155,"src":"4460:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":