UNPKG

@vechain/vebetterdao-contracts

Version:

Vebetter DAO smart contracts, including their addresses, ABIs, and interfaces.

1,430 lines 85.3 kB
{ "_format": "hh-sol-artifact-1", "contractName": "VOT3", "sourceName": "contracts/VOT3.sol", "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [], "name": "CheckpointUnorderedInsertion", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "name": "ERC1967InvalidImplementation", "type": "error" }, { "inputs": [], "name": "ERC1967NonPayable", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "increasedSupply", "type": "uint256" }, { "internalType": "uint256", "name": "cap", "type": "uint256" } ], "name": "ERC20ExceededSafeSupply", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "timepoint", "type": "uint256" }, { "internalType": "uint48", "name": "clock", "type": "uint48" } ], "name": "ERC5805FutureLookup", "type": "error" }, { "inputs": [], "name": "ERC6372InconsistentClock", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "inputs": [], "name": "UUPSUnauthorizedCallContext", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "slot", "type": "bytes32" } ], "name": "UUPSUnsupportedProxiableUUID", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "expiry", "type": "uint256" } ], "name": "VotesExpiredSignature", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fromDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toDelegate", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "previousVotes", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newVotes", "type": "uint256" } ], "name": "DelegateVotesChanged", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "CLOCK_MODE", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PAUSER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADE_INTERFACE_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "b3tr", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint32", "name": "pos", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "components": [ { "internalType": "uint48", "name": "_key", "type": "uint48" }, { "internalType": "uint208", "name": "_value", "type": "uint208" } ], "internalType": "struct Checkpoints.Checkpoint208", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "clock", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "convertToB3TR", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "convertToVOT3", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "convertedB3trOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" } ], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "delegateBySig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastQuadraticVotingPower", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getQuadraticVotingPower", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_admin", "type": "address" }, { "internalType": "address", "name": "_upgrader", "type": "address" }, { "internalType": "address", "name": "_pauser", "type": "address" }, { "internalType": "address", "name": "_b3tr", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" } ], "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161360262000104600039600081816119520152818161197b0152611ac501526136026000f3fe60806040526004361061020d5760003560e01c806301ffc9a71461021257806306fdde0314610247578063095ea7b314610269578063114d621e1461028957806318160ddd146102b757806323b872dd146102cc578063248a9ca3146102ec5780632f2ff15d1461030c578063313ce5671461032e5780633644e5151461034a57806336568abe1461035f5780633a46b1a81461037f5780633f4ba83a1461039f5780634bf5d7e9146103b45780634f1ef286146103c957806352d1902d146103dc57806354fd4d50146103f1578063582a486a1461041b578063587cde1e1461043d5780635c19a95c1461045d5780635c975abb1461047d5780636fcfff451461049257806370a08231146104c75780637ecebe00146104e75780638456cb591461050757806384b0196e1461051c5780638e539e8c1461054457806391d148541461056457806391ddadf41461058457806395d89b41146105b05780639ab24eb0146105c55780639ae05c35146105e5578063a217fddf14610605578063a9059cbb1461061a578063ad3cb1cc1461063a578063c3cda5201461066b578063c731790a1461068b578063d505accf146106ab578063d547741f146106cb578063dd62ed3e146106eb578063e23285a01461070b578063e63ab1e91461072b578063f1127ed81461074d578063f72c0d8b14610799578063f8c8765e146107bb578063faad8676146107db575b600080fd5b34801561021e57600080fd5b5061023261022d366004612dd3565b6107fb565b60405190151581526020015b60405180910390f35b34801561025357600080fd5b5061025c610832565b60405161023e9190612e4d565b34801561027557600080fd5b50610232610284366004612e7c565b6108d3565b34801561029557600080fd5b506102a96102a4366004612e7c565b6108e6565b60405190815260200161023e565b3480156102c357600080fd5b506102a9610908565b3480156102d857600080fd5b506102326102e7366004612ea6565b61091d565b3480156102f857600080fd5b506102a9610307366004612ee2565b610932565b34801561031857600080fd5b5061032c610327366004612efb565b610952565b005b34801561033a57600080fd5b506040516012815260200161023e565b34801561035657600080fd5b506102a9610974565b34801561036b57600080fd5b5061032c61037a366004612efb565b610983565b34801561038b57600080fd5b506102a961039a366004612e7c565b6109bb565b3480156103ab57600080fd5b5061032c610a47565b3480156103c057600080fd5b5061025c610a6a565b61032c6103d7366004612f3d565b610ae2565b3480156103e857600080fd5b506102a9610b01565b3480156103fd57600080fd5b506040805180820190915260018152603160f81b602082015261025c565b34801561042757600080fd5b50610430610b1e565b60405161023e9190612ffe565b34801561044957600080fd5b50610430610458366004613012565b610b39565b34801561046957600080fd5b5061032c610478366004613012565b610b68565b34801561048957600080fd5b50610232610bc2565b34801561049e57600080fd5b506104b26104ad366004613012565b610bd7565b60405163ffffffff909116815260200161023e565b3480156104d357600080fd5b506102a96104e2366004613012565b610be2565b3480156104f357600080fd5b506102a9610502366004613012565b610c0d565b34801561051357600080fd5b5061032c610c18565b34801561052857600080fd5b50610531610c38565b60405161023e979695949392919061302d565b34801561055057600080fd5b506102a961055f366004612ee2565b610ce1565b34801561057057600080fd5b5061023261057f366004612efb565b610d4d565b34801561059057600080fd5b50610599610d83565b60405165ffffffffffff909116815260200161023e565b3480156105bc57600080fd5b5061025c610d8d565b3480156105d157600080fd5b506102a96105e0366004613012565b610daa565b3480156105f157600080fd5b5061032c610600366004612ee2565b610deb565b34801561061157600080fd5b506102a9600081565b34801561062657600080fd5b50610232610635366004612e7c565b610f98565b34801561064657600080fd5b5061025c604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561067757600080fd5b5061032c6106863660046130d4565b610fa4565b34801561069757600080fd5b506102a96106a6366004613012565b611061565b3480156106b757600080fd5b5061032c6106c636600461312c565b61108e565b3480156106d757600080fd5b5061032c6106e6366004612efb565b6111aa565b3480156106f757600080fd5b506102a9610706366004613196565b6111c6565b34801561071757600080fd5b5061032c610726366004612ee2565b611202565b34801561073757600080fd5b506102a960008051602061358d83398151915281565b34801561075957600080fd5b5061076d6107683660046131c0565b61127a565b60408051825165ffffffffffff1681526020928301516001600160d01b0316928101929092520161023e565b3480156107a557600080fd5b506102a960008051602061354d83398151915281565b3480156107c757600080fd5b5061032c6107d6366004613200565b61128c565b3480156107e757600080fd5b506102a96107f6366004613012565b61151d565b60006001600160e01b03198216637965db0b60e01b148061082c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061083e611539565b905080600301805461084f90613254565b80601f016020809104026020016040519081016040528092919081815260200182805461087b90613254565b80156108c85780601f1061089d576101008083540402835291602001916108c8565b820191906000526020600020905b8154815290600101906020018083116108ab57829003601f168201915b505050505091505090565b60006108df838361155d565b9392505050565b60006108fa6108f584846109bb565b611575565b6108df90633b9aca006132a4565b600080610913611539565b6002015492915050565b600061092a84848461165d565b949350505050565b60008061093d611681565b60009384526020525050604090206001015490565b61095b82610932565b610964816116a5565b61096e83836116af565b50505050565b600061097e611757565b905090565b6001600160a01b03811633146109ac5760405163334bd91960e11b815260040160405180910390fd5b6109b68282611761565b505050565b6000806109c66117d9565b905060006109d2610d83565b90508065ffffffffffff168410610a09578381604051637669fc0f60e11b8152600401610a009291906132bb565b60405180910390fd5b610a35610a15856117fd565b6001600160a01b038716600090815260018501602052604090209061182f565b6001600160d01b031695945050505050565b60008051602061358d833981519152610a5f816116a5565b610a676118e5565b50565b6060610a7461193c565b65ffffffffffff16610a84610d83565b65ffffffffffff1614610aaa576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b610aea611947565b610af3826119ee565b610afd8282611a06565b5050565b6000610b0b611aba565b5060008051602061356d83398151915290565b600080610b29611b03565b546001600160a01b031692915050565b600080610b446117d9565b6001600160a01b039384166000908152602091909152604090205490921692915050565b610b70610bc2565b15610bb85760405162461bcd60e51b81526020600482015260186024820152771593d50cce8818dbdb9d1c9858dd081a5cc81c185d5cd95960421b6044820152606401610a00565b610a673382611b27565b600080610bcd611bae565b5460ff1692915050565b600061082c82611bd2565b600080610bed611539565b6001600160a01b0390931660009081526020939093525050604090205490565b600061082c82611c04565b60008051602061358d833981519152610c30816116a5565b610a67611c0f565b6000606080600080600060606000610c4e611c56565b8054909150158015610c6257506001810154155b610ca65760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610a00565b610cae611c7a565b610cb6611c97565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b600080610cec6117d9565b90506000610cf8610d83565b90508065ffffffffffff168410610d26578381604051637669fc0f60e11b8152600401610a009291906132bb565b610d3c610d32856117fd565b600284019061182f565b6001600160d01b0316949350505050565b600080610d58611681565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600061097e61193c565b60606000610d99611539565b905080600401805461084f90613254565b600080610db56117d9565b6001600160a01b03841660009081526001820160205260409020909150610ddb90611ca3565b6001600160d01b03169392505050565b6000610df5611b03565b905081610e0133610be2565b1015610e4a5760405162461bcd60e51b8152602060048201526018602482015277496e73756666696369656e7420566f743320546f6b656e7360401b6044820152606401610a00565b336000908152600182016020526040902054821115610eb65760405162461bcd60e51b815260206004820152602260248201527f496e73756666696369656e7420636f6e766572746564204233545220746f6b656044820152616e7360f01b6064820152608401610a00565b610ec03383611cdc565b33600090815260018201602052604081208054849290610ee19084906132d1565b9091555050805460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610f1790339086906004016132e4565b6020604051808303816000875af1158015610f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5a91906132fd565b610afd5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610a00565b60006108df8383611d12565b83421115610fc857604051632341d78760e11b815260048101859052602401610a00565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906110429061103a9060a00160405160208183030381529060405280519060200120611d20565b858585611d4d565b905061104e8187611d7b565b6110588188611b27565b50505050505050565b60008061106c611b03565b6001600160a01b03909316600090815260019093016020525050604090205490565b834211156110b25760405163313c898160e11b815260048101859052602401610a00565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886110e18c611dac565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061113c82611d20565b9050600061114c82878787611d4d565b9050896001600160a01b0316816001600160a01b031614611193576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610a00565b61119e8a8a8a611ddf565b50505050505050505050565b6111b382610932565b6111bc816116a5565b61096e8383611761565b6000806111d1611539565b6001600160a01b03948516600090815260019190910160209081526040808320959096168252939093525050205490565b600061120c611b03565b90506112183383611dec565b3360009081526001820160205260408120805484929061123990849061331f565b909155505080546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd90606401610f17565b611282612dbc565b6108df8383611e22565b6000611296611e5b565b805490915060ff600160401b82041615906001600160401b03166000811580156112bd5750825b90506000826001600160401b031660011480156112d95750303b155b9050811580156112e7575080155b156113055760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561132e57845460ff60401b1916600160401b1785555b61137060405180604001604052806004815260200163564f543360e01b81525060405180604001604052806004815260200163564f543360e01b815250611e7f565b611378611e91565b611380611ea1565b6113a560405180604001604052806004815260200163564f543360e01b815250611ea9565b6113ad611ea1565b6113b5611ea1565b6113bd611ea1565b60006113c7611b03565b90506001600160a01b038a1661141f5760405162461bcd60e51b815260206004820152601f60248201527f564f54333a2041646d696e20616464726573732063616e6e6f742062652030006044820152606401610a00565b61142a60008b6116af565b5061144360008051602061354d8339815191528a6116af565b5061145c60008051602061358d833981519152896116af565b506001600160a01b0387166114b35760405162461bcd60e51b815260206004820152601e60248201527f564f54333a204233545220616464726573732063616e6e6f74206265203000006044820152606401610a00565b80546001600160a01b0319166001600160a01b038816179055831561151257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600061152b6108f583610daa565b61082c90633b9aca006132a4565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0090565b60003361156b818585611ddf565b5060019392505050565b60008160000361158757506000919050565b6000600161159484611ed4565b901c6001901b905060018184816115ad576115ad613332565b048201901c905060018184816115c5576115c5613332565b048201901c905060018184816115dd576115dd613332565b048201901c905060018184816115f5576115f5613332565b048201901c9050600181848161160d5761160d613332565b048201901c9050600181848161162557611625613332565b048201901c9050600181848161163d5761163d613332565b048201901c90506108df8182858161165757611657613332565b04611f68565b60003361166b858285611f7e565b611676858585611fcb565b506001949350505050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b610a67813361202a565b6000806116ba611681565b90506116c68484610d4d565b611746576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556116fc3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061082c565b600091505061082c565b5092915050565b600061097e612055565b60008061176c611681565b90506117788484610d4d565b15611746576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061082c565b7fe8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d0090565b600065ffffffffffff82111561182b576030826040516306dfcc6560e41b8152600401610a00929190613348565b5090565b81546000908181600581111561188e57600061184a84611575565b61185490856132d1565b60008881526020902090915081015465ffffffffffff908116908716101561187e5780915061188c565b61188981600161331f565b92505b505b600061189c878785856120c9565b905080156118d7576118c1876118b36001846132d1565b600091825260209091200190565b54600160301b90046001600160d01b03166118da565b60005b979650505050505050565b6118ed61212b565b60006118f7611bae565b805460ff1916815590507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516119319190612ffe565b60405180910390a150565b600061097e436117fd565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806119ce57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119c260008051602061356d833981519152546001600160a01b031690565b6001600160a01b031614155b156119ec5760405163703e46dd60e11b815260040160405180910390fd5b565b60008051602061354d833981519152610afd816116a5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611a60575060408051601f3d908101601f19168201909252611a5d9181019061335b565b60015b611a7f5781604051634c9c8ce360e01b8152600401610a009190612ffe565b60008051602061356d8339815191528114611ab057604051632a87526960e21b815260048101829052602401610a00565b6109b68383612150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146119ec5760405163703e46dd60e11b815260040160405180910390fd5b7f8af7882bba84ab51775aa801e199e7d1dfd5f5ff08dcfbb73c614b3313e4cb0090565b6000611b316117d9565b90506000611b3e84610b39565b6001600160a01b0385811660008181526020869052604080822080546001600160a01b031916898616908117909155905194955093928516927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461096e8184611ba9876121a6565b6121b1565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b600080611bdd6117d9565b6001600160a01b03841660009081526001820160205260409020549091506108df9061230a565b600061082c82612336565b611c17612341565b6000611c21611bae565b805460ff1916600117815590507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586119243390565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10090565b60606000611c86611c56565b905080600201805461084f90613254565b6060600061083e611c56565b80546000908015611cd357611cbd836118b36001846132d1565b54600160301b90046001600160d01b03166108df565b60009392505050565b6001600160a01b038216611d06576000604051634b637e8f60e11b8152600401610a009190612ffe565b610afd82600083612367565b60003361156b818585611fcb565b600061082c611d2d611757565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611d5f888888886123bb565b925092509250611d6f8282612480565b50909695505050505050565b6000611d8683611dac565b90508082146109b65782816040516301d4b62360e61b8152600401610a009291906132e4565b600080611db7612539565b6001600160a01b03909316600090815260209390935250506040902080546001810190915590565b6109b6838383600161255d565b6001600160a01b038216611e1657600060405163ec442f0560e01b8152600401610a009190612ffe565b610afd60008383612367565b611e2a612dbc565b6000611e346117d9565b6001600160a01b0385166000908152600182016020526040902090915061092a9084612642565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b611e876126a6565b610afd82826126cb565b611e996126a6565b6119ec6126fc565b6119ec6126a6565b611eb16126a6565b610a6781604051806040016040528060018152602001603160f81b815250612719565b600080608083901c15611ee957608092831c92015b604083901c15611efb57604092831c92015b602083901c15611f0d57602092831c92015b601083901c15611f1f57601092831c92015b600883901c15611f3157600892831c92015b600483901c15611f4357600492831c92015b600283901c15611f5557600292831c92015b600183901c1561082c5760010192915050565b6000818310611f7757816108df565b5090919050565b6000611f8a84846111c6565b9050600019811461096e5781811015611fbc57828183604051637dc7a0d960e11b8152600401610a0093929190613374565b61096e8484848403600061255d565b6001600160a01b038316611ff5576000604051634b637e8f60e11b8152600401610a009190612ffe565b6001600160a01b03821661201f57600060405163ec442f0560e01b8152600401610a009190612ffe565b6109b6838383612367565b6120348282610d4d565b610afd57808260405163e2517d3f60e01b8152600401610a009291906132e4565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61208061275a565b6120886127c1565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60005b818310156121235760006120e08484612802565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561210f5780925061211d565b61211a81600161331f565b93505b506120cc565b509392505050565b612133610bc2565b6119ec57604051638dfc202b60e01b815260040160405180910390fd5b6121598261281d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561219e576109b68282612879565b610afd6128ef565b600061082c82610be2565b60006121bb6117d9565b9050826001600160a01b0316846001600160a01b0316141580156121df5750600082115b1561096e576001600160a01b03841615612277576001600160a01b0384166000908152600182016020526040812081906122249061290e61221f8761291a565b612949565b6001600160d01b031691506001600160d01b03169150856001600160a01b03166000805160206135ad833981519152838360405161226c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0383161561096e576001600160a01b0383166000908152600182016020526040812081906122b29061298261221f8761291a565b6001600160d01b031691506001600160d01b03169150846001600160a01b03166000805160206135ad83398151915283836040516122fa929190918252602082015260400190565b60405180910390a2505050505050565b600063ffffffff82111561182b576020826040516306dfcc6560e41b8152600401610a00929190613348565b600080610bed612539565b612349610bc2565b156119ec5760405163d93c066560e01b815260040160405180910390fd5b61237283838361298e565b6001600160a01b0382161580159061238f575063ffffffff823b16155b80156123ac575060006123a183610b39565b6001600160a01b0316145b156109b6576109b68283611b27565b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b038411156123ec5750600091506003905082612476565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612440573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661246c57506000925060019150829050612476565b9250600091508190505b9450945094915050565b600082600381111561249457612494613395565b0361249d575050565b60018260038111156124b1576124b1613395565b036124cf5760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156124e3576124e3613395565b036125045760405163fce698f760e01b815260048101829052602401610a00565b600382600381111561251857612518613395565b03610afd576040516335e2f38360e21b815260048101829052602401610a00565b7f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0090565b6000612567611539565b90506001600160a01b03851661259357600060405163e602df0560e01b8152600401610a009190612ffe565b6001600160a01b0384166125bd576000604051634a1406b160e11b8152600401610a009190612ffe565b6001600160a01b0380861660009081526001830160209081526040808320938816835292905220839055811561263b57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161263291815260200190565b60405180910390a35b5050505050565b61264a612dbc565b826000018263ffffffff1681548110612665576126656133ab565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6126ae6129f4565b6119ec57604051631afcd79f60e31b815260040160405180910390fd5b6126d36126a6565b60006126dd611539565b9050600381016126ed848261340f565b506004810161096e838261340f565b6127046126a6565b600061270e611bae565b805460ff1916905550565b6127216126a6565b600061272b611c56565b90506002810161273b848261340f565b506003810161274a838261340f565b506000808255600