UNPKG

@vechain/vebetterdao-contracts

Version:

Open-source repository that houses the smart contracts powering the decentralized VeBetterDAO on the VeChain Thor blockchain.

527 lines 76.6 kB
{ "_format": "hh-sol-artifact-1", "contractName": "GovernorProposalLogicV10", "sourceName": "contracts/deprecated/V10/governance/libraries/GovernorProposalLogicV10.sol", "abi": [ { "inputs": [], "name": "CheckpointUnorderedInsertion", "type": "error" }, { "inputs": [ { "internalType": "bytes", "name": "selector", "type": "bytes" } ], "name": "GovernorFunctionInvalidSelector", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "targets", "type": "uint256" }, { "internalType": "uint256", "name": "calldatas", "type": "uint256" }, { "internalType": "uint256", "name": "values", "type": "uint256" } ], "name": "GovernorInvalidProposalLength", "type": "error" }, { "inputs": [ { "internalType": "enum GovernorTypesV10.ProposalType", "name": "proposalType", "type": "uint8" } ], "name": "GovernorInvalidProposalType", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "proposer", "type": "address" }, { "internalType": "uint256", "name": "requiredWeight", "type": "uint256" } ], "name": "GovernorInvalidProposer", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "GovernorInvalidStartRound", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "GovernorNonexistentProposal", "type": "error" }, { "inputs": [], "name": "GovernorQueueNotImplemented", "type": "error" }, { "inputs": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" } ], "name": "GovernorRestrictedFunction", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "internalType": "enum GovernorTypesV10.ProposalType", "name": "proposalType", "type": "uint8" } ], "name": "GovernorRestrictedProposal", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "proposer", "type": "address" } ], "name": "GovernorRestrictedProposer", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "internalType": "enum GovernorTypesV10.ProposalState", "name": "current", "type": "uint8" }, { "internalType": "bytes32", "name": "expectedStates", "type": "bytes32" } ], "name": "GovernorUnexpectedProposalState", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "internalType": "enum GovernorTypesV10.ProposalState", "name": "current", "type": "uint8" }, { "internalType": "bytes32", "name": "expectedStates", "type": "bytes32" } ], "name": "GovernorUnexpectedProposalState", "type": "error" }, { "inputs": [], "name": "QueueFull", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "UnauthorizedAccess", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "ProposalCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "canceler", "type": "address" }, { "indexed": false, "internalType": "string", "name": "reason", "type": "string" } ], "name": "ProposalCanceledWithReason", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "ProposalCompleted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "indexed": true, "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": "string", "name": "description", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "roundIdVoteStart", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "depositThreshold", "type": "uint256" } ], "name": "ProposalCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "indexed": false, "internalType": "enum GovernorTypesV10.ProposalType", "name": "proposalType", "type": "uint8" } ], "name": "ProposalCreatedWithType", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "depositor", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ProposalDeposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "ProposalDevelopmentStateReset", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "ProposalExecuted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "ProposalInDevelopment", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "etaSeconds", "type": "uint256" } ], "name": "ProposalQueued", "type": "event" }, { "inputs": [], "name": "canProposalStartInNextRound", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getActiveProposals", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "proposalDeadline", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "proposalNeedsQueuing", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "proposalSnapshot", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "proposalType", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x613e7d61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100c45760003560e01c8063013b1088146100c957806301957cc7146100fc5780631e6b49921461011c5780632a09c7721461013e5780632d63f693146101635780635584c4f91461017657806358c839bc1461018b57806381ab2353146101ab578063a9a95294146101c3578063badecd76146101d6578063c01f9e37146101f6578063c0a6026c14610209578063c429bd8214610229578063fcadd1f714610249575b600080fd5b8180156100d557600080fd5b506100e96100e436600461345a565b610269565b6040519081526020015b60405180910390f35b81801561010857600080fd5b506100e961011736600461354f565b61033c565b81801561012857600080fd5b5061013c6101373660046135ef565b610428565b005b61015161014c3660046135ef565b61055e565b60405160ff90911681526020016100f3565b6100e96101713660046135ef565b610598565b61017e6105a9565b6040516100f39190613608565b81801561019757600080fd5b506100e96101a636600461364c565b6107b6565b6101b3610803565b60405190151581526020016100f3565b6101b36101d13660046135ef565b610812565b8180156101e257600080fd5b506100e96101f1366004613726565b61086e565b6100e96102043660046135ef565b610a5f565b81801561021557600080fd5b5061013c6102243660046135ef565b610a6a565b81801561023557600080fd5b5061013c6102443660046135ef565b610b25565b81801561025557600080fd5b506100e961026436600461354f565b610b9a565b600080610274610d33565b9050600061028b8b8b8b8b80519060200120610d57565b905061029e33888a8e8e8e876001610d91565b81601a0160009054906101000a90046001600160a01b03166001600160a01b031663808860a5858333898e6040518663ffffffff1660e01b81526004016102e9959493929190613895565b600060405180830381600087803b15801561030357600080fd5b505af1158015610317573d6000803e3d6000fd5b5050505061032d33828d8d8d8d8d8d6001610ff2565b9b9a5050505050505050505050565b600080610347610d33565b9050600061035787878787610d57565b905061036c8161036760046110e4565b611107565b50600061037d89838a8a8a8a611146565b905065ffffffffffff811615610403576000828152600184016020908152604091829020600201805465ffffffffffff60381b1916600160381b65ffffffffffff8616908102919091179091558251858152918201527f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892910160405180910390a161041c565b604051634844252360e11b815260040160405180910390fd5b50979650505050505050565b6000610432610d33565b600083815260158201602090815260408083205460018501909252822092935060ff169190826001811115610469576104696138e4565b146104945783826040516344b7587b60e01b815260040161048b92919061390e565b60405180910390fd5b6104b2846104a260046110e4565b6104ac60066110e4565b17611107565b506002810154600160201b900460ff1680156104e7575060046104d4856112fc565b60098111156104e5576104e56138e4565b145b156105095783826040516344b7587b60e01b815260040161048b92919061390e565b6000848152601e84016020908152604091829020805460ff1916600117905590518581527fae96d9c307786efa9d87d53b27b247aa9ef9c3640c4d5065fddc861c71684ab0910160405180910390a150505050565b600080610569610d33565b600084815260158201602052604090205490915060ff166001811115610591576105916138e4565b9392505050565b60006105a3826116a3565b92915050565b606060006105b5610d33565b9050600081600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561060e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106329190613922565b6000818152602184016020526040812080549293509190816001600160401b03811115610661576106616131fd565b60405190808252806020026020018201604052801561068a578160200160208202803683370190505b5090506000805b8381101561071b5760008582815481106106ad576106ad61393b565b600091825260209091200154905060016106c6826112fc565b60098111156106d7576106d76138e4565b0361070857808484815181106106ef576106ef61393b565b60209081029190910101528261070481613967565b9350505b508061071381613967565b915050610691565b506000816001600160401b03811115610736576107366131fd565b60405190808252806020026020018201604052801561075f578160200160208202803683370190505b50905060005b8281101561041c5783818151811061077f5761077f61393b565b60200260200101518282815181106107995761079961393b565b6020908102919091010152806107ae81613967565b915050610765565b60008033905060006107d18989898980519060200120610d57565b90506107e48286888c8c8c876000610d91565b6107f682828b8b8b8b8b8b6000610ff2565b9998505050505050505050565b600061080d611a90565b905090565b60008061081d610d33565b600084815260018083016020526040822090810154929350919003610846575060009392505050565b6002810154600160201b900460ff1615610864575060019392505050565b5060009392505050565b600080610879610d33565b9050600061088988888888610d57565b905061089481611c4d565b6001600160a01b03168a6001600160a01b0316141580156108b3575088155b156108d35789604051633733be5960e21b815260040161048b9190613980565b610940816108e160036110e4565b6108eb60076110e4565b6108f560096110e4565b6108ff60086110e4565b61090960066110e4565b61091360026110e4565b6001610920600982613994565b61092b906002613a91565b6109359190613aa0565b181818181818611107565b5061094a81611c4d565b6001600160a01b03168a6001600160a01b0316036109cb57600061096d826112fc565b600981111561097e5761097e6138e4565b146109cb5760405162461bcd60e51b815260206004820152601e60248201527f476f7665726e6f723a2070726f706f73616c206e6f742070656e64696e670000604482015260640161048b565b60008181526007830160205260409020548015610a5457600683015460405163c4d252f560e01b8152600481018390526001600160a01b039091169063c4d252f590602401600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b5050506000838152600785016020526040812055505b61032d828c87611c76565b60006105a382611d2d565b6000610a74610d33565b600083815260158201602052604081205491925060ff90911690816001811115610aa057610aa06138e4565b14610ac25782816040516344b7587b60e01b815260040161048b92919061390e565b610ad08361036760086110e4565b506000838152601e83016020908152604091829020805460ff1916600217905590518481527f71611adb0c8d2eea43359b2e41e5fdf96309ce734ed1eb78ceb763198c1b8967910160405180910390a1505050565b6000610b2f610d33565b9050610b4982610b3f60096110e4565b6104ac60086110e4565b506000828152601e82016020908152604091829020805460ff1916905590518381527f89e9abefcace5d0e37429f32023df3d73c9a310923f6383fa778ec40c629df0e910160405180910390a15050565b600080610ba5610d33565b90506000610bb587878787610d57565b9050610bcf81610bc560056110e4565b6104ac60046110e4565b5060008181526001830160205260409020600201805460ff60281b1916600160281b1790556001600160a01b038816610c06611eb0565b6001600160a01b031614610c9a5760005b8751811015610c9857306001600160a01b0316888281518110610c3c57610c3c61393b565b60200260200101516001600160a01b031603610c8857610c88868281518110610c6757610c6761393b565b60200260200101518051906020012084600201611ece90919063ffffffff16565b610c9181613967565b9050610c17565b505b610ca8888289898989611f3f565b876001600160a01b0316610cba611eb0565b6001600160a01b031614158015610ce8575060028201546001600160801b03808216600160801b9092041614155b15610cf557600060028301555b6040518181527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a1979650505050505050565b7fd09a0aaf4ab3087bae7fa25ef74ddd4e5a4950980903ce417e66228cf7dc7b0090565b600084848484604051602001610d709493929190613b27565b60408051601f19818403018152919052805160209091012095945050505050565b6000610d9b610d33565b9050610da682611fdb565b610dc55781604051633e4bbe1960e11b815260040161048b9190613b72565b80600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3e9190613922565b8811610e6057604051637a5d07d360e01b81526004810189905260240161048b565b80600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed99190613922565b610ee4906001613b80565b8803610f1257610ef2611a90565b610f1257604051637a5d07d360e01b81526004810189905260240161048b565b6000826001811115610f2657610f266138e4565b03610f5457610f358988612012565b610f54578860405163d9b3955760e01b815260040161048b9190613980565b84518651141580610f6757508351865114155b15610f9c57855184518651604051630447b05d60e41b815260048101939093526024830191909152604482015260640161048b565b600083815260018083016020526040909120015415610fdd5782610fbf846112fc565b6040516331b75e4d60e01b815261048b929190600090600401613b93565b610fe78685612103565b505050505050505050565b600080610ffd610d33565b9050600061100a846121e8565b9050600061108f83600a0160009054906101000a90046001600160a01b03166001600160a01b03166302a251a36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108a9190613922565b6122b6565b8b5190915015156110a08e876122e6565b6110b08d8f848b858c898d61244a565b86156110c1576110c1878f8f61255c565b6110d28e8e8e8e8e8e8e8a8e6127f8565b509a9c9b505050505050505050505050565b60008160098111156110f8576110f86138e4565b600160ff919091161b92915050565b600080611113846112fc565b9050600083611121836110e4565b1603610591578381846040516331b75e4d60e01b815260040161048b93929190613b93565b600080611151610d33565b905060008160060160009054906101000a90046001600160a01b03166001600160a01b031663f27a0c926040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190613922565b905060006111dc858b6128d4565b600684015460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790611218908b908b908b906000908890600401613bbb565b602060405180830381865afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112599190613922565b60008a815260078501602052604080822092909255600685015491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916112a8918c918c918c919088908a90600401613c09565b600060405180830381600087803b1580156112c257600080fd5b505af11580156112d6573d6000803e3d6000fd5b505050506112ee82426112e99190613b80565b6128e5565b9a9950505050505050505050565b600080611307610d33565b6000848152600180830160209081526040808420601e8601909252909220546002830154939450919260ff92831692600160281b8204811692600160301b909204169083600281111561135c5761135c6138e4565b0361136e575060089695505050505050565b6002836002811115611382576113826138e4565b03611394575060099695505050505050565b81156113a7575060069695505050505050565b80156113ba575060029695505050505050565b83600101546000036113e257604051636ad0607560e01b81526004810188905260240161048b565b836001015485600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561143c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114609190613922565b1015611473575060009695505050505050565b600073__$f2b2c58f5cb02a2b1a2ff648948be15d53$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af41580156114be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e29190613c61565b65ffffffffffff16905060006114f789611d2d565b905061150289612913565b6115155750600798975050505050505050565b81811061152b5750600198975050505050505050565b6115348961293f565b158061154657506115448961299d565b155b1561155a5750600398975050505050505050565b611563896129c5565b6000036115795750600498975050505050505050565b6000898152600788016020526040908190205460068901549151632c258a9f60e11b81526004810182905290916001600160a01b03169063584b153e90602401602060405180830381865afa1580156115d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fa9190613c89565b1561160f575060059998505050505050505050565b6006880154604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa15801561165a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167e9190613c89565b15611693575060069998505050505050505050565b5060029998505050505050505050565b6000806116ae610d33565b90508060010160008481526020019081526020016000206001015481600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561171e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117429190613922565b106117df576000611751610d33565b600a81015460008681526001808401602052604091829020015490516368377f6d60e11b815260048101919091529192506001600160a01b03169063d06efeda906024015b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613922565b949350505050565b600a81015460408051639cbe5efd60e01b815290516000926001600160a01b031691639cbe5efd9160048083019260209291908290030181865afa15801561182b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184f9190613922565b600085815260018085016020526040909120015461186d9190613aa0565b9050600061187c600183613aa0565b83600a0160009054906101000a90046001600160a01b03166001600160a01b03166302a251a36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f59190613922565b6118ff9190613ca6565b9050600083600a0160009054906101000a90046001600160a01b03166001600160a01b031663593728126040518163ffffffff1660e01b8152600401602060405180830381865afa158015611958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197c9190613922565b905073__$f2b2c58f5cb02a2b1a2ff648948be15d53$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af41580156119c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb9190613c61565b65ffffffffffff168111611a715773__$f2b2c58f5cb02a2b1a2ff648948be15d53$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015611a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a669190613c61565b65ffffffffffff1690505b82611a7c8383613b80565b611a869190613b80565b9695505050505050565b600080611a9b610d33565b9050600081600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b189190613922565b600a83015460405163d3a368bd60e01b8152600481018390529192506000916001600160a01b039091169063d3a368bd90602401602060405180830381865afa158015611b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8d9190613922565b9050600073__$f2b2c58f5cb02a2b1a2ff648948be15d53$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015611bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfe9190613c61565b90508065ffffffffffff168211611c1a57600094505050505090565b611c2c65ffffffffffff821683613aa0565b84600401541115611c4257600094505050505090565b600194505050505090565b600080611c58610d33565b6000938452600101602052505060409020546001600160a01b031690565b600080611c81610d33565b600086815260018201602052604090819020600201805460ff60301b1916600160301b179055519091507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90611cda9087815260200190565b60405180910390a1836001600160a01b0316857f93bcf40b1de68d22878e9394837dd4b08dae46ee73bc722cccffecdadbe4414585604051611d1c9190613cbd565b60405180910390a350929392505050565b600080611d38610d33565b90508060010160008481526020019081526020016000206001015481600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dcc9190613922565b10611e24576000611ddb610d33565b600a810154600086815260018084016020526040918290200154905163d3a368bd60e01b815260048101919091529192506001600160a01b03169063d3a368bd90602401611796565b80600a0160009054906101000a90046001600160a01b03166001600160a01b03166302a251a36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9d9190613922565b611ea6846116a3565b6105919190613b80565b600080611ebb610d33565b600601546001600160a01b031692915050565b81546001600160801b03600160801b820481169181166001830190911603611f0957604051638acb5f2760e01b815260040160405180910390fd5b6001600160801b03808216600090815260018086016020526040909120939093558354919092018216600160801b029116179055565b6000611f49610d33565b60068101549091506001600160a01b031663e38335e5348787876000611f6f898f6128d4565b6040518763ffffffff1660e01b8152600401611f8f959493929190613bbb565b6000604051808303818588803b158015611fa857600080fd5b505af1158015611fbc573d6000803e3d6000fd5b5050506000978852505060070160205250506040832092909255505050565b600080826001811115611ff057611ff06138e4565b14806105a35750600182600181111561200b5761200b6138e4565b1492915050565b8051600090603481101561202a5760019150506105a3565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461205d576001925050506105a3565b60008061206b602885613aa0565b90505b838110156120e2576000806120a288848151811061208e5761208e61393b565b01602001516001600160f81b0319166129f7565b91509150816120ba57600196505050505050506105a3565b8060ff166004856001600160a01b0316901b1793505050806120db90613967565b905061206e565b50856001600160a01b0316816001600160a01b031614935050505092915050565b600061210d610d33565b600981015490915060ff16156121e35760005b83518110156121e157600061214d8483815181106121405761214061393b565b6020026020010151612a89565b90508260080160008684815181106121675761216761393b565b6020908102919091018101516001600160a01b0316825281810192909252604090810160009081206001600160e01b03198516825290925290205460ff166121ce5760405163294080f760e21b81526001600160e01b03198216600482015260240161048b565b50806121d981613967565b915050612120565b505b505050565b6000806121f3610d33565b90506000606482600b0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561224e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122729190613922565b61227b86612ab8565b6122859190613ca6565b61228f9190613ce6565b9050600061229c85612b2a565b9050808211156122ae57949350505050565b509392505050565b600063ffffffff8211156122e2576020826040516306dfcc6560e41b815260040161048b929190613d08565b5090565b60006122f0610d33565b9050600081601c01600084600181111561230c5761230c6138e4565b600181111561231d5761231d6138e4565b815260208101919091526040908101600090812054601b850154925163d206885d60e01b815290935090916001600160a01b031690636d5e303290829063d206885d9061236e908a90600401613980565b602060405180830381865afa15801561238b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123af9190613922565b6040518263ffffffff1660e01b81526004016123cd91815260200190565b602060405180830381865afa1580156123ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240e9190613922565b905081811015612443576040516304b60e7960e31b81526001600160a01b03861660048201526024810183905260440161048b565b5050505050565b6000612454610d33565b905060008160010160008b81526020019081526020016000209050888160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550868160010181905550878160020160006101000a81548163ffffffff021916908363ffffffff160217905550858160020160046101000a81548160ff021916908315150217905550848160030181905550838160040181905550828260150160008c815260200190815260200160002060006101000a81548160ff02191690836001811115612529576125296138e4565b02179055505060009586526021016020908152604086208054600181018255908752952090940196909655505050505050565b6000612566610d33565b600c8101546040516323b872dd60e01b81526001600160a01b038681166004830152306024830152604482018890529293509116906323b872dd906064016020604051808303816000875af11580156125c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e79190613c89565b6126335760405162461bcd60e51b815260206004820181905260248201527f42335452476f7665726e6f725631303a207472616e73666572206661696c6564604482015260640161048b565b6000828152600d8201602090815260408083206001600160a01b038716845290915281208054869290612667908490613b80565b92505081905550600061270073__$f2b2c58f5cb02a2b1a2ff648948be15d53$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af41580156126bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e09190613c61565b6001600160a01b0386166000908152601d85016020526040902090612b74565b9050600061270d86612c2a565b6127179083613d1b565b90506127aa73__$f2b2c58f5cb02a2b1a2ff648948be15d53$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015612765573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127899190613c61565b6001600160a01b0387166000908152601d8601602052604090209083612c59565b505083856001600160a01b03167f65c1df56bba34c409163f3295407ab399df5a4d9bf3dd0288416d6041cdc272c886040516127e891815260200190565b60405180910390a3505050505050565b82896001600160a01b0316897f9c2b0d68f5edfd1bf6158a1867aced894efcfcf77c7a7603cb571e18ce89ae768a8a8c516001600160401b03811115612840576128406131fd565b60405190808252806020026020018201604052801561287357816020015b606081526020019060019003908161285e5790505b508b8b8a60405161288996959493929190613d42565b60405180910390a4877f6d04097725b4d82fbe72e4fd0fd1798c60a7b1bbc328842680c83ac06b1b0ada826040516128c19190613b72565b60405180910390a2505050505050505050565b60601b6001600160601b0319161890565b600065ffffffffffff8211156122e2576030826040516306dfcc6560e41b815260040161048b929190613d08565b60008061291e610d33565b60009384526001016020525050604090206004810154600390910154101590565b60008061294a610d33565b6000848152601582016020908152604080832054601185019092529091205491925060ff169061299361297c866116a3565b83600181111561298e5761298e6138e4565b612c74565b1115949350505050565b6000806129a8610d33565b6000938452600f0160205250506040902080546001909101541190565b6000806129d0610d33565b600093845260010160205250506040902060020154600160381b900465ffffffffffff1690565b60008060f883901c602f81118015612a125750603a8160ff16105b15612a2757600194602f199091019350915050565b8060ff166040108015612a3d575060478160ff16105b15612a52576001946036199091019350915050565b8060ff166060108015612a68575060678160ff16105b15612a7d576001946056199091019350915050565b50600093849350915050565b6000600482511015612ab057816040516301a800fb60e41b815260040161048b9190613cbd565b506020015190565b600080612ac3610d33565b9050612ace83611fdb565b612aea5760405162461bcd60e51b815260040161048b90613df9565b806016016000846001811115612b0257612b026138e4565b6001811115612b1357612b136138e4565b815260200190815260200160002054915050919050565b600080612b35610d33565b9050612b4083611fdb565b612b5c5760405162461bcd60e51b815260040161048b90613df9565b806019016000846001811115612b0257612b026138e4565b815460009081816005811115612bd3576000612b8f84612d10565b612b999085613aa0565b60008881526020902090915081015465ffffffffffff9081169087161015612bc357809150612bd1565b612bce816001613b80565b92505b505b6000612be187878585612df8565b90508015612c1c57612c0687612bf8600184613aa0565b600091825260209091200190565b54600160301b90046001600160d01b0316612c1f565b60005b979650505050505050565b60006001600160d01b038211156122e25760d0826040516306dfcc6560e41b815260040161048b929190613d08565b600080612c67858585612e52565b915091505b935093915050565b600080612c7f610d33565b90506064612c8d8585612fcc565b600c830154604051632394e7a360e21b8152600481018890526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612cd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfc9190613922565b612d069190613ca6565b6117d79190613ce6565b600081600003612d2257506000919050565b60006001612d2f84612fec565b901c6001901b90506001818481612d4857612d48613cd0565b048201901c90506001818481612d6057612d60613cd0565b048201901c90506001818481612d7857612d78613cd0565b048201901c90506001818481612d9057612d90613cd0565b048201901c90506001818481612da857612da8613cd0565b048201901c90506001818481612dc057612dc0613cd0565b048201901c90506001818481612dd857612dd8613cd0565b048201901c905061059181828581612df257612df2613cd0565b04613080565b60005b818310156122ae576000612e0f8484613096565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff161115612e3e57809250612e4c565b612e49816001613b80565b93505b50612dfb565b825460009081908015612f71576000612e7087612bf8600185613aa0565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015612ec457604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603612f105784612ee788612bf8600186613aa0565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055612f61565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b602001519250839150612c6c9050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b029190931617920191909155905081612c6c565b6000610591838360ff166001811115612fe757612fe76138e4565b6130b1565b600080608083901c1561300157608092831c92015b604083901c1561301357604092831c92015b602083901c1561302557602092831c92015b601083901c1561303757601092831c92015b600883901c1561304957600892831c92015b600483901c1561305b57600492831c92015b600283901c1561306d57600292831c92015b600183901c156105a35760010192915050565b600081831061308f5781610591565b5090919050565b60006130a56002848418613ce6565b61059190848416613b80565b6000806130bc610d33565b905060008160180160008560018111156130d8576130d86138e4565b60018111156130e9576130e96138e4565b8152602081019190915260400160009081205491506018830181866001811115613115576131156138e4565b6001811115613126576131266138e4565b81526020810191909152604001600020613141600184613aa0565b815481106131515761315161393b565b6000918252602090912001805490915065ffffffffffff811690600160301b90046001600160d01b0316878211613197576001600160d01b031694506105a39350505050565b6131e86131a3896128e5565b8660180160008a60018111156131bb576131bb6138e4565b60018111156131cc576131cc6138e4565b8152602001908152602001600020612b7490919063ffffffff16565b6001600160d01b031698975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561323b5761323b6131fd565b604052919050565b60006001600160401b0382111561325c5761325c6131fd565b5060051b60200190565b80356001600160a01b038116811461327d57600080fd5b919050565b600082601f83011261329357600080fd5b813560206132a86132a383613243565b613213565b82815260059290921b840181019181810190868411156132c757600080fd5b8286015b848110156132e9576132dc81613266565b83529183019183016132cb565b509695505050505050565b600082601f83011261330557600080fd5b813560206133156132a383613243565b82815260059290921b8401810191818101908684111561333457600080fd5b8286015b848110156132e95780358352918301918301613338565b60006001600160401b03831115613368576133686131fd565b61337b601f8401601f1916602001613213565b905082815283838301111561338f57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126133b757600080fd5b813560206133c76132a383613243565b82815260059290921b840181019181810190868411156133e657600080fd5b8286015b848110156132e95780356001600160401b038111156134095760008081fd5b8701603f8101891361341b5760008081fd5b61342c89868301356040840161334f565b8452509183019183016133ea565b600082601f83011261344b57600080fd5b6105918383356020850161334f565b600080600080600080600080610100898b03121561347757600080fd5b88356001600160401b038082111561348e57600080fd5b61349a8c838d01613282565b995060208b01359150808211156134b057600080fd5b6134bc8c838d016132f4565b985060408b01359150808211156134d257600080fd5b6134de8c838d016133a6565b975060608b01359150808211156134f457600080fd5b6135008c838d0161343a565b965060808b0135955060a08b0135945061351c60c08c01613266565b935060e08b013591508082111561353257600080fd5b5061353f8b828c0161343a565b9150509295985092959890939650565b600080600080600060a0868803121561356757600080fd5b61357086613266565b945060208601356001600160401b038082111561358c57600080fd5b61359889838a01613282565b955060408801359150808211156135ae57600080fd5b6135ba89838a016132f4565b945060608801359150808211156135d057600080fd5b506135dd888289016133a6565b95989497509295608001359392505050565b60006020828403121561360157600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561364057835183529284019291840191600101613624565b50909695505050505050565b60008060008060008060c0878903121561366557600080fd5b86356001600160401b038082111561367c57600080fd5b6136888a838b01613282565b9750602089013591508082111561369e57600080fd5b6136aa8a838b016132f4565b965060408901359150808211156136c057600080fd5b6136cc8a838b016133a6565b955060608901359150808211156136e257600080fd5b506136ef89828a0161343a565b9350506080870135915060a087013590509295509295509295565b801515811461371857600080fd5b50565b803561327d8161370a565b600080600080600080600060e0888a03121561374157600080fd5b61374a88613266565b96506137586020890161371b565b955060408801356001600160401b038082111561377457600080fd5b6137808b838c01613282565b965060608a013591508082111561379657600080fd5b6137a28b838c016132f4565b955060808a01359150808211156137b857600080fd5b6137c48b838c016133a6565b945060a08a0135935060c08a01359150808211156137e157600080fd5b506137ee8a828b0161343a565b91505092959891949750929550565b6000815180845260005b8181101561382357602081850181015186830182015201613807565b506000602082860101526020601f19601f83011685010191505092915050565b6000815180845260208085019450848260051b860182860160005b858110156138885783830389526138768383516137fd565b9885019892509084019060010161385e565b5090979650505050505050565b60a0815260006138a860a08301886137fd565b602083018790526001600160a01b0386811660408501528516606084015282810360808401526138d88185613843565b98975050505050505050565b634e487b7160e01b600052602160045260246000fd5b6002811061390a5761390a6138e4565b9052565b8281526040810161059160208301846138fa565b60006020828403121561393457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161397957613979613951565b5060010190565b6001600160a01b0391909116815260200190565b60ff81811683821601908111156105a3576105a3613951565b600181815b808511156139e85781600019048211156139ce576139ce613951565b808516156139db57918102915b93841c93908002906139b2565b509250929050565b6000826139ff575060016105a3565b81613a0c575060006105a3565b8160018114613a225760028114613a2c57613a48565b60019150506105a3565b60ff841115613a3d57613a3d613951565b50506001821b6105a3565b5060208310610133831016604e8410600b8410161715613a6b575081810a6105a3565b613a7583836139ad565b8060001904821115613a8957613a89613951565b029392505050565b600061059160ff8416836139f0565b818103818111156105a3576105a3613951565b600081518084526020808501945080840160005b83811015613aec5781516001600160a01b031687529582019590820190600101613ac7565b509495945050505050565b600081518084526020808501945080840160005b83811015613aec57815187529582019590820190600101613b0b565b608081526000613b3a6080830187613ab3565b8281036020840152613b4c8187613af7565b90508281036040840152613b608186613843565b91505082606083015295945050505050565b602081016105a382846138fa565b808201808211156105a3576105a3613951565b83815260608101600a8410613baa57613baa6138e4565b602082019390935260400152919050565b60a081526000613bce60a0830188613ab3565b8281036020840152613be08188613af7565b90508281036040840152613bf48187613843565b60608401959095525050608001529392505050565b60c081526000613c1c60c0830189613ab3565b8281036020840152613c2e8189613af7565b90508281036040840152613c428188613843565b60608401969096525050608081019290925260a0909101529392505050565b600060208284031215613c7357600080fd5b815165ffffffffffff8116811461059157600080fd5b600060208284031215613c9b57600080fd5b81516105918161370a565b80820281158282048414176105a3576105a3613951565b60208152600061059160208301846137fd565b634e487b7160e01b600052601260045260246000fd5b600082613d0357634e487b7160e01b600052601260045260246000fd5b500490565b60ff929092168252602082015260400190565b6001600160d01b03818116838216019080821115613d3b57613d3b613951565b5092915050565b60c081526000613d5560c0830189613ab3565b602083820381850152613d68828a613af7565b915083820360408501528188518084528284019150828160051b850101838b0160005b83811015613db957601f19878403018552613da78383516137fd565b94860194925090850190600101613d8b565b50508681036060880152613dcd818b613843565b9450505050508281036080840152613de581866137fd565b9150508260a0830152979650505050505050565b6020808252602e908201527f476f7665726e6f72436f6e666967757261746f725631303a20696e76616c696460408201526d2070726f706f73616c207479706560901b60608201526080019056fea264697066735822122090b1edf21c26371daf1fea75b1d5ef49b8fec032feaa4c7c38b62fff7c2443aa64736f6c63430008140033", "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100c45760003560e01c8063013b1088146100c957806301957cc7146100fc5780631e6b49921461011c5780632a09c7721461013e5780632d63f693146101635780635584c4f91461017657806358c839bc1461018b57806381ab2353146101ab578063a9a95294146101c3578063badecd76146101d6578063c01f9e37146101f6578063c0a6026c14610209578063c429bd8214610229578063fcadd1f714610249575b600080fd5b8180156100d557600080fd5b506100e96100e436600461345a565b610269565b6040519081526020015b60405180910390f35b81801561010857600080fd5b506100e961011736600461354f565b61033c565b81801561012857600080fd5b5061013c6101373660046135ef565b610428565b005b61015161014c3660046135ef565b61055e565b60405160ff90911681526020016100f3565b6100e96101713660046135ef565b610598565b61017e6105a9565b6040516100f39190613608565b81801561019757600080fd5b506100e96101a636600461364c565b6107b6565b6101b3610803565b60405190151581526020016100f3565b6101b36101d13660046135ef565b610812565b8180156101e257600080fd5b506100e96101f1366004613726565b61086e565b6100e96102043660046135ef565b610a5f565b81801561021557600080fd5b5061013c6102243660046135ef565b610a6a565b81801561023557600080fd5b5061013c6102443660046135ef565b610b25565b81801561025557600080fd5b506100e961026436600461354f565b610b9a565b600080610274610d33565b9050600061028b8b8b8b8b80519060200120610d57565b905061029e33888a8e8e8e876001610d91565b81601a0160009054906101000a90046001600160a01b03166001600160a01b031663808860a5858333898e6040518663ffffffff1660e01b81526004016102e9959493929190613895565b600060405180830381600087803b15801561030357600080fd5b505af1158015610317573d6000803e3d6000fd5b5050505061032d33828d8d8d8d8d8d6001610ff2565b9b9a5050505050505050505050565b600080610347610d33565b9050600061035787878787610d57565b905061036c8161036760046110e4565b611107565b50600061037d89838a8a8a8a611146565b905065ffffffffffff811615610403576000828152600184016020908152604091829020600201805465ffffffffffff60381b1916600160381b65ffffffffffff8616908102919091179091558251858152918201527f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892910160405180910390a161041c565b604051634844252360e11b815260040160405180910390fd5b50979650505050505050565b6000610432610d33565b600083815260158201602090815260408083205460018501909252822092935060ff169190826001811115610469576104696138e4565b146104945783826040516344b7587b60e01b815260040161048b92919061390e565b60405180910390fd5b6104b2846104a260046110e4565b6104ac60066110e4565b17611107565b506002810154600160201b900460ff1680156104e7575060046104d4856112fc565b60098111156104e5576104e56138e4565b145b156105095783826040516344b7587b60e01b815260040161048b92919061390e565b6000848152601e84016020908152604091829020805460ff1916600117905590518581527fae96d9c307786efa9d87d53b27b247aa9ef9c3640c4d5065fddc861c71684ab0910160405180910390a150505050565b600080610569610d33565b600084815260158201602052604090205490915060ff166001811115610591576105916138e4565b9392505050565b60006105a3826116a3565b92915050565b606060006105b5610d33565b9050600081600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561060e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106329190613922565b6000818152602184016020526040812080549293509190816001600160401b03811115610661576106616131fd565b60405190808252806020026020018201604052801561068a578160200160208202803683370190505b5090506000805b8381101561071b5760008582815481106106ad576106ad61393b565b600091825260209091200154905060016106c6826112fc565b60098111156106d7576106d76138e4565b0361070857808484815181106106ef576106ef61393b565b60209081029190910101528261070481613967565b9350505b508061071381613967565b915050610691565b506000816001600160401b03811115610736576107366131fd565b60405190808252806020026020018201604052801561075f578160200160208202803683370190505b50905060005b8281101561041c5783818151811061077f5761077f61393b565b60200260200101518282815181106107995761079961393b565b6020908102919091010152806107ae81613967565b915050610765565b60008033905060006107d18989898980519060200120610d57565b90506107e48286888c8c8c876000610d91565b6107f682828b8b8b8b8b8b6000610ff2565b9998505050505050505050565b600061080d611a90565b905090565b60008061081d610d33565b600084815260018083016020526040822090810154929350919003610846575060009392505050565b6002810154600160201b900460ff1615610864575060019392505050565b5060009392505050565b600080610879610d33565b9050600061088988888888610d57565b905061089481611c4d565b6001600160a01b03168a6001600160a01b0316141580156108b3575088155b156108d35789604051633733be5960e21b815260040161048b9190613980565b610940816108e160036110e4565b6108eb60076110e4565b6108f560096110e4565b6108ff60086110e4565b61090960066110e4565b61091360026110e4565b6001610920600982613994565b61092b906002613a91565b6109359190613aa0565b181818181818611107565b5061094a81611c4d565b6001600160a01b03168a6001600160a01b0316036109cb57600061096d826112fc565b600981111561097e5761097e6138e4565b146109cb5760405162461bcd60e51b815260206004820152601e60248201527f476f7665726e6f723a2070726f706f73616c206e6f742070656e64696e670000604482015260640161048b565b60008181526007830160205260409020548015610a5457600683015460405163c4d252f560e01b8152600481018390526001600160a01b039091169063c4d252f590602401600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b5050506000838152600785016020526040812055505b61032d828c87611c76565b60006105a382611d2d565b6000610a74610d33565b600083815260158201602052604081205491925060ff90911690816001811115610aa057610aa06138e4565b14610ac25782816040516344b7587b60e01b815260040161048b92919061390e565b610ad08361036760086110e4565b506000838152601e83016020908152604091829020805460ff1916600217905590518481527f71611adb0c8d2eea43359b2e41e5fdf96309ce734ed1eb78ceb763198c1b8967910160405180910390a1505050565b6000610b2f610d33565b9050610b4982610b3f60096110e4565b6104ac60086110e4565b506000828152601e82016020908152604091829020805460ff1916905590518381527f89e9abefcace5d0e37429f32023df3d73c9a310923f6383fa778ec40c629df0e910160405180910390a15050565b600080610ba5610d33565b90506000610bb587878787610d57565b9050610bcf81610bc560056110e4565b6104ac60046110e4565b5060008181526001830160205260409020600201805460ff60281b1916600160281b1790556001600160a01b038816610c06611eb0565b6001600160a01b031614610c9a5760005b8751811015610c9857306001600160a01b0316888281518110610c3c57610c3c61393b565b60200260200101516001600160a01b031603610c8857610c88868281518110610c6757610c6761393b565b60200260200101518051906020012084600201611ece90919063ffffffff16565b610c9181613967565b9050610c17565b505b610ca8888289898989611f3f565b876001600160a01b031661