@venusprotocol/governance-contracts
Version:
### Prerequisites
1,169 lines • 101 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "GovernorBravoDelegate",
"sourceName": "contracts/Governance/GovernorBravoDelegate.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "oldAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "NewAdmin",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "oldGuardian",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newGuardian",
"type": "address"
}
],
"name": "NewGuardian",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "oldImplementation",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newImplementation",
"type": "address"
}
],
"name": "NewImplementation",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "oldPendingAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newPendingAdmin",
"type": "address"
}
],
"name": "NewPendingAdmin",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "ProposalCanceled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "proposer",
"type": "address"
},
{
"indexed": false,
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"indexed": false,
"internalType": "string[]",
"name": "signatures",
"type": "string[]"
},
{
"indexed": false,
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"indexed": false,
"internalType": "uint256",
"name": "startBlock",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "endBlock",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "description",
"type": "string"
},
{
"indexed": false,
"internalType": "uint8",
"name": "proposalType",
"type": "uint8"
}
],
"name": "ProposalCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "ProposalExecuted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldMaxOperations",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newMaxOperations",
"type": "uint256"
}
],
"name": "ProposalMaxOperationsUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "eta",
"type": "uint256"
}
],
"name": "ProposalQueued",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldProposalThreshold",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newProposalThreshold",
"type": "uint256"
}
],
"name": "ProposalThresholdSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "votes",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
}
],
"name": "VoteCast",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldVotingDelay",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newVotingDelay",
"type": "uint256"
}
],
"name": "VotingDelaySet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldVotingPeriod",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newVotingPeriod",
"type": "uint256"
}
],
"name": "VotingPeriodSet",
"type": "event"
},
{
"constant": true,
"inputs": [],
"name": "BALLOT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "DOMAIN_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MAX_PROPOSAL_THRESHOLD",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MAX_VOTING_DELAY",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MAX_VOTING_PERIOD",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MIN_PROPOSAL_THRESHOLD",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MIN_VOTING_DELAY",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MIN_VOTING_PERIOD",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "_acceptAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "governorAlpha",
"type": "address"
}
],
"name": "_initiate",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "newGuardian",
"type": "address"
}
],
"name": "_setGuardian",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "newPendingAdmin",
"type": "address"
}
],
"name": "_setPendingAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalMaxOperations_",
"type": "uint256"
}
],
"name": "_setProposalMaxOperations",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "admin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "cancel",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
}
],
"name": "castVote",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteBySig",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
}
],
"name": "castVoteWithReason",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "execute",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "getActions",
"outputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "string[]",
"name": "signatures",
"type": "string[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "address",
"name": "voter",
"type": "address"
}
],
"name": "getReceipt",
"outputs": [
{
"components": [
{
"internalType": "bool",
"name": "hasVoted",
"type": "bool"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "uint96",
"name": "votes",
"type": "uint96"
}
],
"internalType": "struct GovernorBravoDelegateStorageV1.Receipt",
"name": "",
"type": "tuple"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "guardian",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "implementation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "initialProposalId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "xvsVault_",
"type": "address"
},
{
"components": [
{
"internalType": "uint256",
"name": "votingDelay",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "votingPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "proposalThreshold",
"type": "uint256"
}
],
"internalType": "struct GovernorBravoDelegateStorageV2.ProposalConfig[]",
"name": "proposalConfigs_",
"type": "tuple[]"
},
{
"internalType": "contract TimelockInterface[]",
"name": "timelocks",
"type": "address[]"
},
{
"internalType": "address",
"name": "guardian_",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "latestProposalIds",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "pendingAdmin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proposalConfigs",
"outputs": [
{
"internalType": "uint256",
"name": "votingDelay",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "votingPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "proposalThreshold",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "proposalCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "proposalMaxOperations",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "proposalThreshold",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proposalTimelocks",
"outputs": [
{
"internalType": "contract TimelockInterface",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proposals",
"outputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "address",
"name": "proposer",
"type": "address"
},
{
"internalType": "uint256",
"name": "eta",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "startBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "endBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "forVotes",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "againstVotes",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "abstainVotes",
"type": "uint256"
},
{
"internalType": "bool",
"name": "canceled",
"type": "bool"
},
{
"internalType": "bool",
"name": "executed",
"type": "bool"
},
{
"internalType": "uint8",
"name": "proposalType",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "string[]",
"name": "signatures",
"type": "string[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "string",
"name": "description",
"type": "string"
},
{
"internalType": "enum GovernorBravoDelegateStorageV2.ProposalType",
"name": "proposalType",
"type": "uint8"
}
],
"name": "propose",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "queue",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "quorumVotes",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "state",
"outputs": [
{
"internalType": "enum GovernorBravoDelegateStorageV1.ProposalState",
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "timelock",
"outputs": [
{
"internalType": "contract TimelockInterface",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "votingDelay",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "votingPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "xvsVault",
"outputs": [
{
"internalType": "contract XvsVaultInterface",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b50614972806100206000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c8063791f5d2311610146578063ddf0b009116100c3578063e9c714f211610087578063e9c714f2146104c2578063ee9799ee146104ca578063f851a440146104dd578063f9d28b80146104e5578063fc4eee42146104f8578063fe0d94c1146105005761025e565b8063ddf0b0091461046c578063deaaa7cc1461047f578063e23a9a5214610487578063e38e8c0f146104a7578063e48083fe146104ba5761025e565b8063b11262631161010a578063b112626314610439578063b58131b014610441578063b71d1a0c14610449578063d33219b41461045c578063da35c664146104645761025e565b8063791f5d23146103fb5780637b3c71d3146104035780637bdbe4d0146104165780639e6f26261461041e578063a64e024a146104315761025e565b806325fd935a116101df5780633bccf4fd116101a35780633bccf4fd146103925780633e4f49e6146103a557806340e58ee5146103c5578063452a9320146103d857806356781388146103e05780635c60da1b146103f35761025e565b806325fd935a146103285780632678224714610330578063328dd9821461034557806335a87de2146103685780633932abb11461038a5761025e565b80631b9ce575116102265780631b9ce575146102e65780631ebcfefd146102fb57806320606b7014610310578063215809ca1461031857806324bc1a64146103205761025e565b8063013cf08b1461026357806302a251a31461029657806306fdde03146102ab578063164a1ab1146102c057806317977c61146102d3575b600080fd5b610276610271366004612e15565b610513565b60405161028d9b9a9998979695949392919061462c565b60405180910390f35b61029e61057f565b60405161028d9190614220565b6102b3610585565b60405161028d91906142e5565b61029e6102ce366004612cac565b6105b5565b61029e6102e1366004612bf7565b610a73565b6102ee610a85565b60405161028d91906142c9565b61030e610309366004612e15565b610a94565b005b61029e610b04565b61029e610b1b565b61029e610b21565b61029e610b2f565b610338610b3d565b60405161028d91906140f0565b610358610353366004612e15565b610b4c565b60405161028d94939291906141d3565b61037b610376366004612e15565b610ddb565b60405161028d939291906146de565b61029e610dfc565b61030e6103a0366004612f04565b610e02565b6103b86103b3366004612e15565b610fda565b60405161028d91906142d7565b61030e6103d3366004612e15565b611174565b61033861140a565b61030e6103ee366004612e6d565b611419565b610338611463565b61029e611472565b61030e610411366004612e9d565b611480565b61029e6114d0565b61030e61042c366004612c1d565b6114d6565b61029e611860565b61029e611867565b61029e61186e565b61030e610457366004612bf7565b611874565b6102ee6118f1565b61029e611900565b61030e61047a366004612e15565b611906565b61029e611b9a565b61049a610495366004612e33565b611ba6565b60405161028d9190614566565b61030e6104b5366004612bf7565b611c13565b61029e611ccb565b61030e611cd0565b6102ee6104d8366004612e15565b611dae565b610338611dc9565b61030e6104f3366004612bf7565b611dd8565b61029e611f1c565b61030e61050e366004612e15565b611f22565b600a60208190526000918252604090912080546001820154600283015460078401546008850154600986015496860154600b870154600c880154600e9098015496986001600160a01b039096169794969395929492939192909160ff808316926101009004811691168b565b60045481565b6040518060400160405280601481526020017356656e757320476f7665726e6f7220427261766f60601b81525081565b6000600654600014156105e35760405162461bcd60e51b81526004016105da90614336565b60405180910390fd5b600e60008360028111156105f357fe5b60ff1681526020810191909152604001600020600201546009546001600160a01b031663782d6fe1336106274360016120d5565b6040518363ffffffff1660e01b81526004016106449291906140fe565b60206040518083038186803b15801561065c57600080fd5b505afa158015610670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106949190810190612f79565b6001600160601b031610156106bb5760405162461bcd60e51b81526004016105da906144d6565b855187511480156106cd575084518751145b80156106da575083518751145b6106f65760405162461bcd60e51b81526004016105da906143b6565b86516107145760405162461bcd60e51b81526004016105da90614416565b600c54875111156107375760405162461bcd60e51b81526004016105da90614466565b336000908152600b602052604090205480156107b457600061075882610fda565b9050600181600781111561076857fe5b14156107865760405162461bcd60e51b81526004016105da906144b6565b600081600781111561079457fe5b14156107b25760405162461bcd60e51b81526004016105da90614476565b505b60006107e443600e60008760028111156107ca57fe5b60ff168152602001908152602001600020600001546120fd565b9050600061081682600e60008860028111156107fc57fe5b60ff168152602001908152602001600020600101546120fd565b60078054600101905590506108296124a0565b604051806101e001604052806007548152602001336001600160a01b03168152602001600081526020018c81526020018b81526020018a81526020018981526020018481526020018381526020016000815260200160008152602001600081526020016000151581526020016000151581526020018760028111156108aa57fe5b60ff16905280516000908152600a602090815260409182902083518155818401516001820180546001600160a01b0319166001600160a01b039092169190911790559183015160028301556060830151805193945084936109119260038501920190612526565b506080820151805161092d91600484019160209091019061258b565b5060a082015180516109499160058401916020909101906125d2565b5060c0820151805161096591600684019160209091019061262b565b5060e082015160078201556101008083015160088301556101208301516009830155610140830151600a830155610160830151600b80840191909155610180840151600c840180546101a087015160ff199182169315159390931761ff0019169215159094029190911790556101c090930151600e909201805490911660ff90921691909117905581516020808401516001600160a01b0316600090815292905260409091205580517fc8df7ff219f3c0358e14500814d8b62b443a4bebf3a596baa60b9295b1cf1bde90338d8d8d8d89898f8f6002811115610a4457fe5b604051610a5a9a99989796959493929190614574565b60405180910390a15193505050505b9695505050505050565b600b6020526000908152604090205481565b6009546001600160a01b031681565b6000546001600160a01b03163314610abe5760405162461bcd60e51b81526004016105da90614486565b600c8054908290556040517fd03b3c3c5c1446bcdd31423061041c94ca3bc5450fe7ccfb0f636f4c420de87e90610af890839085906146d0565b60405180910390a15050565b604051610b10906140e5565b604051809103902081565b610e1081565b697f0e10af47c1c700000081565b693f870857a3e0e380000081565b6001546001600160a01b031681565b6060806060806000600a600087815260200190815260200160002090508060030181600401826005018360060183805480602002602001604051908101604052809291908181526020018280548015610bce57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bb0575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610c2057602002820191906000526020600020905b815481526020019060010190808311610c0c575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b82821015610cf35760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610cdf5780601f10610cb457610100808354040283529160200191610cdf565b820191906000526020600020905b815481529060010190602001808311610cc257829003601f168201915b505050505081526020019060010190610c48565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610dc55760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610db15780601f10610d8657610100808354040283529160200191610db1565b820191906000526020600020905b815481529060010190602001808311610d9457829003601f168201915b505050505081526020019060010190610d1a565b5050505090509450945094509450509193509193565b600e6020526000908152604090208054600182015460029092015490919083565b60035481565b6000604051610e10906140e5565b60408051918290038220828201909152601482527356656e757320476f7665726e6f7220427261766f60601b6020909201919091527f157d76627a3b71c0167806f5879f7a61d3e301322f3a3b9f900315f15937671a610e6e612129565b30604051602001610e82949392919061422e565b6040516020818303038152906040528051906020012090506000604051610ea8906140a9565b604051908190038120610ec1918990899060200161426c565b60405160208183030381529060405280519060200120905060008282604051602001610eee9291906140b4565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610f2b9493929190614294565b6020604051602081039080840390855afa158015610f4d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610f805760405162461bcd60e51b81526004016105da906143a6565b806001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48a8a610fb8858e8e61212e565b604051610fc79392919061474c565b60405180910390a2505050505050505050565b60008160075410158015610fef575060065482115b61100b5760405162461bcd60e51b81526004016105da906144f6565b6000828152600a60205260409020600c81015460ff161561103057600291505061116f565b8060070154431161104557600091505061116f565b8060080154431161105a57600191505061116f565b80600a0154816009015411158061107e5750697f0e10af47c1c70000008160090154105b1561108d57600391505061116f565b60028101546110a057600491505061116f565b600c810154610100900460ff16156110bc57600791505061116f565b6002810154600e82015460ff166000908152600f60209081526040918290205482516360d143f160e11b8152925161115994936001600160a01b039092169263c1a287e29260048082019391829003018186803b15801561111c57600080fd5b505afa158015611130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111549190810190612dc3565b6120fd565b421061116957600691505061116f565b60059150505b919050565b600761117f82610fda565b600781111561118a57fe5b14156111a85760405162461bcd60e51b81526004016105da906144e6565b6000818152600a60205260409020600d546001600160a01b03163314806111db575060018101546001600160a01b031633145b8061129e5750600e8181015460ff16600090815260209190915260409020600201546009546001808401546001600160a01b039283169263782d6fe1929116906112269043906120d5565b6040518363ffffffff1660e01b8152600401611243929190614134565b60206040518083038186803b15801561125b57600080fd5b505afa15801561126f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112939190810190612f79565b6001600160601b0316105b6112ba5760405162461bcd60e51b81526004016105da90614446565b600c8101805460ff1916600117905560005b60038201548110156113da57600e82015460ff166000908152600f60205260409020546003830180546001600160a01b039092169163591fcdfe91908490811061131257fe5b6000918252602090912001546004850180546001600160a01b03909216918590811061133a57fe5b906000526020600020015485600501858154811061135457fe5b9060005260206000200186600601868154811061136d57fe5b9060005260206000200187600201546040518663ffffffff1660e01b815260040161139c959493929190614192565b600060405180830381600087803b1580156113b657600080fd5b505af11580156113ca573d6000803e3d6000fd5b5050600190920191506112cc9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c82604051610af89190614220565b600d546001600160a01b031681565b337fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4838361144884838361212e565b6040516114579392919061474c565b60405180910390a25050565b6002546001600160a01b031681565b691fc3842bd1f071c0000081565b337fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda485856114af84838361212e565b86866040516114c2959493929190614706565b60405180910390a250505050565b600c5481565b60008052600f6020527ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec375546001600160a01b0316156115275760405162461bcd60e51b81526004016105da906143d6565b6000546001600160a01b031633146115515760405162461bcd60e51b81526004016105da906143c6565b6001600160a01b0384166115775760405162461bcd60e51b81526004016105da90614386565b6001600160a01b03811661159d5760405162461bcd60e51b81526004016105da90614456565b81516003146115be5760405162461bcd60e51b81526004016105da90614326565b82516003146115df5760405162461bcd60e51b81526004016105da90614506565b600980546001600160a01b038087166001600160a01b031992831617909255600a600c55600d805492841692909116919091179055825160005b8181101561185857610e1085828151811061163057fe5b602002602001015160200151101561165a5760405162461bcd60e51b81526004016105da90614376565b6206270085828151811061166a57fe5b60200260200101516020015111156116945760405162461bcd60e51b81526004016105da90614546565b60018582815181106116a257fe5b60200260200101516000015110156116cc5760405162461bcd60e51b81526004016105da90614436565b620313808582815181106116dc57fe5b60200260200101516000015111156117065760405162461bcd60e51b81526004016105da906144a6565b691fc3842bd1f071c0000085828151811061171d57fe5b60200260200101516040015110156117475760405162461bcd60e51b81526004016105da90614346565b693f870857a3e0e380000085828151811061175e57fe5b60200260200101516040015111156117885760405162461bcd60e51b81526004016105da90614556565b60006001600160a01b031684828151811061179f57fe5b60200260200101516001600160a01b031614156117ce5760405162461bcd60e51b81526004016105da90614496565b8481815181106117da57fe5b6020908102919091018101516000838152600e8352604090819020825181559282015160018401550151600290910155835184908290811061181857fe5b6020908102919091018101516000838152600f909252604090912080546001600160a01b0319166001600160a01b03909216919091179055600101611619565b505050505050565b6206270081565b6203138081565b60055481565b6000546001600160a01b0316331461189e5760405162461bcd60e51b81526004016105da90614306565b600180546001600160a01b038381166001600160a01b03198316179092556040519116907fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a990610af89083908590614119565b6008546001600160a01b031681565b60075481565b600461191182610fda565b600781111561191c57fe5b146119395760405162461bcd60e51b81526004016105da906143e6565b6000818152600a60209081526040808320600e81015460ff168452600f8352818420548251630d48571f60e31b815292519194936119a29342936001600160a01b0390931692636a42b8f892600480840193919291829003018186803b15801561111c57600080fd5b905060005b6003830154811015611b5357611b4b8360030182815481106119c557fe5b6000918252602090912001546004850180546001600160a01b0390921691849081106119ed57fe5b9060005260206000200154856005018481548110611a0757fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611a955780601f10611a6a57610100808354040283529160200191611a95565b820191906000526020600020905b815481529060010190602001808311611a7857829003601f168201915b5050505050866006018581548110611aa957fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611b375780601f10611b0c57610100808354040283529160200191611b37565b820191906000526020600020905b815481529060010190602001808311611b1a57829003601f168201915b50505050600e89015488915060ff1661231e565b6001016119a7565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290611b8d90859084906146d0565b60405180910390a1505050565b604051610b10906140a9565b611bae612684565b506000828152600a602090815260408083206001600160a01b0385168452600d018252918290208251606081018452905460ff8082161515835261010082041692820192909252620100009091046001600160601b0316918101919091525b92915050565b600d546001600160a01b0316331480611c3657506000546001600160a01b031633145b611c525760405162461bcd60e51b81526004016105da90614526565b6001600160a01b038116611c785760405162461bcd60e51b81526004016105da90614516565b600d80546001600160a01b038381166001600160a01b03198316179092556040519116907f08fdaf06427a2010e5958f4329b566993472d14ce81d3f16ce7f2a2660da98e390610af89083908590614119565b600181565b6001546001600160a01b031633148015611ce957503315155b611d055760405162461bcd60e51b81526004016105da90614426565b60008054600180546001600160a01b038082166001600160a01b03198086168217968790559092169092556040519282169390927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92611d69928692911690614119565b60405180910390a16001546040517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991610af89184916001600160a01b031690614119565b600f602052600090815260409020546001600160a01b031681565b6000546001600160a01b031681565b6000546001600160a01b03163314611e025760405162461bcd60e51b81526004016105da906144c6565b60065415611e225760405162461bcd60e51b81526004016105da90614406565b806001600160a01b031663da35c6646040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611e5d57600080fd5b505af1158015611e71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e959190810190612dc3565b600781905560065560005b6003811015611f18576000818152600f6020526040808220548151630e18b68160e01b815291516001600160a01b0390911692630e18b681926004808201939182900301818387803b158015611ef557600080fd5b505af1158015611f09573d6000803e3d6000fd5b50505050806001019050611ea0565b5050565b60065481565b6005611f2d82610fda565b6007811115611f3857fe5b14611f555760405162461bcd60e51b81526004016105da90614396565b6000818152600a60205260408120600c8101805461ff001916610100179055905b60038201548110156120a557600e82015460ff166000908152600f60205260409020546003830180546001600160a01b0390921691630825f38f919084908110611fbc57fe5b6000918252602090912001546004850180546001600160a01b039092169185908110611fe457fe5b9060005260206000200154856005018581548110611ffe57fe5b9060005260206000200186600601868154811061201757fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401612046959493929190614192565b600060405180830381600087803b15801561206057600080fd5b505af1158015612074573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261209c9190810190612de1565b50600101611f76565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051610af89190614220565b6000828211156120f75760405162461bcd60e51b81526004016105da90614536565b50900390565b6000828201838110156121225760405162461bcd60e51b81526004016105da906143f6565b9392505050565b465b90565b6000600161213b84610fda565b600781111561214657fe5b146121635760405162461bcd60e51b81526004016105da90614356565b60028260ff1611156121875760405162461bcd60e51b81526004016105da906142f6565b6000838152600a602090815260408083206001600160a01b0388168452600d8101909252909120805460ff16156121d05760405162461bcd60e51b81526004016105da90614366565b600954600783015460405163782d6fe160e01b81526000926001600160a01b03169163782d6fe191612206918b91600401614134565b60206040518083038186803b15801561221e57600080fd5b505afa158015612232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122569190810190612f79565b905060ff85166122815761227783600a0154826001600160601b03166120fd565b600a8401556122d7565b8460ff16600114156122ae576122a48360090154826001600160601b03166120fd565b60098401556122d7565b8460ff16600214156122d7576122d183600b0154826001600160601b03166120fd565b600b8401555b8154600160ff199091161761ff00191661010060ff871602176dffffffffffffffffffffffff00001916620100006001600160601b03831602179091559150509392505050565b60ff81166000908152600f60209081526040918290205491516001600160a01b039092169163f2b065379161235d918a918a918a918a918a9101614142565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161238f9190614220565b60206040518083038186803b1580156123a757600080fd5b505afa1580156123bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123df9190810190612da5565b156123fc5760405162461bcd60e51b81526004016105da90614316565b60ff81166000908152600f602052604090819020549051633a66f90160e01b81526001600160a01b0390911690633a66f901906124459089908990899089908990600401614142565b602060405180830381600087803b15801561245f57600080fd5b505af1158015612473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124979190810190612dc3565b50505050505050565b604051806101e001604052806000815260200160006001600160a01b0316815260200160008152602001606081526020016060815260200160608152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600015158152602001600060ff1681525090565b82805482825590600052602060002090810192821561257b579160200282015b8281111561257b57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612546565b506125879291506126a4565b5090565b8280548282559060005260206000209081019282156125c6579160200282015b828111156125c65782518255916020019190600101906125ab565b506125879291506126c8565b82805482825590600052602060002090810192821561261f579160200282015b8281111561261f578251805161260f9184916020909101906126e2565b50916020019190600101906125f2565b5061258792915061274f565b828054828255906000526020600020908101928215612678579160200282015b8281111561267857825180516126689184916020909101906126e2565b509160200191906001019061264b565b50612587929150612772565b604080516060810182526000808252602082018190529181019190915290565b61212b91905b808211156125875780546001600160a01b03191681556001016126aa565b61212b91905b8082111561258757600081556001016126ce565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061272357805160ff19168380011785556125c6565b828001600101855582156125c657918201828111156125c65782518255916020019190600101906125ab565b61212b91905b808211156125875760006127698282612795565b50600101612755565b61212b91905b8082111561258757600061278c8282612795565b50600101612778565b50805460018160011615610100020316600290046000825580601f106127bb57506127d9565b601f0160209004906000526020600020908101906127d991906126c8565b50565b8035611c0d816148c1565b600082601f8301126127f857600080fd5b813561280b612806826147ab565b614785565b9150818183526020840193506020810190508385602084028201111561283057600080fd5b60005b8381101561285c578161284688826127dc565b8452506020928301929190910190600101612833565b5050505092915050565b600082601f83011261287757600080fd5b8135612885612806826147ab565b81815260209384019390925082018360005b8381101561285c57813586016128ad8882612a93565b8452506020928301929190910190600101612897565b600082601f8301126128d457600080fd5b81356128e2612806826147ab565b9150818183526020840193506020810190508385602084028201111561290757600080fd5b60005b8381101561285c578161291d8882612b28565b845250602092830192919091019060010161290a565b600082601f83011261294457600080fd5b8135612952612806826147ab565b81815260209384019390925082018360005b8381101561285c578135860161297a8882612a93565b8452506020928301929190910190600101612964565b600082601f8301126129a157600080fd5b81356129af612806826147ab565b915081818352602084019350602081019050838560608402820111156129d457600080fd5b60005b8381101561285c57816129ea8882612b86565b845250602090920191606091909101906001016129d7565b600082601f830112612a1357600080fd5b8135612a21612806826147ab565b91508181835260208401935060208101905083856020840282011115612a4657600080fd5b60005b8381101561285c5781612a5c8882612a7d565b8452506020928301929190910190600101612a49565b8051611c0d816148d5565b8035611c0d816148de565b8051611c0d816148de565b600082601f830112612aa457600080fd5b8135612ab2612806826147cb565b91508082526020830160208301858383011115612ace57600080fd5b612ad9838284614875565b50505092915050565b600082601f830112612af357600080fd5b8151612b01612806826147cb565b91508082526020830160208301858383011115612b1d57600080fd5b612ad9838284614881565b8035611c0d816148e7565b8035611c0d816148f0565b60008083601f840112612b5057600080fd5b5081356001600160401b03811115612b6757600080fd5b602083019150836001820283011115612b7f57600080fd5b9250929050565b600060608284031215612b9857600080fd5b612ba26060614785565b90506000612bb08484612a7d565b8252506020612bc184848301612a7d565b6020830152506040612bd584828501612a7d565b60408301525092915050565b8035611c0d816148fd565b8051611c0d81614906565b600060208284031215612c0957600080fd5b6000612c1584846127dc565b949350505050565b60008060008060808587031215612c3357600080fd5b6000612c3f87876127dc565b94505060208501356001600160401b03811115612c5b57600080fd5b612c6787828801612990565b93505060408501356001600160401b03811115612c8357600080fd5b612c8f878288016128c3565b9250506060612ca0878288016127dc565b91505092959194509250565b60008060008060008060c08789031215612cc557600080fd5b86356001600160401b03811115612cdb57600080fd5b612ce789828a016127e7565b96505060208701356001600160401b03811115612d0357600080fd5b612d0f89828a01612a02565b95505060408701356001600160401b03811115612d2b57600080fd5b612d3789828a01612933565b94505060608701356001600160401b03811115612d5357600080fd5b612d5f89828a01612866565b93505060808701356001600160401b03811115612d7b57600080fd5b612d8789828a01612a93565b92505060a0612d9889828a01612b33565b9150509295509295509295565b600060208284031215612db757600080fd5b6000612c158484612a72565b600060208284031215612dd557600080fd5b6000612c158484612a88565b600060208284031215612df357600080fd5b81516001600160401b03811115612e0957600080fd5b612c1584828501612ae2565b600060208284031215612e2757600080fd5b6000612c158484612a7d565b60008060408385031215612e4657600080fd5b6000612e528585612a7d565b9250506020612e63858286016127dc565b9150509250929050565b60008060408385031215612e8057600080fd5b6000612e8c8585612a7d565b9250506020612e6385828601612be1565b60008060008060608587031215612eb357600080fd5b6000612ebf8787612a7d565b9450506020612ed087828801612be1565b93505060408501356001600160401b03811115612eec57600080fd5b612ef887828801612b3e565b95989497509550505050565b600080600080600060a08688031215612f1c57600080fd5b6000612f288888612a7d565b9550506020612f3988828901612be1565b9450506040612f4a88828901612be1565b9350506060612f5b88828901612a7d565b9250506080612f6c88828901612a7d565b9150509295509295909350565b600060208284031215612f8b57600080fd5b6000612c158484612bec565b6000612fa38383612fd2565b505060200190565b60006121228383613174565b6000612fa3838361315a565b612fcc81614854565b82525050565b6