UNPKG

@vechain/vebetterdao-contracts

Version:

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

1,759 lines 104 kB
{ "_format": "hh-sol-artifact-1", "contractName": "RelayerRewardsPool", "sourceName": "contracts/RelayerRewardsPool.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": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "name": "ERC1967InvalidImplementation", "type": "error" }, { "inputs": [], "name": "ERC1967NonPayable", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "parameter", "type": "string" } ], "name": "InvalidParameter", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "relayer", "type": "address" }, { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "NoRewardsToClaim", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "preferredRelayer", "type": "address" } ], "name": "NotPreferredRelayer", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "relayer", "type": "address" } ], "name": "RelayerAlreadyRegistered", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "relayer", "type": "address" } ], "name": "RelayerNotRegistered", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "relayer", "type": "address" }, { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "RewardsAlreadyClaimed", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "RoundNotEnded", "type": "error" }, { "inputs": [], "name": "TransferFailed", "type": "error" }, { "inputs": [], "name": "UUPSUnauthorizedCallContext", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "slot", "type": "bytes32" } ], "name": "UUPSUnsupportedProxiableUUID", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "relayer", "type": "address" } ], "name": "UnauthorizedUnregister", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "UserActionAlreadyReduced", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roundId", "type": "uint256" }, { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "UserGovernanceVoteAlreadyReduced", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" } ], "name": "B3TRAddressUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newWeight", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldWeight", "type": "uint256" } ], "name": "ClaimWeightUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newBlocks", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldBlocks", "type": "uint256" } ], "name": "EarlyAccessBlocksUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" } ], "name": "EmissionsAddressUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "roundId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "actionsReduced", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTotalActions", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTotalWeightedActions", "type": "uint256" } ], "name": "ExpectedActionsReduced", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldFee", "type": "uint256" } ], "name": "FeeCapUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "relayer", "type": "address" } ], "name": "PreferredRelayerSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "relayer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "voter", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "roundId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "actionCount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "weight", "type": "uint256" } ], "name": "RelayerActionRegistered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newDenominator", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldDenominator", "type": "uint256" } ], "name": "RelayerFeeDenominatorUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldFee", "type": "uint256" } ], "name": "RelayerFeePercentageUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "relayer", "type": "address" } ], "name": "RelayerRegistered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "relayer", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "roundId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "RelayerRewardsClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "relayer", "type": "address" } ], "name": "RelayerUnregistered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "roundId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalRewards", "type": "uint256" } ], "name": "RewardsDeposited", "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": "uint256", "name": "roundId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalAutoVoteUsers", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalActions", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalWeightedActions", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "numRelayers", "type": "uint256" } ], "name": "TotalAutoVotingActionsSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newWeight", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldWeight", "type": "uint256" } ], "name": "VoteWeightUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" } ], "name": "XAllocationVotingAddressUpdated", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "POOL_ADMIN_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": "uint256", "name": "totalReward", "type": "uint256" } ], "name": "calculateRelayerFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" }, { "internalType": "address", "name": "relayer", "type": "address" } ], "name": "claimRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "relayer", "type": "address" }, { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "claimableRewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "completedWeightedActions", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getB3trAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getClaimWeight", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getEarlyAccessBlocks", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getEmissionsAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getFeeCap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "getMissedAutoVotingUsersCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getPreferredRelayer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRegisteredRelayers", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRelayerFeeDenominator", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRelayerFeePercentage", "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": "uint256", "name": "roundId", "type": "uint256" } ], "name": "getTotalRewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getVoteWeight", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getXAllocationVotingAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "b3trAddress", "type": "address" }, { "internalType": "address", "name": "emissionsAddress", "type": "address" }, { "internalType": "address", "name": "xAllocationVotingAddress", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initializeV2", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initializeV3", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "isClaimEarlyAccessActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "relayer", "type": "address" } ], "name": "isRegisteredRelayer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "isRewardClaimable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "isVoteEarlyAccessActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" }, { "internalType": "uint256", "name": "userCount", "type": "uint256" } ], "name": "reduceExpectedActionsForRound", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" }, { "internalType": "address", "name": "user", "type": "address" } ], "name": "reduceUserAllocationVote", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" }, { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "reduceUserGovernanceVote", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "relayer", "type": "address" } ], "name": "registerRelayer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "relayer", "type": "address" }, { "internalType": "address", "name": "voter", "type": "address" }, { "internalType": "uint256", "name": "roundId", "type": "uint256" }, { "internalType": "enum RelayerAction", "name": "action", "type": "uint8" } ], "name": "registerRelayerAction", "outputs": [], "stateMutability": "nonpayable", "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": "address", "name": "b3trAddress", "type": "address" } ], "name": "setB3TRAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newWeight", "type": "uint256" } ], "name": "setClaimWeight", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "blocks", "type": "uint256" } ], "name": "setEarlyAccessBlocks", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "emissionsAddress", "type": "address" } ], "name": "setEmissionsAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newFeeCap", "type": "uint256" } ], "name": "setFeeCap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "relayer", "type": "address" } ], "name": "setPreferredRelayer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newDenominator", "type": "uint256" } ], "name": "setRelayerFeeDenominator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newFeePercentage", "type": "uint256" } ], "name": "setRelayerFeePercentage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" }, { "internalType": "uint256", "name": "totalAutoVotingUsers", "type": "uint256" } ], "name": "setTotalActionsForRound", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" }, { "internalType": "uint256", "name": "allocationUsers", "type": "uint256" }, { "internalType": "uint256", "name": "governanceUsers", "type": "uint256" }, { "internalType": "uint256[]", "name": "activeProposalIds", "type": "uint256[]" } ], "name": "setTotalActionsForRoundWithGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newWeight", "type": "uint256" } ], "name": "setVoteWeight", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "xAllocationVotingAddress", "type": "address" } ], "name": "setXAllocationVotingAddress", "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": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "totalActions", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "relayer", "type": "address" }, { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "totalRelayerActions", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "relayer", "type": "address" }, { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "totalRelayerWeightedActions", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "totalWeightedActions", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "relayer", "type": "address" } ], "name": "unregisterRelayer", "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": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" }, { "internalType": "address", "name": "voter", "type": "address" }, { "internalType": "address", "name": "caller", "type": "address" } ], "name": "validateClaimDuringEarlyAccess", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" }, { "internalType": "address", "name": "voter", "type": "address" }, { "internalType": "address", "name": "caller", "type": "address" } ], "name": "validateVoteDuringEarlyAccess", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" } ], "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161409a6200010460003960008181613390015281816133b90152613501015261409a6000f3fe6080604052600436106102bd5760003560e01c806301ffc9a7146102c25780631459457a146102f757806314d9230714610319578063189ca3161461033957806318b9baa1146103595780631bc3a67314610379578063241f9e2b1461039b578063248a9ca3146103c957806324a697a3146103e957806325d3155e146104095780632f2ff15d1461041e578063338111e71461043e57806336568abe1461045e57806336a7c1341461047e57806338e454b1146104935780633bb18a76146104a85780633d009cee146104c857806347b0b33e146104e857806348c2bd78146105085780634f1ef286146105285780634f6981ee1461053b57806352d1902d1461055b57806354fd4d5014610570578063552164ee146105a357806356f1612f146105c357806357181609146105e35780635ae1cd14146106035780635cd8a76b146106235780635f72790a1461063857806362f2947814610658578063650e8a761461066d578063675d0f8d1461068d5780636bb07c73146106ad5780636c7b69cb146106cd5780636cf88e73146106ed5780637f5e98bd1461070d578063855302011461072257806389a96d35146107425780638d2340a01461076257806391d14854146107775780639858b78a14610797578063a217fddf146107b7578063ac4aa16b146107cc578063ad3cb1cc146107ee578063af54c53a1461081f578063b7fe075a1461083f578063b8f6dba714610854578063be9412df14610876578063bfaabf311461088b578063d428cffc146108ab578063d547741f146108c0578063d5684392146108e0578063d94290e514610900578063dc404a0e14610920578063df171b0c14610940578063e2bbb15814610960578063e5ed920b14610980578063e78168b5146109a0578063e7dfe672146109c0578063f5e57b39146109e0578063f71fdc1614610a00578063f72c0d8b14610a20575b600080fd5b3480156102ce57600080fd5b506102e26102dd3660046138ea565b610a42565b60405190151581526020015b60405180910390f35b34801561030357600080fd5b50610317610312366004613930565b610a79565b005b34801561032557600080fd5b50610317610334366004613995565b610e76565b34801561034557600080fd5b506103176103543660046139b0565b61108f565b34801561036557600080fd5b506103176103743660046139c9565b61116b565b34801561038557600080fd5b5061038e611281565b6040516102ee91906139fe565b3480156103a757600080fd5b506103bb6103b6366004613a12565b61129f565b6040519081526020016102ee565b3480156103d557600080fd5b506103bb6103e43660046139b0565b6112d4565b3480156103f557600080fd5b506103176104043660046139b0565b6112f4565b34801561041557600080fd5b5061038e611384565b34801561042a57600080fd5b50610317610439366004613a3c565b6113a2565b34801561044a57600080fd5b506103bb610459366004613a12565b6113c4565b34801561046a57600080fd5b50610317610479366004613a3c565b6114f0565b34801561048a57600080fd5b506103bb611528565b34801561049f57600080fd5b5061031761153d565b3480156104b457600080fd5b506103176104c3366004613995565b6115de565b3480156104d457600080fd5b506102e26104e33660046139b0565b6116d8565b3480156104f457600080fd5b50610317610503366004613995565b611792565b34801561051457600080fd5b506102e26105233660046139b0565b61187b565b610317610536366004613aae565b611918565b34801561054757600080fd5b506103bb6105563660046139b0565b611937565b34801561056757600080fd5b506103bb6119b5565b34801561057c57600080fd5b506040805180820190915260018152603360f81b60208201525b6040516102ee9190613b77565b3480156105af57600080fd5b506103bb6105be3660046139b0565b6119d2565b3480156105cf57600080fd5b506103176105de366004613995565b6119f2565b3480156105ef57600080fd5b506103176105fe366004613995565b611adb565b34801561060f57600080fd5b5061031761061e366004613baa565b611bcd565b34801561062f57600080fd5b50610317611d2e565b34801561064457600080fd5b50610317610653366004613be6565b611d3a565b34801561066457600080fd5b506103bb611d9e565b34801561067957600080fd5b5061038e610688366004613995565b611db3565b34801561069957600080fd5b506103176106a83660046139b0565b611de4565b3480156106b957600080fd5b506103176106c83660046139b0565b611ed6565b3480156106d957600080fd5b506103176106e8366004613a3c565b611fb0565b3480156106f957600080fd5b50610317610708366004613c08565b612232565b34801561071957600080fd5b506103bb6123fe565b34801561072e57600080fd5b506103bb61073d3660046139b0565b612413565b34801561074e57600080fd5b5061031761075d3660046139b0565b612433565b34801561076e57600080fd5b5061038e612527565b34801561078357600080fd5b506102e2610792366004613a3c565b612542565b3480156107a357600080fd5b506103bb6107b2366004613a12565b612578565b3480156107c357600080fd5b506103bb600081565b3480156107d857600080fd5b506107e16125ad565b6040516102ee9190613c5b565b3480156107fa57600080fd5b50610596604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561082b57600080fd5b5061031761083a366004613995565b612619565b34801561084b57600080fd5b506103bb6126d2565b34801561086057600080fd5b506103bb600080516020613f6583398151915281565b34801561088257600080fd5b506103bb6126e7565b34801561089757600080fd5b506103176108a6366004613ca8565b6126fc565b3480156108b757600080fd5b506103bb612864565b3480156108cc57600080fd5b506103176108db366004613a3c565b612879565b3480156108ec57600080fd5b506102e26108fb366004613995565b612895565b34801561090c57600080fd5b5061031761091b3660046139b0565b6128c5565b34801561092c57600080fd5b506103bb61093b3660046139b0565b612994565b34801561094c57600080fd5b506103bb61095b3660046139b0565b6129de565b34801561096c57600080fd5b5061031761097b366004613be6565b6129fe565b34801561098c57600080fd5b5061031761099b366004613baa565b612b97565b3480156109ac57600080fd5b506103bb6109bb3660046139b0565b612ce7565b3480156109cc57600080fd5b506103176109db366004613be6565b612d07565b3480156109ec57600080fd5b506102e26109fb3660046139b0565b612dc8565b348015610a0c57600080fd5b50610317610a1b366004613a3c565b612e0c565b348015610a2c57600080fd5b506103bb600080516020613fa583398151915281565b60006001600160e01b03198216637965db0b60e01b1480610a7357506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000610a83612ef6565b805490915060ff600160401b82041615906001600160401b0316600081158015610aaa5750825b90506000826001600160401b03166001148015610ac65750303b155b905081158015610ad4575080155b15610af25760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610b1b57845460ff60401b1916600160401b1785555b6001600160a01b038a16610b8f5760405162461bcd60e51b815260206004820152603060248201527f52656c6179657252657761726473506f6f6c3a2061646d696e2063616e6e6f7460448201526f206265207a65726f206164647265737360801b60648201526084015b60405180910390fd5b6001600160a01b038916610c015760405162461bcd60e51b815260206004820152603360248201527f52656c6179657252657761726473506f6f6c3a2075706772616465722063616e6044820152726e6f74206265207a65726f206164647265737360681b6064820152608401610b86565b6001600160a01b038816610c6f5760405162461bcd60e51b815260206004820152602f60248201527f52656c6179657252657761726473506f6f6c3a20623374722063616e6e6f742060448201526e6265207a65726f206164647265737360881b6064820152608401610b86565b6001600160a01b038716610ce25760405162461bcd60e51b815260206004820152603460248201527f52656c6179657252657761726473506f6f6c3a20656d697373696f6e732063616044820152736e6e6f74206265207a65726f206164647265737360601b6064820152608401610b86565b6001600160a01b038616610d5d5760405162461bcd60e51b815260206004820152603c60248201527f52656c6179657252657761726473506f6f6c3a2078416c6c6f636174696f6e5660448201527b6f74696e672063616e6e6f74206265207a65726f206164647265737360201b6064820152608401610b86565b610d65612f1a565b610d6d612f24565b610d75612f1a565b610d8060008b612f34565b50610d99600080516020613fa58339815191528a612f34565b50610db2600080516020613f658339815191528b612f34565b506000610dbd612fd5565b80546001600160a01b03808c166001600160a01b0319928316178355600180840180548d8416908516179055600284018054928c1692909316919091179091556003600b830155600c820155600a60108201556064601182015568056bc75e2d63100000601282015562069780600f90910155508315610e6a57845460ff60401b19168555604051600080516020613f8583398151915290610e6190600190613d6a565b60405180910390a15b50505050505050505050565b6001600160a01b0381163314801590610ea45750610ea2600080516020613f6583398151915233612542565b155b8015610eb85750610eb6600033612542565b155b15610eda573381604051630147b5b160e31b8152600401610b86929190613d7e565b6000610ee4612fd5565b6001600160a01b0383166000908152600d8201602052604090205490915060ff16610f24578160405163138cb58960e31b8152600401610b8691906139fe565b6001600160a01b0382166000908152600d820160205260408120805460ff191690555b600e82015481101561105657826001600160a01b031682600e018281548110610f7257610f72613d98565b6000918252602090912001546001600160a01b03160361104457600e82018054610f9e90600190613dc4565b81548110610fae57610fae613d98565b600091825260209091200154600e830180546001600160a01b039092169183908110610fdc57610fdc613d98565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600e0180548061101d5761101d613dd7565b600082815260209020810160001990810180546001600160a01b0319169055019055611056565b8061104e81613ded565b915050610f47565b506040516001600160a01b038316907f490a66cc56c789979052c7052fc0c10a6c4627d8e6165caec80db97a4c38352190600090a25050565b600080516020613f658339815191526110a88133612542565b806110b957506110b9600033612542565b6110d55760405162461bcd60e51b8152600401610b8690613e06565b81600003611113576040516305519d6f60e51b815260206004820152600a6024820152691d9bdd1955d95a59da1d60b21b6044820152606401610b86565b600061111d612fd5565b600b8101805490859055604051919250907fc6d810f6c3aa465110416db0d540c72fcfe818503d1580fd90df38a482f81af89061115d9086908490613e63565b60405180910390a150505050565b600080516020613f658339815191526111848133612542565b806111955750611195600033612542565b6111b15760405162461bcd60e51b8152600401610b8690613e06565b60006111bb612fd5565b600086815260168201602090815260408083206001600160a01b0389168452825280832087845290915290205490915060ff1615611225576040516313aa2f7760e11b81526001600160a01b03851660048201526024810186905260448101849052606401610b86565b600085815260168201602090815260408083206001600160a01b038816845282528083208684529091529020805460ff19166001908117909155600b82015461126f918791612ff9565b61127a8186866131a4565b5050505050565b60008061128c612fd5565b600201546001600160a01b031692915050565b6000806112aa612fd5565b6000938452600401602090815260408085206001600160a01b039690961685529490525050205490565b6000806112df6132dc565b60009384526020525050604090206001015490565b600080516020613f6583398151915261130d8133612542565b8061131e575061131e600033612542565b61133a5760405162461bcd60e51b8152600401610b8690613e06565b6000611344612fd5565b600f8101805490859055604051919250907f9f49ab705704ba5579e12282116057bb42856ad21fc913b1786bf1effc722b8d9061115d9086908490613e63565b60008061138f612fd5565b600101546001600160a01b031692915050565b6113ab826112d4565b6113b481613300565b6113be8383612f34565b50505050565b6000806113cf612fd5565b604051631e804e7760e11b8152600481018590529091503090633d009cee90602401602060405180830381865afa15801561140e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114329190613e71565b611440576000915050610a73565b600083815260088201602090815260408083206001600160a01b038816845290915290205460ff1615611477576000915050610a73565b600083815260058201602090815260408083206001600160a01b038816845282528083205486845260078501835281842054600386019093529220548215806114be575081155b156114d0576000945050505050610a73565b816114db8483613e93565b6114e59190613eaa565b979650505050505050565b6001600160a01b03811633146115195760405163334bd91960e11b815260040160405180910390fd5b611523828261330d565b505050565b600080611533612fd5565b6012015492915050565b60036000611549612ef6565b8054909150600160401b900460ff1680611570575080546001600160401b03808416911610155b1561158e5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b1760ff60401b19168155604051600080516020613f85833981519152906115d2908490613d6a565b60405180910390a15050565b600080516020613f658339815191526115f78133612542565b806116085750611608600033612542565b6116245760405162461bcd60e51b8152600401610b8690613e06565b6001600160a01b038216611676576040516305519d6f60e51b815260206004820152601860248201527778416c6c6f636174696f6e566f74696e674164647265737360401b6044820152606401610b86565b6000611680612fd5565b6002810180546001600160a01b038681166001600160a01b03198316811790935560405193945016918291907f897acaec25783ce4cf8ff29c16715e089a40d285e2e5d6fcf567af00f471425990600090a350505050565b6000806116e3612fd5565b600181015460405163e52ef17f60e01b8152600481018690529192506001600160a01b03169063e52ef17f90602401602060405180830381865afa92505050801561174b575060408051601f3d908101601f1916820190925261174891810190613e71565b60015b6117585750600092915050565b80611767575060009392505050565b506000928352600781016020908152604080852054600a909301909152909220549190911015919050565b600080516020613f658339815191526117ab8133612542565b806117bc57506117bc600033612542565b6117d85760405162461bcd60e51b8152600401610b8690613e06565b6001600160a01b03821661181d576040516305519d6f60e51b815260206