12 txs
43 calls
constructor
constructor(address entropyAddress, address payoutTokenAddress)
functions
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)
getRoundTiers
viewfunction getRoundTiers(uint256 index) 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)
_entropyCallback
nonpayablefunction _entropyCallback(uint64 sequence, address provider, bytes32 randomNumber)
claimLoot
nonpayablefunction claimLoot(uint64 sequenceNumber)
initRound
nonpayablefunction initRound(uint256 roundId, uint256 totalBoxes, uint256 totalPayout)
reclaimUnreserved
nonpayablefunction reclaimUnreserved(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)
RoundInitialized
event RoundInitialized(uint256 indexed roundId, uint256 totalBoxes, uint256 totalPayout)
TiersConfigured
event TiersConfigured(uint256 indexed roundId)
UnreservedReclaimed
event UnreservedReclaimed(uint256 indexed roundId, address indexed to, uint256 unreservedBoxes, uint256 reclaimedTokenAmount)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60c060405234801561000f575f5ffd5b5060405161408e38038061408e83398181016040528101906100319190610323565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a2575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100999190610370565b60405180910390fd5b6100b18161020460201b60201c565b50600180819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011e906103e3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018c9061044b565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250505050610469565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102f2826102c9565b9050919050565b610302816102e8565b811461030c575f5ffd5b50565b5f8151905061031d816102f9565b92915050565b5f5f60408385031215610339576103386102c5565b5b5f6103468582860161030f565b92505060206103578582860161030f565b9150509250929050565b61036a816102e8565b82525050565b5f6020820190506103835f830184610361565b92915050565b5f82825260208201905092915050565b7f656e74726f70792061646472207a65726f0000000000000000000000000000005f82015250565b5f6103cd601183610389565b91506103d882610399565b602082019050919050565b5f6020820190508181035f8301526103fa816103c1565b9050919050565b7f746f6b656e2061646472207a65726f00000000000000000000000000000000005f82015250565b5f610435600f83610389565b915061044082610401565b602082019050919050565b5f6020820190508181035f83015261046281610429565b9050919050565b60805160a051613bda6104b45f395f81816107aa01528181610a6d015281816115e60152611e2d01525f818161054001528181610a2401528181611e78015261205e0152613bda5ff3fe608060405260043610610134575f3560e01c80638c65c81f116100aa578063c6e5e1aa1161006e578063c6e5e1aa14610423578063d0ebdbe71461045f578063dba1771214610487578063f2ea4387146104b1578063f2fde38b146104ed578063f9f8a0501461051557610134565b80638c65c81f146103195780638da5cb5b146103595780638f532dbf14610383578063acc361b1146103ab578063c2f1c307146103e757610134565b8063481c6a75116100fc578063481c6a751461022f5780634efa82b61461025957806352a5f1f8146102835780635391945f146102ab57806357376198146102db578063715018a61461030357610134565b80632d971e63146101385780632f541c451461016257806335dfdef31461019e578063411010ec146101c657806347ce07cc14610205575b5f5ffd5b348015610143575f5ffd5b5061014c61053d565b6040516101599190612767565b60405180910390f35b34801561016d575f5ffd5b506101886004803603810190610183919061280c565b6105e2565b6040516101959190612767565b60405180910390f35b3480156101a9575f5ffd5b506101c460048036038101906101bf919061284a565b61084c565b005b3480156101d1575f5ffd5b506101ec60048036038101906101e791906128d7565b6109cb565b6040516101fc949392919061292b565b60405180910390f35b348015610210575f5ffd5b50610219610a22565b60405161022691906129c9565b60405180910390f35b34801561023a575f5ffd5b50610243610a46565b60405161025091906129e2565b60405180910390f35b348015610264575f5ffd5b5061026d610a6b565b60405161027a9190612a1b565b60405180910390f35b34801561028e575f5ffd5b506102a960048036038101906102a49190612a67565b610a8f565b005b6102c560048036038101906102c09190612ab7565b610b87565b6040516102d29190612b16565b60405180910390f35b3480156102e6575f5ffd5b5061030160048036038101906102fc9190612b2f565b610bf4565b005b34801561030e575f5ffd5b50610317610c2b565b005b348015610324575f5ffd5b5061033f600480360381019061033a9190612b6d565b610c3e565b604051610350959493929190612b98565b60405180910390f35b348015610364575f5ffd5b5061036d610c7c565b60405161037a91906129e2565b60405180910390f35b34801561038e575f5ffd5b506103a960048036038101906103a49190612c4a565b610ca3565b005b3480156103b6575f5ffd5b506103d160048036038101906103cc9190612b6d565b610f1e565b6040516103de9190612767565b60405180910390f35b3480156103f2575f5ffd5b5061040d600480360381019061040891906128d7565b610f3e565b60405161041a9190612cd7565b60405180910390f35b34801561042e575f5ffd5b5061044960048036038101906104449190612b6d565b610f53565b6040516104569190612dfa565b60405180910390f35b34801561046a575f5ffd5b5061048560048036038101906104809190612e1a565b610fea565b005b348015610492575f5ffd5b5061049b6110a3565b6040516104a89190612767565b60405180910390f35b3480156104bc575f5ffd5b506104d760048036038101906104d29190612b6d565b6110a8565b6040516104e49190612767565b60405180910390f35b3480156104f8575f5ffd5b50610513600480360381019061050e9190612e1a565b6110c8565b005b348015610520575f5ffd5b5061053b600480360381019061053691906128d7565b61114c565b005b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638204b67a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105cb9190612e8a565b6fffffffffffffffffffffffffffffffff16905090565b5f6105eb6116cb565b5f60025f8581526020019081526020015f209050806005015f9054906101000a900460ff1661064f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064690612f0f565b60405180910390fd5b5f816003015490505f8111610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069090612f77565b60405180910390fd5b5f5f90505f5f90505f846004018054905090505f5f90505b81811015610759578560040181815481106106cf576106ce612f95565b5b905f5260205f209060040201600301548660040182815481106106f5576106f4612f95565b5b905f5260205f2090600402015f015461070e9190612fef565b846107199190613030565b935085600401818154811061073157610730612f95565b5b905f5260205f209060040201600301548361074c9190613030565b92508060010190506106b1565b505f820361076e575f95505050505050610846565b838261077a9190613030565b84846107869190612fef565b6107909190613090565b95505f85600301819055505f8611156107ef576107ee87877f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117529092919063ffffffff16565b5b8673ffffffffffffffffffffffffffffffffffffffff16887f9103784d7a92fbfdc96f82221c7fd465c60427108b5c87d564e1672adecf3e1e86896040516108389291906130c0565b60405180910390a350505050505b92915050565b6108546116cb565b5f8203610896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088d90613131565b60405180910390fd5b5f81036108d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cf90613199565b60405180910390fd5b5f6005805490500361091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091690613201565b60405180910390fd5b5f8390505f60025f8381526020019081526020015f20905081815f01819055508381600101819055508281600201819055508381600301819055506001816005015f6101000a81548160ff021916908315150217905550817f984917a0a0fe4e02ef7ad194cb0292b5d8753a694115b6b109562161b2988cff85856040516109a89291906130c0565b60405180910390a26109bb8185856117d1565b6109c483611e25565b5050505050565b6003602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015490806003015f9054906101000a900460ff16905084565b7f000000000000000000000000000000000000000000000000000000000000000081565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610a98611e75565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aff90613269565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6d906132f7565b60405180910390fd5b610b81848484611e9c565b50505050565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610be0575f5ffd5b610beb848484611f24565b90509392505050565b610bfc6116cb565b610c2733828473ffffffffffffffffffffffffffffffffffffffff166117529092919063ffffffff16565b5050565b610c336116cb565b610c3c5f612246565b565b6002602052805f5260405f205f91509050805f015490806001015490806002015490806003015490806005015f9054906101000a900460ff16905085565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610cab6116cb565b5f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d319061335f565b60405180910390fd5b818190508484905014610d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d79906133c7565b60405180910390fd5b5f8484905003610dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbe9061342f565b60405180910390fd5b5f8484905090505f5f90505f5f90505f5f90505b83811015610e3c57878782818110610df657610df5612f95565b5b9050602002013583610e089190613030565b9250858582818110610e1d57610e1c612f95565b5b9050602002013582610e2f9190613030565b9150806001019050610ddb565b506127108214610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7890613497565b60405180910390fd5b6127108114610ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebc906134ff565b60405180910390fd5b868660059190610ed692919061268c565b50848460069190610ee892919061268c565b507f7c3c6561e60e2662f0257d45bfaaead398f83b9588bae9ba4c8b3cec3a288fcb60405160405180910390a150505050505050565b60068181548110610f2d575f80fd5b905f5260205f20015f915090505481565b6004602052805f5260405f205f915090505481565b606060025f8381526020019081526020015f20600401805480602002602001604051908101604052809291908181526020015f905b82821015610fdf578382905f5260205f2090600402016040518060800160405290815f8201548152602001600182015481526020016002820154815260200160038201548152505081526020019060010190610f88565b505050509050919050565b610ff26116cb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105790613567565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b603281565b600581815481106110b7575f80fd5b905f5260205f20015f915090505481565b6110d06116cb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611140575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161113791906129e2565b60405180910390fd5b61114981612246565b50565b611154612307565b5f60035f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611210576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611207906135cf565b60405180910390fd5b816003015f9054906101000a900460ff1615611261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125890613637565b60405180910390fd5b5f60045f8567ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205490505f5f1b81036112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c59061369f565b60405180910390fd5b5f60025f856001015481526020019081526020015f209050806005015f9054906101000a900460ff16611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d90613707565b60405180910390fd5b5f846002015490505f8167ffffffffffffffff81111561135957611358613725565b5b6040519080825280602002602001820160405280156113875781602001602082028036833780820191505090505b5090505f5f90505b8281101561163d575f85826040516020016113ab929190613792565b604051602081830303815290604052805190602001205f1c90505f5f90505f866004018054905090505f5f90505b8181101561141f578760040181815481106113f7576113f6612f95565b5b905f5260205f20906004020160030154836114129190613030565b92508060010190506113d9565b505f820361143657505050505050505050506116c0565b5f828461144391906137bd565b90505f5f90505f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90505f5f90505b848110156114e7575f8b600401828154811061149157611490612f95565b5b905f5260205f2090600402016003015490505f81036114b057506114dc565b80846114bc9190613030565b8510156114cc57819250506114e7565b80846114d89190613030565b9350505b806001019050611472565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810361154a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154190613837565b60405180910390fd5b60018a600401828154811061156257611561612f95565b5b905f5260205f2090600402016003015f82825461157f9190613855565b925050819055505f8a600401828154811061159d5761159c612f95565b5b905f5260205f2090600402015f01549050808989815181106115c2576115c1612f95565b5b6020026020010181815250506115d78161234d565b5f81111561162b5761162a8d827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117529092919063ffffffff16565b5b5050505050505080600101905061138f565b506001866003015f6101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff168767ffffffffffffffff167f3525beebd202b53f76fc20196a2c75e7eabf58d53fe2f422c91b9906622c8b728860010154846040516116b1929190613930565b60405180910390a35050505050505b6116c86123e6565b50565b6116d36123ef565b73ffffffffffffffffffffffffffffffffffffffff166116f1610c7c565b73ffffffffffffffffffffffffffffffffffffffff1614611750576117146123ef565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161174791906129e2565b60405180910390fd5b565b6117cc838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161178592919061395e565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123f6565b505050565b826004015f6117e091906126d7565b5f60058054905090505f5f90505f8267ffffffffffffffff81111561180857611807613725565b5b6040519080825280602002602001820160405280156118365781602001602082028036833780820191505090505b5090505f5f90505b838110156118f7575f6127106005838154811061185e5761185d612f95565b5b905f5260205f200154886118729190612fef565b61187c9190613090565b90506118bd6040518060400160405280600c81526020017f626f7820636f756e74733a20000000000000000000000000000000000000000081525082612491565b808383815181106118d1576118d0612f95565b5b60200260200101818152505080846118e99190613030565b93505080600101905061183e565b505f82866119059190613855565b90505f8111156119a2575f5f90505f600190505b85811015611970576005828154811061193557611934612f95565b5b905f5260205f2001546005828154811061195257611951612f95565b5b905f5260205f2001541115611965578091505b806001019050611919565b508183828151811061198557611984612f95565b5b602002602001018181516119999190613030565b91508181525050505b6119ec6040518060400160405280601681526020017f546f74616c2061737369676e656420626f7865733a200000000000000000000081525082856119e79190613030565b612491565b5f5f90505f8567ffffffffffffffff811115611a0b57611a0a613725565b5b604051908082528060200260200182016040528015611a395781602001602082028036833780820191505090505b5090505f5f90505b86811015611afa575f61271060068381548110611a6157611a60612f95565b5b905f5260205f2001548a611a759190612fef565b611a7f9190613090565b905080838381518110611a9557611a94612f95565b5b602002602001018181525050611ae06040518060400160405280601781526020017f56616c7565205368617265732070657220546965723a2000000000000000000081525082612491565b8084611aec9190613030565b935050806001019050611a41565b505f8288611b089190613855565b90505f811115611ba5575f5f90505f600190505b88811015611b735760068281548110611b3857611b37612f95565b5b905f5260205f20015460068281548110611b5557611b54612f95565b5b905f5260205f2001541115611b68578091505b806001019050611b1c565b5081838281518110611b8857611b87612f95565b5b60200260200101818151611b9c9190613030565b91508181525050505b5f5f90505b87811015611de8575f868281518110611bc657611bc5612f95565b5b602002602001015190505f5f8211611bde575f611c05565b81858481518110611bf257611bf1612f95565b5b6020026020010151611c049190613090565b5b9050611c466040518060400160405280600d81526020017f5061792070657220626f783a200000000000000000000000000000000000000081525082612491565b8c600401604051806080016040528083815260200160058681548110611c6f57611c6e612f95565b5b905f5260205f200154815260200160068681548110611c9157611c90612f95565b5b905f5260205f200154815260200184815250908060018154018082558091505060019003905f5260205f2090600402015f909190919091505f820151815f015560208201518160010155604082015181600201556060820151816003015550505f5f90505f5f90505b83811015611d1d578282611d0e9190613030565b91508080600101915050611cfa565b50611d5d6040518060400160405280601681526020017f546f74616c20626f7865732070657220746965723a200000000000000000000081525084612491565b611d9c6040518060400160405280601781526020017f546f74616c207061796f75742070657220746965723a2000000000000000000081525082612491565b611dda6040518060400160405280601a81526020017f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d00000000000081525061252d565b505050806001019050611baa565b50895f01547f6c294f714ba8b08784431e9d0089b7c8b4ec97c23fa411d13e3d9131130794fb60405160405180910390a250505050505050505050565b611e723330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166125c6909392919063ffffffff16565b50565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b8060045f8567ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167f2a09b01beb06e159725b191b6a1af189fda67edbe7894829d9602fe76b3d668d83604051611f179190612cd7565b60405180910390a3505050565b5f5f8214158015611f36575060328211155b611f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6c906139cf565b60405180910390fd5b5f8490505f60025f8381526020019081526020015f209050806005015f9054906101000a900460ff16611fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd490613707565b60405180910390fd5b5f816003015403611ffa5767ffffffffffffffff9250505061223f565b806003015484111561200e57806003015493505b5f61201761053d565b90508034101561205c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205390613a37565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637b43155d826040518263ffffffff1660e01b815260040160206040518083038185885af11580156120c7573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906120ec9190613a69565b935084826003015f8282546121019190613855565b9250508190555060405180608001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018681526020015f151581525060035f8667ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050508573ffffffffffffffffffffffffffffffffffffffff168467ffffffffffffffff167f21d954649f76fe7ae909e6d97ba45faf4cc009fca8ec5fe8e764a6ff1802a7fa85886040516122339291906130c0565b60405180910390a35050505b9392505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260015403612343576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b6123e3816040516024016123619190612767565b6040516020818303038152906040527ff82c50f1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612648565b50565b60018081905550565b5f33905090565b5f5f60205f8451602086015f885af180612415576040513d5f823e3d81fd5b3d92505f519150505f821461242e576001811415612449565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561248b57836040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161248291906129e2565b60405180910390fd5b50505050565b61252982826040516024016124a7929190613af4565b6040516020818303038152906040527fb60e72cc000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612648565b5050565b6125c3816040516024016125419190613b22565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612648565b50565b612642848573ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040516024016125fb93929190613b42565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123f6565b50505050565b61265f81612657612662612681565b63ffffffff16565b50565b5f6a636f6e736f6c652e6c6f6790505f5f835160208501845afa505050565b6126f8819050919050565b828054828255905f5260205f209081019282156126c6579160200282015b828111156126c55782358255916020019190600101906126aa565b5b5090506126d39190612702565b5090565b5080545f8255600402905f5260205f20908101906126f5919061271d565b50565b612700613b77565b565b5b80821115612719575f815f905550600101612703565b5090565b5b8082111561274b575f5f82015f9055600182015f9055600282015f9055600382015f90555060040161271e565b5090565b5f819050919050565b6127618161274f565b82525050565b5f60208201905061277a5f830184612758565b92915050565b5f5ffd5b5f5ffd5b6127918161274f565b811461279b575f5ffd5b50565b5f813590506127ac81612788565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127db826127b2565b9050919050565b6127eb816127d1565b81146127f5575f5ffd5b50565b5f81359050612806816127e2565b92915050565b5f5f6040838503121561282257612821612780565b5b5f61282f8582860161279e565b9250506020612840858286016127f8565b9150509250929050565b5f5f5f6060848603121561286157612860612780565b5b5f61286e8682870161279e565b935050602061287f8682870161279e565b92505060406128908682870161279e565b9150509250925092565b5f67ffffffffffffffff82169050919050565b6128b68161289a565b81146128c0575f5ffd5b50565b5f813590506128d1816128ad565b92915050565b5f602082840312156128ec576128eb612780565b5b5f6128f9848285016128c3565b91505092915050565b61290b816127d1565b82525050565b5f8115159050919050565b61292581612911565b82525050565b5f60808201905061293e5f830187612902565b61294b6020830186612758565b6129586040830185612758565b612965606083018461291c565b95945050505050565b5f819050919050565b5f61299161298c612987846127b2565b61296e565b6127b2565b9050919050565b5f6129a282612977565b9050919050565b5f6129b382612998565b9050919050565b6129c3816129a9565b82525050565b5f6020820190506129dc5f8301846129ba565b92915050565b5f6020820190506129f55f830184612902565b92915050565b5f612a0582612998565b9050919050565b612a15816129fb565b82525050565b5f602082019050612a2e5f830184612a0c565b92915050565b5f819050919050565b612a4681612a34565b8114612a50575f5ffd5b50565b5f81359050612a6181612a3d565b92915050565b5f5f5f60608486031215612a7e57612a7d612780565b5b5f612a8b868287016128c3565b9350506020612a9c868287016127f8565b9250506040612aad86828701612a53565b9150509250925092565b5f5f5f60608486031215612ace57612acd612780565b5b5f612adb8682870161279e565b9350506020612aec868287016127f8565b9250506040612afd8682870161279e565b9150509250925092565b612b108161289a565b82525050565b5f602082019050612b295f830184612b07565b92915050565b5f5f60408385031215612b4557612b44612780565b5b5f612b52858286016127f8565b9250506020612b638582860161279e565b9150509250929050565b5f60208284031215612b8257612b81612780565b5b5f612b8f8482850161279e565b91505092915050565b5f60a082019050612bab5f830188612758565b612bb86020830187612758565b612bc56040830186612758565b612bd26060830185612758565b612bdf608083018461291c565b9695505050505050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112612c0a57612c09612be9565b5b8235905067ffffffffffffffff811115612c2757612c26612bed565b5b602083019150836020820283011115612c4357612c42612bf1565b5b9250929050565b5f5f5f5f60408587031215612c6257612c61612780565b5b5f85013567ffffffffffffffff811115612c7f57612c7e612784565b5b612c8b87828801612bf5565b9450945050602085013567ffffffffffffffff811115612cae57612cad612784565b5b612cba87828801612bf5565b925092505092959194509250565b612cd181612a34565b82525050565b5f602082019050612cea5f830184612cc8565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612d228161274f565b82525050565b608082015f820151612d3c5f850182612d19565b506020820151612d4f6020850182612d19565b506040820151612d626040850182612d19565b506060820151612d756060850182612d19565b50505050565b5f612d868383612d28565b60808301905092915050565b5f602082019050919050565b5f612da882612cf0565b612db28185612cfa565b9350612dbd83612d0a565b805f5b83811015612ded578151612dd48882612d7b565b9750612ddf83612d92565b925050600181019050612dc0565b5085935050505092915050565b5f6020820190508181035f830152612e128184612d9e565b905092915050565b5f60208284031215612e2f57612e2e612780565b5b5f612e3c848285016127f8565b91505092915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b612e6981612e45565b8114612e73575f5ffd5b50565b5f81519050612e8481612e60565b92915050565b5f60208284031215612e9f57612e9e612780565b5b5f612eac84828501612e76565b91505092915050565b5f82825260208201905092915050565b7f726f756e64206e6f7420696e69740000000000000000000000000000000000005f82015250565b5f612ef9600e83612eb5565b9150612f0482612ec5565b602082019050919050565b5f6020820190508181035f830152612f2681612eed565b9050919050565b7f6e6f20756e7265736572766564000000000000000000000000000000000000005f82015250565b5f612f61600d83612eb5565b9150612f6c82612f2d565b602082019050919050565b5f6020820190508181035f830152612f8e81612f55565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612ff98261274f565b91506130048361274f565b92508282026130128161274f565b9150828204841483151761302957613028612fc2565b5b5092915050565b5f61303a8261274f565b91506130458361274f565b925082820190508082111561305d5761305c612fc2565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61309a8261274f565b91506130a58361274f565b9250826130b5576130b4613063565b5b828204905092915050565b5f6040820190506130d35f830185612758565b6130e06020830184612758565b9392505050565b7f746f74616c426f7865733e3000000000000000000000000000000000000000005f82015250565b5f61311b600c83612eb5565b9150613126826130e7565b602082019050919050565b5f6020820190508181035f8301526131488161310f565b9050919050565b7f746f74616c5061796f75743e30000000000000000000000000000000000000005f82015250565b5f613183600d83612eb5565b915061318e8261314f565b602082019050919050565b5f6020820190508181035f8301526131b081613177565b9050919050565b7f64656661756c742070726f6273206e6f742073657400000000000000000000005f82015250565b5f6131eb601583612eb5565b91506131f6826131b7565b602082019050919050565b5f6020820190508181035f830152613218816131df565b9050919050565b7f456e74726f70792061646472657373206e6f74207365740000000000000000005f82015250565b5f613253601783612eb5565b915061325e8261321f565b602082019050919050565b5f6020820190508181035f83015261328081613247565b9050919050565b7f4f6e6c7920456e74726f70792063616e2063616c6c20746869732066756e63745f8201527f696f6e0000000000000000000000000000000000000000000000000000000000602082015250565b5f6132e1602383612eb5565b91506132ec82613287565b604082019050919050565b5f6020820190508181035f83015261330e816132d5565b9050919050565b7f6d616e61676572206e6f742073657400000000000000000000000000000000005f82015250565b5f613349600f83612eb5565b915061335482613315565b602082019050919050565b5f6020820190508181035f8301526133768161333d565b9050919050565b7f6c656e677468206d69736d6174636800000000000000000000000000000000005f82015250565b5f6133b1600f83612eb5565b91506133bc8261337d565b602082019050919050565b5f6020820190508181035f8301526133de816133a5565b9050919050565b7f656d7074792070726f626162696c6974696573000000000000000000000000005f82015250565b5f613419601383612eb5565b9150613424826133e5565b602082019050919050565b5f6020820190508181035f8301526134468161340d565b9050919050565b7f626f782070726f622073756d206d7573742062652031303030300000000000005f82015250565b5f613481601a83612eb5565b915061348c8261344d565b602082019050919050565b5f6020820190508181035f8301526134ae81613475565b9050919050565b7f76616c75652073686172652073756d206d7573742062652031303030300000005f82015250565b5f6134e9601d83612eb5565b91506134f4826134b5565b602082019050919050565b5f6020820190508181035f830152613516816134dd565b9050919050565b7f6e6f742076616c696420616464726573730000000000000000000000000000005f82015250565b5f613551601183612eb5565b915061355c8261351d565b602082019050919050565b5f6020820190508181035f83015261357e81613545565b9050919050565b7f756e6b6e6f776e207265717565737400000000000000000000000000000000005f82015250565b5f6135b9600f83612eb5565b91506135c482613585565b602082019050919050565b5f6020820190508181035f8301526135e6816135ad565b9050919050565b7f616c726561647920636c61696d656400000000000000000000000000000000005f82015250565b5f613621600f83612eb5565b915061362c826135ed565b602082019050919050565b5f6020820190508181035f83015261364e81613615565b9050919050565b7f656e74726f7079206e6f742066756c66696c6c656400000000000000000000005f82015250565b5f613689601583612eb5565b915061369482613655565b602082019050919050565b5f6020820190508181035f8301526136b68161367d565b9050919050565b7f726f756e64206e6f7420696e697469616c697a656400000000000000000000005f82015250565b5f6136f1601583612eb5565b91506136fc826136bd565b602082019050919050565b5f6020820190508181035f83015261371e816136e5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050919050565b61376c61376782612a34565b613752565b82525050565b5f819050919050565b61378c6137878261274f565b613772565b82525050565b5f61379d828561375b565b6020820191506137ad828461377b565b6020820191508190509392505050565b5f6137c78261274f565b91506137d28361274f565b9250826137e2576137e1613063565b5b828206905092915050565b7f746965722073656c656374696f6e206661696c656400000000000000000000005f82015250565b5f613821601583612eb5565b915061382c826137ed565b602082019050919050565b5f6020820190508181035f83015261384e81613815565b9050919050565b5f61385f8261274f565b915061386a8361274f565b925082820390508181111561388257613881612fc2565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6138bc8383612d19565b60208301905092915050565b5f602082019050919050565b5f6138de82613888565b6138e88185613892565b93506138f3836138a2565b805f5b8381101561392357815161390a88826138b1565b9750613915836138c8565b9250506001810190506138f6565b5085935050505092915050565b5f6040820190506139435f830185612758565b818103602083015261395581846138d4565b90509392505050565b5f6040820190506139715f830185612902565b61397e6020830184612758565b9392505050565b7f696e76616c696420636f756e74000000000000000000000000000000000000005f82015250565b5f6139b9600d83612eb5565b91506139c482613985565b602082019050919050565b5f6020820190508181035f8301526139e6816139ad565b9050919050565b7f696e73756666696369656e7420666565000000000000000000000000000000005f82015250565b5f613a21601083612eb5565b9150613a2c826139ed565b602082019050919050565b5f6020820190508181035f830152613a4e81613a15565b9050919050565b5f81519050613a63816128ad565b92915050565b5f60208284031215613a7e57613a7d612780565b5b5f613a8b84828501613a55565b91505092915050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613ac682613a94565b613ad08185612eb5565b9350613ae0818560208601613a9e565b613ae981613aac565b840191505092915050565b5f6040820190508181035f830152613b0c8185613abc565b9050613b1b6020830184612758565b9392505050565b5f6020820190508181035f830152613b3a8184613abc565b905092915050565b5f606082019050613b555f830186612902565b613b626020830185612902565b613b6f6040830184612758565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffdfea264697066735822122035e081478aab8bfe569b09f1802faadb9331a1336de8783a972c7fdbf9ec8fe364736f6c634300081e00330000000000000000000000006e7d74fa7d5c90fef9f0512987605a6d546181bb000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913