0 txs
287 calls
constructor
constructor()
functions
airdrops
viewfunction airdrops(bytes32) view returns (address token, bytes32 root, uint256 totalAmount, uint256 claimedAmount, uint128 startTimestamp, uint128 endTimestamp, bool isActive)
checkProof
viewfunction checkProof(bytes32 id, address user, uint256 amount, bytes32[] proof) view returns (bool)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getAirdrop
viewfunction getAirdrop(bytes32 id) view returns (tuple)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isClaimed
viewfunction isClaimed(bytes32, address) view returns (bool)
isUserClaimed
viewfunction isUserClaimed(address user, bytes32[] ids) view returns (bool[])
MAINTAINER_ROLE
viewfunction MAINTAINER_ROLE() view returns (bytes32)
paused
viewfunction paused() view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
UPGRADER_ROLE
viewfunction UPGRADER_ROLE() view returns (bytes32)
batchClaimRewards
nonpayablefunction batchClaimRewards(bytes32[] ids, address[] users, uint256[] amounts, bytes32[][] proofs)
claimRewards
nonpayablefunction claimRewards(bytes32 id, address user, uint256 amount, bytes32[] proof)
createAirdrop
nonpayablefunction createAirdrop(bytes32 id, address token, bytes32 root, uint256 totalAmount, uint128 startTimestamp, uint128 endTimestamp)
disperseToken
nonpayablefunction disperseToken(address token, address[] recipients, uint256[] values)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _admin, address _maintainer)
pause
nonpayablefunction pause()
pauseAirdropById
nonpayablefunction pauseAirdropById(bytes32 id)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
unpause
nonpayablefunction unpause()
updateAirdrop
nonpayablefunction updateAirdrop(bytes32 id, address token, bytes32 root, uint256 totalAmount, uint128 startTimestamp, uint128 endTimestamp)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AirdropClaimed
event AirdropClaimed(bytes32 id, address user, address token, uint256 amount)
AirdropCreated
event AirdropCreated(bytes32 id, address token, bytes32 root, uint256 totalAmount, uint128 startTimestamp, uint128 endTimestamp)
AirdropPaused
event AirdropPaused(bytes32 id)
AirdropUpdated
event AirdropUpdated(bytes32 id, address token, bytes32 root, uint256 totalAmount, uint128 startTimestamp, uint128 endTimestamp)
Initialized
event Initialized(uint64 version)
Paused
event Paused(address account)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AirdropAlreadyClaimed
error AirdropAlreadyClaimed(bytes32 id)
AirdropAlreadyExists
error AirdropAlreadyExists(bytes32 id)
AirdropDoesNotExist
error AirdropDoesNotExist(bytes32 id)
AirdropIsNotActive
error AirdropIsNotActive(bytes32 id)
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InvalidAdminOrMaintainer
error InvalidAdminOrMaintainer()
InvalidAirdropAmount
error InvalidAirdropAmount()
InvalidAirdropParameters
error InvalidAirdropParameters()
InvalidInitialization
error InvalidInitialization()
InvalidProof
error InvalidProof()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612c256100f95f395f8181611c6301528181611c8c0152611e7c0152612c255ff3fe6080604052600436106101a4575f3560e01c806391d14854116100e7578063d75b9d7211610087578063ee583c6911610062578063ee583c691461068d578063f72c0d8b14610769578063f76bff191461079c578063f8742254146107bb575f5ffd5b8063d75b9d7214610630578063ed425b7b1461064f578063ee1e38fa1461066e575f5ffd5b8063c73a2d60116100c2578063c73a2d60146105b4578063cb6f72fb146105d3578063d3e59925146105f2578063d547741f14610611575f5ffd5b806391d14854146104e9578063a217fddf1461054c578063ad3cb1cc1461055f575f5ffd5b8063485cc955116101525780635c975abb1161012d5780635c975abb146102fd5780635ce32aca146103335780638456cb591461049c57806384ef71fb146104b0575f5ffd5b8063485cc955146102b75780634f1ef286146102d657806352d1902d146102e9575f5ffd5b806336568abe1161018257806336568abe146102585780633a1beea8146102775780633f4ba83a146102a3575f5ffd5b806301ffc9a7146101a8578063248a9ca3146101dc5780632f2ff15d14610237575b5f5ffd5b3480156101b3575f5ffd5b506101c76101c236600461258b565b6107ee565b60405190151581526020015b60405180910390f35b3480156101e7575f5ffd5b506102296101f63660046125ca565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101d3565b348015610242575f5ffd5b506102566102513660046125f5565b610886565b005b348015610263575f5ffd5b506102566102723660046125f5565b6108cf565b348015610282575f5ffd5b5061029661029136600461266b565b610920565b6040516101d391906126bc565b3480156102ae575f5ffd5b506102566109fe565b3480156102c2575f5ffd5b506102566102d1366004612700565b610a33565b6102566102e4366004612759565b610c6a565b3480156102f4575f5ffd5b50610229610c89565b348015610308575f5ffd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101c7565b34801561033e575f5ffd5b5061041861034d3660046125ca565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152505f9081526020818152604091829020825160e08101845281546001600160a01b031681526001820154928101929092526002810154928201929092526003820154606082015260048201546fffffffffffffffffffffffffffffffff80821660808401527001000000000000000000000000000000009091041660a082015260059091015460ff16151560c082015290565b6040516101d391905f60e0820190506001600160a01b0383511682526020830151602083015260408301516040830152606083015160608301526fffffffffffffffffffffffffffffffff60808401511660808301526fffffffffffffffffffffffffffffffff60a08401511660a083015260c0830151151560c083015292915050565b3480156104a7575f5ffd5b50610256610cb7565b3480156104bb575f5ffd5b506101c76104ca3660046125f5565b600160209081525f928352604080842090915290825290205460ff1681565b3480156104f4575f5ffd5b506101c76105033660046125f5565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b348015610557575f5ffd5b506102295f81565b34801561056a575f5ffd5b506105a76040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101d3919061287e565b3480156105bf575f5ffd5b506102566105ce3660046128ce565b610ce9565b3480156105de575f5ffd5b506102566105ed3660046125ca565b610dda565b3480156105fd575f5ffd5b5061025661060c366004612950565b610ea7565b34801561061c575f5ffd5b5061025661062b3660046125f5565b6111f4565b34801561063b575f5ffd5b5061025661064a3660046129bc565b611237565b34801561065a575f5ffd5b506101c7610669366004612950565b611653565b348015610679575f5ffd5b50610256610688366004612a19565b6116cf565b348015610698575f5ffd5b506107136106a73660046125ca565b5f602081905290815260409020805460018201546002830154600384015460048501546005909501546001600160a01b03909416949293919290916fffffffffffffffffffffffffffffffff808316927001000000000000000000000000000000009004169060ff1687565b604080516001600160a01b03909816885260208801969096529486019390935260608501919091526fffffffffffffffffffffffffffffffff90811660808501521660a0830152151560c082015260e0016101d3565b348015610774575f5ffd5b506102297f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b3480156107a7575f5ffd5b506102566107b63660046129bc565b611774565b3480156107c6575f5ffd5b506102297f339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab9581565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061088057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546108bf81611a2a565b6108c98383611a34565b50505050565b6001600160a01b0381163314610911576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61091b8282611b00565b505050565b60605f8267ffffffffffffffff81111561093c5761093c61272c565b604051908082528060200260200182016040528015610965578160200160208202803683370190505b5090505f5b838110156109f35760015f86868481811061098757610987612ae7565b9050602002013581526020019081526020015f205f876001600160a01b03166001600160a01b031681526020019081526020015f205f9054906101000a900460ff168282815181106109db576109db612ae7565b9115156020928302919091019091015260010161096a565b5090505b9392505050565b7f339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95610a2881611a2a565b610a30611ba4565b50565b5f610a3c611c16565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015610a685750825b90505f8267ffffffffffffffff166001148015610a845750303b155b905081158015610a92575080155b15610ac9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610b2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610b32611c3e565b610b3a611c3e565b610b42611c3e565b610b4a611c48565b6001600160a01b0387161580610b6757506001600160a01b038616155b15610b9e576040517feeca48ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ba85f88611a34565b50610bd37f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e388611a34565b50610bfe7f339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab9587611a34565b508315610c615784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b610c72611c58565b610c7b82611d28565b610c858282611d52565b5050565b5f610c92611e71565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95610ce181611a2a565b610a30611ed3565b7f339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95610d1381611a2a565b5f805b85811015610d4c57848482818110610d3057610d30612ae7565b9050602002013582610d429190612b41565b9150600101610d16565b50610d626001600160a01b038816333084611f2e565b5f5b85811015610dd057610dc8878783818110610d8157610d81612ae7565b9050602002016020810190610d969190612b54565b868684818110610da857610da8612ae7565b905060200201358a6001600160a01b0316611faa9092919063ffffffff16565b600101610d64565b5050505050505050565b7f339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95610e0481611a2a565b5f828152602081905260409020546001600160a01b0316610e59576040517f95ecd7c2000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b5f8281526020818152604091829020600501805460ff1916905590518381527fdd0a3de6923fc0ffe8904cd87a7beedffbae84374cdc165c6c3ea3d59aeb98dc910160405180910390a15050565b610eaf611fdb565b610eb761205c565b5f8581526020819052604090206005015460ff16610f04576040517f83bdc2b000000000000000000000000000000000000000000000000000000000815260048101869052602401610e50565b5f8581526001602090815260408083206001600160a01b038816845290915290205460ff1615610f63576040517f3f133fbf00000000000000000000000000000000000000000000000000000000815260048101869052602401610e50565b5f858152602081905260409020831580610f805750806002015484115b15610fb7576040517fee9b5f8f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810154426fffffffffffffffffffffffffffffffff909116118061100757506004810154427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff16105b15611041576040517f83bdc2b000000000000000000000000000000000000000000000000000000000815260048101879052602401610e50565b60018101546040805160208082018a90526001600160a01b0389168284015260608083018990528351808403909101815260808301845280519082012060a0808401919091528351808403909101815260c090920190925280519101206110e091905b8585808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152509294939250506120b89050565b611116576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8681526001602081815260408084206001600160a01b038a1685529091528220805460ff19169091179055600382018054869290611156908490612b41565b90915550508054611171906001600160a01b03168686611faa565b8054604080518881526001600160a01b0388811660208301529092168282015260608201869052517f98ec2fa69acaa50843d4f5cb9a02b648cb106efd615497891547101831e8a3dd9181900360800190a1506111ed60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461122d81611a2a565b6108c98383611b00565b7f339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab9561126181611a2a565b5f878152602081905260409020546001600160a01b03166112b1576040517f95ecd7c200000000000000000000000000000000000000000000000000000000815260048101889052602401610e50565b6001600160a01b03861615806112c5575083155b806112ce575084155b15611305576040517f76f54d1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f8981526020019081526020015f206040518060e00160405290815f82015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016004820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001600582015f9054906101000a900460ff16151515158152505090506040518060e00160405280886001600160a01b0316815260200187815260200186815260200182606001518152602001856fffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff1681526020018260c0015115158152505f5f8a81526020019081526020015f205f820151815f015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060a08201518160040160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060c0820151816005015f6101000a81548160ff02191690831515021790555090505084816040015110156115b4576115af333083604001518861159d9190612b6f565b6001600160a01b038b16929190611f2e565b6115d9565b6115d9338683604001516115c89190612b6f565b6001600160a01b038a169190611faa565b604080518981526001600160a01b0389166020820152908101879052606081018690526fffffffffffffffffffffffffffffffff8086166080830152841660a08201527f30eef5853f712239142a70278f93f9ebe794bb52c2d76d8d95cd6d7e9c4f39c29060c00160405180910390a15050505050505050565b5f858152602081815260408083206001015481518084018a90526001600160a01b0389168184015260608082018990528351808303909101815260808201845280519085012060a0808301919091528351808303909101815260c0909101909252815191909201206116c591906110a4565b9695505050505050565b6116d761205c565b5f5b87811015611769576117618989838181106116f6576116f6612ae7565b9050602002013588888481811061170f5761170f612ae7565b90506020020160208101906117249190612b54565b87878581811061173657611736612ae7565b9050602002013586868681811061174f5761174f612ae7565b905060200281019061060c9190612b82565b6001016116d9565b505050505050505050565b7f339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab9561179e81611a2a565b5f878152602081905260409020546001600160a01b0316156117ef576040517ffd88e38f00000000000000000000000000000000000000000000000000000000815260048101889052602401610e50565b6001600160a01b0386161580611803575083155b8061180c575084155b15611843576040517f76f54d1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060e00160405280876001600160a01b031681526020018681526020018581526020015f8152602001846fffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff168152602001600115158152505f5f8981526020019081526020015f205f820151815f015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060a08201518160040160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060c0820151816005015f6101000a81548160ff0219169083151502179055509050506119bd333086896001600160a01b0316611f2e909392919063ffffffff16565b604080518881526001600160a01b0388166020820152908101869052606081018590526fffffffffffffffffffffffffffffffff8085166080830152831660a08201527f6947b8f7737b1aa4a8fe8d998d77ddaef53180f472cba4b75fcbf26f4089089d9060c001610c58565b610a3081336120f3565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611af7575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611aad3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610880565b5f915050610880565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611af7575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610880565b611bac61217f565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610880565b611c466121da565b565b611c506121da565b611c46612218565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cf157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ce57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c46576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3610c8581611a2a565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611dca575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611dc791810190612be6565b60015b611e0b576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610e50565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611e67576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610e50565b61091b8383612220565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c46576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611edb61205c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611bf8565b6040516001600160a01b0384811660248301528381166044830152606482018390526108c99186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612275565b6040516001600160a01b0383811660248301526044820183905261091b91859182169063a9059cbb90606401611f63565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612056576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c46576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f826120c485846122fa565b14949350505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610c85576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610e50565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c46576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121e261233c565b611c46576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120cd6121da565b6122298261235a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561226d5761091b8282612401565b610c85612473565b5f5f60205f8451602086015f885af180612294576040513d5f823e3d81fd5b50505f513d915081156122ab5780600114156122b8565b6001600160a01b0384163b155b156108c9576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610e50565b5f81815b84518110156123345761232a8286838151811061231d5761231d612ae7565b60200260200101516124ab565b91506001016122fe565b509392505050565b5f612345611c16565b5468010000000000000000900460ff16919050565b806001600160a01b03163b5f036123a8576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610e50565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161241d9190612bfd565b5f60405180830381855af49150503d805f8114612455576040519150601f19603f3d011682016040523d82523d5f602084013e61245a565b606091505b509150915061246a8583836124d4565b95945050505050565b3415611c46576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8183106124c5575f8281526020849052604090206109f7565b505f9182526020526040902090565b6060826124e9576124e482612549565b6109f7565b815115801561250057506001600160a01b0384163b155b15612542576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610e50565b50806109f7565b8051156125595780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6020828403121561259b575f5ffd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146109f7575f5ffd5b5f602082840312156125da575f5ffd5b5035919050565b6001600160a01b0381168114610a30575f5ffd5b5f5f60408385031215612606575f5ffd5b823591506020830135612618816125e1565b809150509250929050565b5f5f83601f840112612633575f5ffd5b50813567ffffffffffffffff81111561264a575f5ffd5b6020830191508360208260051b8501011115612664575f5ffd5b9250929050565b5f5f5f6040848603121561267d575f5ffd5b8335612688816125e1565b9250602084013567ffffffffffffffff8111156126a3575f5ffd5b6126af86828701612623565b9497909650939450505050565b602080825282518282018190525f918401906040840190835b818110156126f557835115158352602093840193909201916001016126d5565b509095945050505050565b5f5f60408385031215612711575f5ffd5b823561271c816125e1565b91506020830135612618816125e1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f5f6040838503121561276a575f5ffd5b8235612775816125e1565b9150602083013567ffffffffffffffff811115612790575f5ffd5b8301601f810185136127a0575f5ffd5b803567ffffffffffffffff8111156127ba576127ba61272c565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156128265761282661272c565b60405281815282820160200187101561283d575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5b8381101561287657818101518382015260200161285e565b50505f910152565b602081525f825180602084015261289c81604085016020870161285c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b5f5f5f5f5f606086880312156128e2575f5ffd5b85356128ed816125e1565b9450602086013567ffffffffffffffff811115612908575f5ffd5b61291488828901612623565b909550935050604086013567ffffffffffffffff811115612933575f5ffd5b61293f88828901612623565b969995985093965092949392505050565b5f5f5f5f5f60808688031215612964575f5ffd5b853594506020860135612976816125e1565b935060408601359250606086013567ffffffffffffffff811115612933575f5ffd5b80356fffffffffffffffffffffffffffffffff811681146129b7575f5ffd5b919050565b5f5f5f5f5f5f60c087890312156129d1575f5ffd5b8635955060208701356129e3816125e1565b945060408701359350606087013592506129ff60808801612998565b9150612a0d60a08801612998565b90509295509295509295565b5f5f5f5f5f5f5f5f6080898b031215612a30575f5ffd5b883567ffffffffffffffff811115612a46575f5ffd5b612a528b828c01612623565b909950975050602089013567ffffffffffffffff811115612a71575f5ffd5b612a7d8b828c01612623565b909750955050604089013567ffffffffffffffff811115612a9c575f5ffd5b612aa88b828c01612623565b909550935050606089013567ffffffffffffffff811115612ac7575f5ffd5b612ad38b828c01612623565b999c989b5096995094979396929594505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561088057610880612b14565b5f60208284031215612b64575f5ffd5b81356109f7816125e1565b8181038181111561088057610880612b14565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612bb5575f5ffd5b83018035915067ffffffffffffffff821115612bcf575f5ffd5b6020019150600581901b3603821315612664575f5ffd5b5f60208284031215612bf6575f5ffd5b5051919050565b5f8251612c0e81846020870161285c565b919091019291505056fea164736f6c634300081d000a