11 txs
634 calls
constructor
constructor(address entropyAddress, address payoutTokenAddress)
functions
claims
viewfunction claims(uint64) view returns (address requester, uint256 roundId, uint256 payout)
defaultBoxProbBp
viewfunction defaultBoxProbBp(uint256) view returns (uint256)
defaultValueShareBp
viewfunction defaultValueShareBp(uint256) view returns (uint256)
entropy
viewfunction entropy() view returns (address)
getEntropyFee
viewfunction getEntropyFee() view returns (uint256)
getRoundPayoutRemaining
viewfunction getRoundPayoutRemaining(uint256 roundId) view returns (uint256)
getRoundTiers
viewfunction getRoundTiers(uint256 roundId) view returns (tuple[])
manager
viewfunction manager() view returns (address)
MAX_BOXES_PER_REQUEST
viewfunction MAX_BOXES_PER_REQUEST() view returns (uint256)
owner
viewfunction owner() view returns (address)
payoutToken
viewfunction payoutToken() view returns (address)
requests
viewfunction requests(uint64) view returns (address requester, uint256 roundId, uint256 count, bool claimed)
rounds
viewfunction rounds(uint256) view returns (uint256 roundId, uint256 totalBoxes, uint256 totalPayout, uint256 availableToReserve, bool initialized)
seeds
viewfunction seeds(uint64) view returns (bytes32)
totalClaimedPerRound
viewfunction totalClaimedPerRound(uint256) view returns (uint256)
totalClaimedPerUser
viewfunction totalClaimedPerUser(uint256, address) view returns (uint256)
totalPaidPerRound
viewfunction totalPaidPerRound(uint256) view returns (uint256)
totalPaidToUser
viewfunction totalPaidToUser(uint256, address) view returns (uint256)
_entropyCallback
nonpayablefunction _entropyCallback(uint64 sequence, address provider, bytes32 randomNumber)
claimPayment
nonpayablefunction claimPayment(uint64 sequenceNumber)
initRound
nonpayablefunction initRound(uint256 roundId, uint256 totalBoxes, uint256 totalPayout)
reclaimETH
nonpayablefunction reclaimETH(address to, uint256 amount)
reclaimRemainingPayout
nonpayablefunction reclaimRemainingPayout(uint256 roundId, address to) returns (uint256 reclaimedAmount)
renounceOwnership
nonpayablefunction renounceOwnership()
requestLootboxes
payablefunction requestLootboxes(uint256 roundId, address requester, uint256 count) payable returns (uint64 sequenceNumber)
rescueTokens
nonpayablefunction rescueTokens(address token, uint256 amount)
setManager
nonpayablefunction setManager(address managerAddress)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateDefaultConfigs
nonpayablefunction updateDefaultConfigs(uint256[] boxProbBp, uint256[] valueShareBp)
events
DefaultConfigsUpdated
event DefaultConfigsUpdated()
EntropyFulfilled
event EntropyFulfilled(uint64 indexed seq, address indexed provider, bytes32 seed)
LootClaimed
event LootClaimed(uint64 indexed seq, address indexed claimer, uint256 roundId, uint256[] payouts)
LootRequested
event LootRequested(uint64 indexed seq, address indexed requester, uint256 roundId, uint256 count)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PaymentClaimed
event PaymentClaimed(uint64 indexed seq, address indexed claimer, uint256 roundId, uint256 payout)
ReclaimRemainingPayout
event ReclaimRemainingPayout(uint256 indexed roundId, address indexed to, uint256 reclaimedTokenAmount)
RoundInitialized
event RoundInitialized(uint256 indexed roundId, uint256 totalBoxes, uint256 totalPayout)
TiersConfigured
event TiersConfigured(uint256 indexed roundId)
errors
NoBoxesAvailable
error NoBoxesAvailable()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60c060405234801561000f575f5ffd5b50604051614ba6380380614ba683398181016040528101906100319190610323565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a2575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100999190610370565b60405180910390fd5b6100b18161020460201b60201c565b50600180819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011e906103e3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018c9061044b565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250505050610469565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102f2826102c9565b9050919050565b610302816102e8565b811461030c575f5ffd5b50565b5f8151905061031d816102f9565b92915050565b5f5f60408385031215610339576103386102c5565b5b5f6103468582860161030f565b92505060206103578582860161030f565b9150509250929050565b61036a816102e8565b82525050565b5f6020820190506103835f830184610361565b92915050565b5f82825260208201905092915050565b7f656e74726f70792061646472207a65726f0000000000000000000000000000005f82015250565b5f6103cd601183610389565b91506103d882610399565b602082019050919050565b5f6020820190508181035f8301526103fa816103c1565b9050919050565b7f746f6b656e2061646472207a65726f00000000000000000000000000000000005f82015250565b5f610435600f83610389565b915061044082610401565b602082019050919050565b5f6020820190508181035f83015261046281610429565b9050919050565b60805160a0516146eb6104bb5f395f818161083901528181610c8a01528181610dfe01528181610f8e0152611fd601525f818161096d01528181610f4501528181612070015261227f01526146eb5ff3fe6080604052600436106101c1575f3560e01c80637910c3c9116100f6578063b2b261d211610094578063d0ebdbe711610063578063d0ebdbe7146106a6578063dba17712146106ce578063f2ea4387146106f8578063f2fde38b14610734576101c1565b8063b2b261d2146105ca578063bb92e825146105f2578063c2f1c3071461062e578063c6e5e1aa1461066a576101c1565b80638f532dbf116100d05780638f532dbf146104ee578063a9fe2c9914610516578063acc361b114610552578063ae7d96601461058e576101c1565b80637910c3c9146104485780638c65c81f146104845780638da5cb5b146104c4576101c1565b806347ce07cc1161016357806352a5f1f81161013d57806352a5f1f8146103b25780635391945f146103da578063573761981461040a578063715018a614610432576101c1565b806347ce07cc14610334578063481c6a751461035e5780634efa82b614610388576101c1565b806335dfdef31161019f57806335dfdef31461026957806337965471146102915780633c370ebd146102b9578063411010ec146102f5576101c1565b806319af6b17146101c557806327adb7d7146102015780632d971e631461023f575b5f5ffd5b3480156101d0575f5ffd5b506101eb60048036038101906101e69190612fbf565b61075c565b6040516101f8919061300c565b60405180910390f35b34801561020c575f5ffd5b5061022760048036038101906102229190613062565b610925565b6040516102369392919061309c565b60405180910390f35b34801561024a575f5ffd5b5061025361096a565b604051610260919061300c565b60405180910390f35b348015610274575f5ffd5b5061028f600480360381019061028a91906130d1565b610a0f565b005b34801561029c575f5ffd5b506102b760048036038101906102b29190613062565b610bdf565b005b3480156102c4575f5ffd5b506102df60048036038101906102da9190613121565b610eae565b6040516102ec919061300c565b60405180910390f35b348015610300575f5ffd5b5061031b60048036038101906103169190613062565b610eec565b60405161032b9493929190613166565b60405180910390f35b34801561033f575f5ffd5b50610348610f43565b6040516103559190613204565b60405180910390f35b348015610369575f5ffd5b50610372610f67565b60405161037f919061321d565b60405180910390f35b348015610393575f5ffd5b5061039c610f8c565b6040516103a99190613256565b60405180910390f35b3480156103bd575f5ffd5b506103d860048036038101906103d391906132a2565b610fb0565b005b6103f460048036038101906103ef91906132f2565b6110a8565b6040516104019190613351565b60405180910390f35b348015610415575f5ffd5b50610430600480360381019061042b919061336a565b61114c565b005b34801561043d575f5ffd5b50610446611183565b005b348015610453575f5ffd5b5061046e60048036038101906104699190612fbf565b611196565b60405161047b919061300c565b60405180910390f35b34801561048f575f5ffd5b506104aa60048036038101906104a59190613121565b6111b6565b6040516104bb9594939291906133a8565b60405180910390f35b3480156104cf575f5ffd5b506104d86111f4565b6040516104e5919061321d565b60405180910390f35b3480156104f9575f5ffd5b50610514600480360381019061050f919061345a565b61121b565b005b348015610521575f5ffd5b5061053c60048036038101906105379190613121565b611496565b604051610549919061300c565b60405180910390f35b34801561055d575f5ffd5b5061057860048036038101906105739190613121565b6114ab565b604051610585919061300c565b60405180910390f35b348015610599575f5ffd5b506105b460048036038101906105af9190613121565b6114cb565b6040516105c1919061300c565b60405180910390f35b3480156105d5575f5ffd5b506105f060048036038101906105eb9190613513565b6114e0565b005b3480156105fd575f5ffd5b5061061860048036038101906106139190612fbf565b611646565b604051610625919061300c565b60405180910390f35b348015610639575f5ffd5b50610654600480360381019061064f9190613062565b611666565b6040516106619190613560565b60405180910390f35b348015610675575f5ffd5b50610690600480360381019061068b9190613121565b61167b565b60405161069d9190613683565b60405180910390f35b3480156106b1575f5ffd5b506106cc60048036038101906106c791906136a3565b611712565b005b3480156106d9575f5ffd5b506106e26117cb565b6040516106ef919061300c565b60405180910390f35b348015610703575f5ffd5b5061071e60048036038101906107199190613121565b6117d0565b60405161072b919061300c565b60405180910390f35b34801561073f575f5ffd5b5061075a600480360381019061075591906136a3565b6117f0565b005b5f610765611874565b5f60065f8581526020019081526020015f209050806005015f9054906101000a900460ff166107c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c090613728565b60405180910390fd5b5f8160020154905060025f8681526020019081526020015f2054816107ee9190613773565b92505f8303610832576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610829906137f0565b60405180910390fd5b61087d84847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166118fb9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16857f7fbe80fc045042c2c90eba2b8ac2d6ea8b498f1cde4dcfea6b1d21d0e7d00c60856040516108c4919061300c565b60405180910390a360065f8681526020019081526020015f205f5f82015f9055600182015f9055600282015f9055600382015f9055600482015f6109089190612e67565b600582015f6101000a81549060ff02191690555050505092915050565b6007602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638204b67a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f89190613853565b6fffffffffffffffffffffffffffffffff16905090565b610a17611874565b5f8203610a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a50906138c8565b60405180910390fd5b5f8103610a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9290613930565b60405180910390fd5b5f600a8054905003610ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad990613998565b60405180910390fd5b5f8390505f60065f8381526020019081526020015f209050806005015f9054906101000a900460ff1615610b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4290613a00565b60405180910390fd5b81815f01819055508381600101819055508281600201819055508381600301819055506001816005015f6101000a81548160ff021916908315150217905550817f984917a0a0fe4e02ef7ad194cb0292b5d8753a694115b6b109562161b2988cff8585604051610bbc929190613a1e565b60405180910390a2610bcf81858561197a565b610bd883611fce565b5050505050565b610be761201e565b5f60075f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f826002015490505f8103610c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7690613a8f565b60405180910390fd5b5f836001015490505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ce1919061321d565b602060405180830381865afa158015610cfc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d209190613ac1565b9050808311610d2f5782610d31565b805b925060075f8767ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f5f82015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f905550505f8314610e43578260055f8481526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610df09190613aec565b92505081905550610e4284847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166118fb9092919063ffffffff16565b5b8373ffffffffffffffffffffffffffffffffffffffff168667ffffffffffffffff167f3014a34b3d00c6c31b7749b785098fa3e16f4d3011590095e45b5d99d724e9478486604051610e96929190613a1e565b60405180910390a35050505050610eab612064565b50565b5f5f60065f8481526020019081526020015f20905060025f8481526020019081526020015f20548160020154610ee49190613773565b915050919050565b6008602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015490806003015f9054906101000a900460ff16905084565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610fb961206d565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102090613b69565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90613bf7565b60405180910390fd5b6110a2848484612094565b50505050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90613c5f565b60405180910390fd5b611143848484612125565b90509392505050565b611154611874565b61117f33828473ffffffffffffffffffffffffffffffffffffffff166118fb9092919063ffffffff16565b5050565b61118b611874565b6111945f612466565b565b6005602052815f5260405f20602052805f5260405f205f91509150505481565b6006602052805f5260405f205f91509050805f015490806001015490806002015490806003015490806005015f9054906101000a900460ff16905085565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611223611874565b5f73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a990613cc7565b60405180910390fd5b8181905084849050146112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613d2f565b60405180910390fd5b5f848490500361133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133690613d97565b60405180910390fd5b5f8484905090505f5f90505f5f90505f5f90505b838110156113b45787878281811061136e5761136d613db5565b5b90506020020135836113809190613aec565b925085858281811061139557611394613db5565b5b90506020020135826113a79190613aec565b9150806001019050611353565b5061271082146113f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f090613e2c565b60405180910390fd5b612710811461143d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143490613e94565b60405180910390fd5b8686600a919061144e929190612e88565b508484600b9190611460929190612e88565b507f7c3c6561e60e2662f0257d45bfaaead398f83b9588bae9ba4c8b3cec3a288fcb60405160405180910390a150505050505050565b6003602052805f5260405f205f915090505481565b600b81815481106114ba575f80fd5b905f5260205f20015f915090505481565b6002602052805f5260405f205f915090505481565b6114e8611874565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d90613efc565b60405180910390fd5b47811115611599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159090613f64565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff16826040516115be90613faf565b5f6040518083038185875af1925050503d805f81146115f8576040519150601f19603f3d011682016040523d82523d5f602084013e6115fd565b606091505b5050905080611641576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116389061400d565b60405180910390fd5b505050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b6009602052805f5260405f205f915090505481565b606060065f8381526020019081526020015f20600401805480602002602001604051908101604052809291908181526020015f905b82821015611707578382905f5260205f2090600402016040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015481525050815260200190600101906116b0565b505050509050919050565b61171a611874565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177f90614075565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b603281565b600a81815481106117df575f80fd5b905f5260205f20015f915090505481565b6117f8611874565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611868575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161185f919061321d565b60405180910390fd5b61187181612466565b50565b61187c612527565b73ffffffffffffffffffffffffffffffffffffffff1661189a6111f4565b73ffffffffffffffffffffffffffffffffffffffff16146118f9576118bd612527565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016118f0919061321d565b60405180910390fd5b565b611975838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161192e929190614093565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061252e565b505050565b826004015f6119899190612e67565b5f600a8054905090505f5f90505f8267ffffffffffffffff8111156119b1576119b06140ba565b5b6040519080825280602002602001820160405280156119df5781602001602082028036833780820191505090505b5090505f5f90505b83811015611aa0575f612710600a8381548110611a0757611a06613db5565b5b905f5260205f20015488611a1b91906140e7565b611a259190614155565b9050611a666040518060400160405280600c81526020017f626f7820636f756e74733a200000000000000000000000000000000000000000815250826125c9565b80838381518110611a7a57611a79613db5565b5b6020026020010181815250508084611a929190613aec565b9350508060010190506119e7565b505f8286611aae9190613773565b90505f811115611b4b575f5f90505f600190505b85811015611b1957600a8281548110611ade57611add613db5565b5b905f5260205f200154600a8281548110611afb57611afa613db5565b5b905f5260205f2001541115611b0e578091505b806001019050611ac2565b5081838281518110611b2e57611b2d613db5565b5b60200260200101818151611b429190613aec565b91508181525050505b611b956040518060400160405280601681526020017f546f74616c2061737369676e656420626f7865733a20000000000000000000008152508285611b909190613aec565b6125c9565b5f5f90505f8567ffffffffffffffff811115611bb457611bb36140ba565b5b604051908082528060200260200182016040528015611be25781602001602082028036833780820191505090505b5090505f5f90505b86811015611ca3575f612710600b8381548110611c0a57611c09613db5565b5b905f5260205f2001548a611c1e91906140e7565b611c289190614155565b905080838381518110611c3e57611c3d613db5565b5b602002602001018181525050611c896040518060400160405280601781526020017f56616c7565205368617265732070657220546965723a20000000000000000000815250826125c9565b8084611c959190613aec565b935050806001019050611bea565b505f8288611cb19190613773565b90505f811115611d4e575f5f90505f600190505b88811015611d1c57600b8281548110611ce157611ce0613db5565b5b905f5260205f200154600b8281548110611cfe57611cfd613db5565b5b905f5260205f2001541115611d11578091505b806001019050611cc5565b5081838281518110611d3157611d30613db5565b5b60200260200101818151611d459190613aec565b91508181525050505b5f5f90505b87811015611f91575f868281518110611d6f57611d6e613db5565b5b602002602001015190505f5f8211611d87575f611dae565b81858481518110611d9b57611d9a613db5565b5b6020026020010151611dad9190614155565b5b9050611def6040518060400160405280600d81526020017f5061792070657220626f783a2000000000000000000000000000000000000000815250826125c9565b8c6004016040518060800160405280838152602001600a8681548110611e1857611e17613db5565b5b905f5260205f2001548152602001600b8681548110611e3a57611e39613db5565b5b905f5260205f200154815260200184815250908060018154018082558091505060019003905f5260205f2090600402015f909190919091505f820151815f015560208201518160010155604082015181600201556060820151816003015550505f5f90505f5f90505b83811015611ec6578282611eb79190613aec565b91508080600101915050611ea3565b50611f066040518060400160405280601681526020017f546f74616c20626f7865732070657220746965723a2000000000000000000000815250846125c9565b611f456040518060400160405280601781526020017f546f74616c207061796f75742070657220746965723a20000000000000000000815250826125c9565b611f836040518060400160405280601a81526020017f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d000000000000815250612665565b505050806001019050611d53565b50895f01547f6c294f714ba8b08784431e9d0089b7c8b4ec97c23fa411d13e3d9131130794fb60405160405180910390a250505050505050505050565b61201b3330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166126fe909392919063ffffffff16565b50565b60026001540361205a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b60018081905550565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b8060095f8567ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f20819055506120c783612780565b8173ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167f2a09b01beb06e159725b191b6a1af189fda67edbe7894829d9602fe76b3d668d836040516121189190613560565b60405180910390a3505050565b5f5f8214158015612137575060328211155b612176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216d906141cf565b60405180910390fd5b5f8490505f60065f8381526020019081526020015f209050806005015f9054906101000a900460ff166121de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d590614237565b60405180910390fd5b5f81600301540361221b576040517f458ae95900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003015484111561222f57806003015493505b5f61223861096a565b90508034101561227d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122749061429f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637b43155d826040518263ffffffff1660e01b815260040160206040518083038185885af11580156122e8573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061230d91906142d1565b935084826003015f8282546123229190613773565b9250508190555060405180608001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018681526020015f151581525060085f8667ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050508573ffffffffffffffffffffffffffffffffffffffff168467ffffffffffffffff167f21d954649f76fe7ae909e6d97ba45faf4cc009fca8ec5fe8e764a6ff1802a7fa8588604051612454929190613a1e565b60405180910390a35050509392505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f5f60205f8451602086015f885af18061254d576040513d5f823e3d81fd5b3d92505f519150505f8214612566576001811415612581565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b156125c357836040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016125ba919061321d565b60405180910390fd5b50505050565b61266182826040516024016125df92919061435c565b6040516020818303038152906040527fb60e72cc000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612cdb565b5050565b6126fb81604051602401612679919061438a565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612cdb565b50565b61277a848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401612733939291906143aa565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061252e565b50505050565b5f60085f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f826001015490505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283b90614429565b60405180910390fd5b826003015f9054906101000a900460ff1615612895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288c90614491565b60405180910390fd5b5f60095f8667ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205490505f5f1b8103612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f9906144f9565b60405180910390fd5b5f60065f8481526020019081526020015f209050806005015f9054906101000a900460ff16612966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295d90614237565b60405180910390fd5b5f856002015490505f8167ffffffffffffffff811115612989576129886140ba565b5b6040519080825280602002602001820160405280156129b75781602001602082028036833780820191505090505b5090505f60075f8a67ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f20905086815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508581600101819055505f5f90505b83811015612c57575f8682604051602001612a4d929190614557565b604051602081830303815290604052805190602001205f1c90505f612a728783612cf5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8103612b225760018b6003015f6101000a81548160ff0219169083151502179055508973ffffffffffffffffffffffffffffffffffffffff168c67ffffffffffffffff167f3525beebd202b53f76fc20196a2c75e7eabf58d53fe2f422c91b9906622c8b728b88604051612b0a92919061462a565b60405180910390a35050505050505050505050612cd8565b6001876004018281548110612b3a57612b39613db5565b5b905f5260205f2090600402016003015f828254612b579190613773565b925050819055505f876004018281548110612b7557612b74613db5565b5b905f5260205f2090600402015f0154905080868581518110612b9a57612b99613db5565b5b60200260200101818152505080856002015f828254612bb99190613aec565b925050819055508060045f8c81526020019081526020015f205f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612c1b9190613aec565b925050819055508060025f8c81526020019081526020015f205f828254612c429190613aec565b92505081905550505050806001019050612a31565b506001886003015f6101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff168967ffffffffffffffff167f3525beebd202b53f76fc20196a2c75e7eabf58d53fe2f422c91b9906622c8b728885604051612cc792919061462a565b60405180910390a350505050505050505b50565b612cf281612cea612e3d612e5c565b63ffffffff16565b50565b5f5f5f846004018054905090505f5f90505b81811015612d4d57856004018181548110612d2557612d24613db5565b5b905f5260205f2090600402016003015483612d409190613aec565b9250806001019050612d07565b505f8203612d7f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92505050612e37565b5f8285612d8c9190614658565b90505f5f5f90505b83811015612e0e575f886004018281548110612db357612db2613db5565b5b905f5260205f2090600402016003015490505f8103612dd25750612e03565b8083612dde9190613aec565b841015612df357819650505050505050612e37565b8083612dff9190613aec565b9250505b806001019050612d94565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9450505050505b92915050565b5f6a636f6e736f6c652e6c6f6790505f5f835160208501845afa505050565b612ed3819050919050565b5080545f8255600402905f5260205f2090810190612e859190612edd565b50565b828054828255905f5260205f20908101928215612ec2579160200282015b82811115612ec1578235825591602001919060010190612ea6565b5b509050612ecf9190612f0f565b5090565b612edb614688565b565b5b80821115612f0b575f5f82015f9055600182015f9055600282015f9055600382015f905550600401612ede565b5090565b5b80821115612f26575f815f905550600101612f10565b5090565b5f5ffd5b5f5ffd5b5f819050919050565b612f4481612f32565b8114612f4e575f5ffd5b50565b5f81359050612f5f81612f3b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f8e82612f65565b9050919050565b612f9e81612f84565b8114612fa8575f5ffd5b50565b5f81359050612fb981612f95565b92915050565b5f5f60408385031215612fd557612fd4612f2a565b5b5f612fe285828601612f51565b9250506020612ff385828601612fab565b9150509250929050565b61300681612f32565b82525050565b5f60208201905061301f5f830184612ffd565b92915050565b5f67ffffffffffffffff82169050919050565b61304181613025565b811461304b575f5ffd5b50565b5f8135905061305c81613038565b92915050565b5f6020828403121561307757613076612f2a565b5b5f6130848482850161304e565b91505092915050565b61309681612f84565b82525050565b5f6060820190506130af5f83018661308d565b6130bc6020830185612ffd565b6130c96040830184612ffd565b949350505050565b5f5f5f606084860312156130e8576130e7612f2a565b5b5f6130f586828701612f51565b935050602061310686828701612f51565b925050604061311786828701612f51565b9150509250925092565b5f6020828403121561313657613135612f2a565b5b5f61314384828501612f51565b91505092915050565b5f8115159050919050565b6131608161314c565b82525050565b5f6080820190506131795f83018761308d565b6131866020830186612ffd565b6131936040830185612ffd565b6131a06060830184613157565b95945050505050565b5f819050919050565b5f6131cc6131c76131c284612f65565b6131a9565b612f65565b9050919050565b5f6131dd826131b2565b9050919050565b5f6131ee826131d3565b9050919050565b6131fe816131e4565b82525050565b5f6020820190506132175f8301846131f5565b92915050565b5f6020820190506132305f83018461308d565b92915050565b5f613240826131d3565b9050919050565b61325081613236565b82525050565b5f6020820190506132695f830184613247565b92915050565b5f819050919050565b6132818161326f565b811461328b575f5ffd5b50565b5f8135905061329c81613278565b92915050565b5f5f5f606084860312156132b9576132b8612f2a565b5b5f6132c68682870161304e565b93505060206132d786828701612fab565b92505060406132e88682870161328e565b9150509250925092565b5f5f5f6060848603121561330957613308612f2a565b5b5f61331686828701612f51565b935050602061332786828701612fab565b925050604061333886828701612f51565b9150509250925092565b61334b81613025565b82525050565b5f6020820190506133645f830184613342565b92915050565b5f5f604083850312156133805761337f612f2a565b5b5f61338d85828601612fab565b925050602061339e85828601612f51565b9150509250929050565b5f60a0820190506133bb5f830188612ffd565b6133c86020830187612ffd565b6133d56040830186612ffd565b6133e26060830185612ffd565b6133ef6080830184613157565b9695505050505050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261341a576134196133f9565b5b8235905067ffffffffffffffff811115613437576134366133fd565b5b60208301915083602082028301111561345357613452613401565b5b9250929050565b5f5f5f5f6040858703121561347257613471612f2a565b5b5f85013567ffffffffffffffff81111561348f5761348e612f2e565b5b61349b87828801613405565b9450945050602085013567ffffffffffffffff8111156134be576134bd612f2e565b5b6134ca87828801613405565b925092505092959194509250565b5f6134e282612f65565b9050919050565b6134f2816134d8565b81146134fc575f5ffd5b50565b5f8135905061350d816134e9565b92915050565b5f5f6040838503121561352957613528612f2a565b5b5f613536858286016134ff565b925050602061354785828601612f51565b9150509250929050565b61355a8161326f565b82525050565b5f6020820190506135735f830184613551565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6135ab81612f32565b82525050565b608082015f8201516135c55f8501826135a2565b5060208201516135d860208501826135a2565b5060408201516135eb60408501826135a2565b5060608201516135fe60608501826135a2565b50505050565b5f61360f83836135b1565b60808301905092915050565b5f602082019050919050565b5f61363182613579565b61363b8185613583565b935061364683613593565b805f5b8381101561367657815161365d8882613604565b97506136688361361b565b925050600181019050613649565b5085935050505092915050565b5f6020820190508181035f83015261369b8184613627565b905092915050565b5f602082840312156136b8576136b7612f2a565b5b5f6136c584828501612fab565b91505092915050565b5f82825260208201905092915050565b7f726f756e64206e6f7420696e69740000000000000000000000000000000000005f82015250565b5f613712600e836136ce565b915061371d826136de565b602082019050919050565b5f6020820190508181035f83015261373f81613706565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61377d82612f32565b915061378883612f32565b92508282039050818111156137a05761379f613746565b5b92915050565b7f6e6f7468696e6720746f20636c61696d000000000000000000000000000000005f82015250565b5f6137da6010836136ce565b91506137e5826137a6565b602082019050919050565b5f6020820190508181035f830152613807816137ce565b9050919050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b6138328161380e565b811461383c575f5ffd5b50565b5f8151905061384d81613829565b92915050565b5f6020828403121561386857613867612f2a565b5b5f6138758482850161383f565b91505092915050565b7f746f74616c426f7865733e3000000000000000000000000000000000000000005f82015250565b5f6138b2600c836136ce565b91506138bd8261387e565b602082019050919050565b5f6020820190508181035f8301526138df816138a6565b9050919050565b7f746f74616c5061796f75743e30000000000000000000000000000000000000005f82015250565b5f61391a600d836136ce565b9150613925826138e6565b602082019050919050565b5f6020820190508181035f8301526139478161390e565b9050919050565b7f64656661756c742070726f6273206e6f742073657400000000000000000000005f82015250565b5f6139826015836136ce565b915061398d8261394e565b602082019050919050565b5f6020820190508181035f8301526139af81613976565b9050919050565b7f726f756e6420616c726561647920696e697469616c697a6564000000000000005f82015250565b5f6139ea6019836136ce565b91506139f5826139b6565b602082019050919050565b5f6020820190508181035f830152613a17816139de565b9050919050565b5f604082019050613a315f830185612ffd565b613a3e6020830184612ffd565b9392505050565b7f6e6f20636c61696d0000000000000000000000000000000000000000000000005f82015250565b5f613a796008836136ce565b9150613a8482613a45565b602082019050919050565b5f6020820190508181035f830152613aa681613a6d565b9050919050565b5f81519050613abb81612f3b565b92915050565b5f60208284031215613ad657613ad5612f2a565b5b5f613ae384828501613aad565b91505092915050565b5f613af682612f32565b9150613b0183612f32565b9250828201905080821115613b1957613b18613746565b5b92915050565b7f456e74726f70792061646472657373206e6f74207365740000000000000000005f82015250565b5f613b536017836136ce565b9150613b5e82613b1f565b602082019050919050565b5f6020820190508181035f830152613b8081613b47565b9050919050565b7f4f6e6c7920456e74726f70792063616e2063616c6c20746869732066756e63745f8201527f696f6e0000000000000000000000000000000000000000000000000000000000602082015250565b5f613be16023836136ce565b9150613bec82613b87565b604082019050919050565b5f6020820190508181035f830152613c0e81613bd5565b9050919050565b7f6e6f74206d616e616765720000000000000000000000000000000000000000005f82015250565b5f613c49600b836136ce565b9150613c5482613c15565b602082019050919050565b5f6020820190508181035f830152613c7681613c3d565b9050919050565b7f6d616e61676572206e6f742073657400000000000000000000000000000000005f82015250565b5f613cb1600f836136ce565b9150613cbc82613c7d565b602082019050919050565b5f6020820190508181035f830152613cde81613ca5565b9050919050565b7f6c656e677468206d69736d6174636800000000000000000000000000000000005f82015250565b5f613d19600f836136ce565b9150613d2482613ce5565b602082019050919050565b5f6020820190508181035f830152613d4681613d0d565b9050919050565b7f656d7074792070726f626162696c6974696573000000000000000000000000005f82015250565b5f613d816013836136ce565b9150613d8c82613d4d565b602082019050919050565b5f6020820190508181035f830152613dae81613d75565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f626f782070726f622073756d206d7573742062652031303030300000000000005f82015250565b5f613e16601a836136ce565b9150613e2182613de2565b602082019050919050565b5f6020820190508181035f830152613e4381613e0a565b9050919050565b7f76616c75652073686172652073756d206d7573742062652031303030300000005f82015250565b5f613e7e601d836136ce565b9150613e8982613e4a565b602082019050919050565b5f6020820190508181035f830152613eab81613e72565b9050919050565b7f696e76616c696420746f000000000000000000000000000000000000000000005f82015250565b5f613ee6600a836136ce565b9150613ef182613eb2565b602082019050919050565b5f6020820190508181035f830152613f1381613eda565b9050919050565b7f696e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f613f4e6014836136ce565b9150613f5982613f1a565b602082019050919050565b5f6020820190508181035f830152613f7b81613f42565b9050919050565b5f81905092915050565b50565b5f613f9a5f83613f82565b9150613fa582613f8c565b5f82019050919050565b5f613fb982613f8f565b9150819050919050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f613ff76013836136ce565b915061400282613fc3565b602082019050919050565b5f6020820190508181035f83015261402481613feb565b9050919050565b7f6e6f742076616c696420616464726573730000000000000000000000000000005f82015250565b5f61405f6011836136ce565b915061406a8261402b565b602082019050919050565b5f6020820190508181035f83015261408c81614053565b9050919050565b5f6040820190506140a65f83018561308d565b6140b36020830184612ffd565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f6140f182612f32565b91506140fc83612f32565b925082820261410a81612f32565b9150828204841483151761412157614120613746565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61415f82612f32565b915061416a83612f32565b92508261417a57614179614128565b5b828204905092915050565b7f696e76616c696420636f756e74000000000000000000000000000000000000005f82015250565b5f6141b9600d836136ce565b91506141c482614185565b602082019050919050565b5f6020820190508181035f8301526141e6816141ad565b9050919050565b7f726f756e64206e6f7420696e697469616c697a656400000000000000000000005f82015250565b5f6142216015836136ce565b915061422c826141ed565b602082019050919050565b5f6020820190508181035f83015261424e81614215565b9050919050565b7f696e73756666696369656e7420666565000000000000000000000000000000005f82015250565b5f6142896010836136ce565b915061429482614255565b602082019050919050565b5f6020820190508181035f8301526142b68161427d565b9050919050565b5f815190506142cb81613038565b92915050565b5f602082840312156142e6576142e5612f2a565b5b5f6142f3848285016142bd565b91505092915050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61432e826142fc565b61433881856136ce565b9350614348818560208601614306565b61435181614314565b840191505092915050565b5f6040820190508181035f8301526143748185614324565b90506143836020830184612ffd565b9392505050565b5f6020820190508181035f8301526143a28184614324565b905092915050565b5f6060820190506143bd5f83018661308d565b6143ca602083018561308d565b6143d76040830184612ffd565b949350505050565b7f756e6b6e6f776e207265717565737400000000000000000000000000000000005f82015250565b5f614413600f836136ce565b915061441e826143df565b602082019050919050565b5f6020820190508181035f83015261444081614407565b9050919050565b7f616c726561647920636c61696d656400000000000000000000000000000000005f82015250565b5f61447b600f836136ce565b915061448682614447565b602082019050919050565b5f6020820190508181035f8301526144a88161446f565b9050919050565b7f656e74726f7079206e6f742066756c66696c6c656400000000000000000000005f82015250565b5f6144e36015836136ce565b91506144ee826144af565b602082019050919050565b5f6020820190508181035f830152614510816144d7565b9050919050565b5f819050919050565b61453161452c8261326f565b614517565b82525050565b5f819050919050565b61455161454c82612f32565b614537565b82525050565b5f6145628285614520565b6020820191506145728284614540565b6020820191508190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6145b683836135a2565b60208301905092915050565b5f602082019050919050565b5f6145d882614582565b6145e2818561458c565b93506145ed8361459c565b805f5b8381101561461d57815161460488826145ab565b975061460f836145c2565b9250506001810190506145f0565b5085935050505092915050565b5f60408201905061463d5f830185612ffd565b818103602083015261464f81846145ce565b90509392505050565b5f61466282612f32565b915061466d83612f32565b92508261467d5761467c614128565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffdfea2646970667358221220db7b8747bb66387f735b253874bdeb64b6cb836fc4ed10445d54b4568c4df78264736f6c634300081e00330000000000000000000000006e7d74fa7d5c90fef9f0512987605a6d546181bb000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913