0 txs
70 calls
constructor
constructor()
functions
batchClaims
viewfunction batchClaims(uint256) view returns (uint256 batchId, uint256 totalAmountOfPsy, uint256 claimedPsy, uint256 deadline, bytes32 merkleRoot, string ipfsHash)
claimed
viewfunction claimed(uint256, address) view returns (bool)
minimumClaimDeadline
viewfunction minimumClaimDeadline() view returns (uint256)
nextBatchId
viewfunction nextBatchId() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingOwner
viewfunction pendingOwner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
psyNFT
viewfunction psyNFT() view returns (address)
psyPerBatch
viewfunction psyPerBatch() view returns (uint256)
psyToken
viewfunction psyToken() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
acceptOwnership
nonpayablefunction acceptOwnership()
claim
nonpayablefunction claim(uint256 _batchId, uint256 _amount, bytes32[] _merkleProof)
claimUnclaimedTokens
nonpayablefunction claimUnclaimedTokens(uint256 _batchId)
createNewClaimableBatch
nonpayablefunction createNewClaimableBatch(bytes32 _merkleRoot, uint256 _deadline, string _ipfsHash)
initialize
nonpayablefunction initialize(uint256 _initialPsyPerBatch, uint256 _minimumClaimDeadline, address _psyToken, address _psyNft)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateMerkleRoot
nonpayablefunction updateMerkleRoot(uint256 _batchId, bytes32 _merkleRoot, string _ipfs)
updateMinimumClaimDeadline
nonpayablefunction updateMinimumClaimDeadline(uint256 _newMinimumClaimDeadline)
updatePsyPerBatch
nonpayablefunction updatePsyPerBatch(uint256 _newPsyPerBatch)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
BatchClaimCreated
event BatchClaimCreated(address indexed account, uint256 indexed batchId, uint256 amount, uint256 deadline, bytes32 merkleRoot, string ipfsHash)
Claimed
event Claimed(address indexed account, uint256 batchId, uint256 amount)
Initialized
event Initialized(uint64 version)
MerkleRootUpdated
event MerkleRootUpdated(uint256 indexed batchId, bytes32 merkleRoot, string ipfsHash)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
UnclaimedTokensClaimed
event UnclaimedTokensClaimed(uint256 indexed batchId, address indexed account, uint256 amount)
Unpaused
event Unpaused(address account)
UpdatedMinimumClaimDeadline
event UpdatedMinimumClaimDeadline(uint256 minimumClaimDeadline)
UpdatedPsyPerBatchAmount
event UpdatedPsyPerBatchAmount(uint256 psyPerBatch)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161289d62000104600039600081816117540152818161177d0152611999015261289d6000f3fe6080604052600436106101965760003560e01c80637b031b29116100e1578063ad3cb1cc1161008a578063b941d0e611610064578063b941d0e6146104a4578063e30c3978146104d6578063f2fde38b146104eb578063ff63e4b91461050b57600080fd5b8063ad3cb1cc1461040e578063ae0b51df14610464578063ae10520c1461048457600080fd5b80638da5cb5b116100bb5780638da5cb5b146103b65780638ed975d6146103cb578063a24d17af146103e157600080fd5b80637b031b29146103395780638456cb591461038b5780638462a7f8146103a057600080fd5b80634f1ef28611610143578063715018a61161011d578063715018a6146102ef57806374f7be131461030457806379ba50971461032457600080fd5b80634f1ef2861461028257806352d1902d146102955780635c975abb146102b857600080fd5b80631af7d949116101745780631af7d9491461022d5780633f4ba83a1461024d5780634481c15e1461026257600080fd5b8063019e27291461019b57806308eb5bb7146101bd578063120aa877146101dd575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004612197565b610521565b005b3480156101c957600080fd5b506101bb6101d83660046121dd565b610723565b3480156101e957600080fd5b506102186101f83660046121f6565b600660209081526000928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b34801561023957600080fd5b506101bb610248366004612336565b610767565b34801561025957600080fd5b506101bb6107d2565b34801561026e57600080fd5b506101bb61027d3660046121dd565b6107ec565b6101bb610290366004612386565b610ae7565b3480156102a157600080fd5b506102aa610b06565b604051908152602001610224565b3480156102c457600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610218565b3480156102fb57600080fd5b506101bb610b35565b34801561031057600080fd5b506101bb61031f3660046121dd565b610b47565b34801561033057600080fd5b506101bb610b84565b34801561034557600080fd5b506003546103669073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610224565b34801561039757600080fd5b506101bb610bfc565b3480156103ac57600080fd5b506102aa60015481565b3480156103c257600080fd5b50610366610c14565b3480156103d757600080fd5b506102aa60025481565b3480156103ed57600080fd5b506004546103669073ffffffffffffffffffffffffffffffffffffffff1681565b34801561041a57600080fd5b506104576040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102249190612456565b34801561047057600080fd5b506101bb61047f366004612469565b610c56565b34801561049057600080fd5b506101bb61049f366004612336565b6110fc565b3480156104b057600080fd5b506104c46104bf3660046121dd565b611291565b60405161022496959493929190612524565b3480156104e257600080fd5b50610366611355565b3480156104f757600080fd5b506101bb610506366004612561565b61137e565b34801561051757600080fd5b506102aa60005481565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561056c5750825b905060008267ffffffffffffffff1660011480156105895750303b155b905081158015610597575080155b156105ce576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561062f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610637611435565b61063f611445565b6106483361144d565b610650611445565b61065861145e565b6003805473ffffffffffffffffffffffffffffffffffffffff808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560008b905560028a9055600480549289169290911691909117905583156107185784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b61072b61146e565b60028190556040518181527fd7afd976edadfb8274aeb589ae1ad3a9f9b54e9312800afa24b79dee4b8efe8d906020015b60405180910390a150565b61076f61146e565b60008381526005602081905260409091206004810184905501610792828261261d565b50827f56c1adfff26a5af3a301413ba491982deeac598cb473302b9dafdc9dad737b9483836040516107c5929190612737565b60405180910390a2505050565b6107da61146e565b6107e26114c6565b6107ea611521565b565b6107f46115b8565b6107fc611614565b60008181526005602052604090206003015442116108a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f507379436c61696d733a20436c61696d20506572696f64204e6f7420456e646560448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000818152600560205260409020600181015460029091015410610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f507379436c61696d733a20416c6c2050737920436c61696d65640000000000006044820152606401610898565b600480546040517f70a08231000000000000000000000000000000000000000000000000000000008152339281019290925260009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b99190612758565b11610a20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f507379436c61696d733a204d7573742048617665205073794e465400000000006044820152606401610898565b60008181526005602052604081206002810154600190910154610a4391906127a0565b60008381526005602052604090206001810154600290910155600354909150610a839073ffffffffffffffffffffffffffffffffffffffff163383611695565b604051818152339083907f95783a71beb5448c11583c6e0c79377839e86bbefa52bf3b22f79205aaa628349060200160405180910390a350610ae460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b610aef61173c565b610af882611840565b610b028282611848565b5050565b6000610b10611981565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610b3d61146e565b6107ea60006119f0565b610b4f61146e565b60008190556040518181527fe7a0a9e88f4dd9937690a3acab7b04debe0c73678a873f62ac59dfbab45462c09060200161075c565b3380610b8e611355565b73ffffffffffffffffffffffffffffffffffffffff1614610bf3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610898565b610ae4816119f0565b610c0461146e565b610c0c6115b8565b6107ea611a40565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b5473ffffffffffffffffffffffffffffffffffffffff1692915050565b610c5e6115b8565b610c66611614565b6003546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528391829173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610cd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfc9190612758565b1015610d8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f507379436c61696d733a204e6f7420456e6f7567682050737920496e20436f6e60448201527f74726163740000000000000000000000000000000000000000000000000000006064820152608401610898565b6000848433604051602001610dd793929190928352602083019190915260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016604082015260540190565b604051602081830303815290604052805190602001209050610e1083600560008881526020019081526020016000206004015483611ab9565b610e76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f507379436c61696d733a20496e76616c69642050726f6f6600000000000000006044820152606401610898565b60008581526005602052604090206001810154600290910154610e9a9086906127b3565b1115610f02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f507379436c61696d733a20416c6c2050737920436c61696d65640000000000006044820152606401610898565b600085815260066020908152604080832033845290915290205460ff1615610f86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f507379436c61696d733a20416c726561647920436c61696d65640000000000006044820152606401610898565b600085815260056020526040902060030154421115611001576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f507379436c61696d733a20436c61696d20506572696f6420456e6465640000006044820152606401610898565b600085815260056020526040812060020180548692906110229084906127b3565b9091555050600085815260066020908152604080832033808552925290912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556003546110919173ffffffffffffffffffffffffffffffffffffffff919091169086611695565b604080518681526020810186905233917f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a910160405180910390a250506110f760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61110461146e565b60025461111190426127b3565b82101561117a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f507379436c61696d733a20496e76616c696420446561646c696e6500000000006044820152606401610898565b6040805160c08101825260018054808352600080546020808601918252858701838152606087018a8152608088018c815260a089018b8152968652600593849052989094208751815592519583019590955593516002820155905160038201559351600485015551919291908201906111f3908261261d565b509050506001543373ffffffffffffffffffffffffffffffffffffffff167faa3f745e902c5082dfc1f9bd8030c67a3beb81c867d76ce65ab4997d385dc98d60005485878660405161124894939291906127c6565b60405180910390a360018054906000611260836127eb565b90915550506000546003546110f79173ffffffffffffffffffffffffffffffffffffffff9091169033903090611ad1565b60056020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050180546112d29061257c565b80601f01602080910402602001604051908101604052809291908181526020018280546112fe9061257c565b801561134b5780601f106113205761010080835404028352916020019161134b565b820191906000526020600020905b81548152906001019060200180831161132e57829003601f168201915b5050505050905086565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610c39565b61138661146e565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811782556113ef610c14565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b61143d611b1d565b6107ea611b84565b6107ea611b1d565b611455611b1d565b610ae481611bd5565b611466611b1d565b6107ea611c2d565b33611477610c14565b73ffffffffffffffffffffffffffffffffffffffff16146107ea576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610898565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166107ea576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115296114c6565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161075c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156107ea576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161168f576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526110f791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611c35565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148061180957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166117f07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b156107ea576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ae461146e565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118cd575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526118ca91810190612758565b60015b61191b576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610898565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611977576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610898565b6110f78383611ccb565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146107ea576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155610b0282611d2e565b611a486115b8565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611593565b600082611ac68584611dc4565b1490505b9392505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052611b179186918216906323b872dd906084016116cf565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166107ea576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b8c611b1d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b611bdd611b1d565b73ffffffffffffffffffffffffffffffffffffffff8116610bf3576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610898565b611716611b1d565b6000611c5773ffffffffffffffffffffffffffffffffffffffff841683611e13565b90508051600014158015611c7c575080806020019051810190611c7a9190612823565b155b156110f7576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610898565b611cd482611e21565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d26576110f78282611ef0565b610b02611f73565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b600081815b8451811015611e0957611df582868381518110611de857611de8612845565b6020026020010151611fab565b915080611e01816127eb565b915050611dc9565b5090505b92915050565b6060611aca83836000611fda565b8073ffffffffffffffffffffffffffffffffffffffff163b600003611e8a576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610898565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff1684604051611f1a9190612874565b600060405180830381855af49150503d8060008114611f55576040519150601f19603f3d011682016040523d82523d6000602084013e611f5a565b606091505b5091509150611f6a85838361209d565b95945050505050565b34156107ea576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818310611fc7576000828152602084905260409020611aca565b6000838152602083905260409020611aca565b606081471015612018576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610898565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516120419190612874565b60006040518083038185875af1925050503d806000811461207e576040519150601f19603f3d011682016040523d82523d6000602084013e612083565b606091505b509150915061209386838361209d565b9695505050505050565b6060826120b2576120ad8261212c565b611aca565b81511580156120d6575073ffffffffffffffffffffffffffffffffffffffff84163b155b15612125576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610898565b5080611aca565b80511561213c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461219257600080fd5b919050565b600080600080608085870312156121ad57600080fd5b84359350602085013592506121c46040860161216e565b91506121d26060860161216e565b905092959194509250565b6000602082840312156121ef57600080fd5b5035919050565b6000806040838503121561220957600080fd5b823591506122196020840161216e565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561229857612298612222565b604052919050565b600067ffffffffffffffff8311156122ba576122ba612222565b6122eb60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601612251565b90508281528383830111156122ff57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261232757600080fd5b611aca838335602085016122a0565b60008060006060848603121561234b57600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561237057600080fd5b61237c86828701612316565b9150509250925092565b6000806040838503121561239957600080fd5b6123a28361216e565b9150602083013567ffffffffffffffff8111156123be57600080fd5b8301601f810185136123cf57600080fd5b6123de858235602084016122a0565b9150509250929050565b60005b838110156124035781810151838201526020016123eb565b50506000910152565b600081518084526124248160208601602086016123e8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611aca602083018461240c565b60008060006060848603121561247e57600080fd5b833592506020808501359250604085013567ffffffffffffffff808211156124a557600080fd5b818701915087601f8301126124b957600080fd5b8135818111156124cb576124cb612222565b8060051b91506124dc848301612251565b818152918301840191848101908a8411156124f657600080fd5b938501935b83851015612514578435825293850193908501906124fb565b8096505050505050509250925092565b86815285602082015284604082015283606082015282608082015260c060a0820152600061255560c083018461240c565b98975050505050505050565b60006020828403121561257357600080fd5b611aca8261216e565b600181811c9082168061259057607f821691505b6020821081036125c9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156110f757600081815260208120601f850160051c810160208610156125f65750805b601f850160051c820191505b8181101561261557828155600101612602565b505050505050565b815167ffffffffffffffff81111561263757612637612222565b61264b81612645845461257c565b846125cf565b602080601f83116001811461269e57600084156126685750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612615565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156126eb578886015182559484019460019091019084016126cc565b508582101561272757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000612750604083018461240c565b949350505050565b60006020828403121561276a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115611e0d57611e0d612771565b80820180821115611e0d57611e0d612771565b848152836020820152826040820152608060608201526000612093608083018461240c565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361281c5761281c612771565b5060010190565b60006020828403121561283557600080fd5b81518015158114611aca57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082516128868184602087016123e8565b919091019291505056fea164736f6c6343000814000a