0 txs
11 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
calculateWithdrawalAmount
viewfunction calculateWithdrawalAmount(uint256 redeemAmount) view returns (uint128)
decimals
viewfunction decimals() view returns (uint8)
exchangeRate
viewfunction exchangeRate() view returns (uint128)
incentiveEndsAt
viewfunction incentiveEndsAt() view returns (uint32)
incentiveStartedAt
viewfunction incentiveStartedAt() view returns (uint32)
name
viewfunction name() view returns (string)
nextWithdrawalRequestId
viewfunction nextWithdrawalRequestId() view returns (uint256)
owner
viewfunction owner() view returns (address)
reward
viewfunction reward() view returns (uint128)
rewardRate
viewfunction rewardRate() view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalRequestedAmount
viewfunction totalRequestedAmount() view returns (uint128)
totalSupply
viewfunction totalSupply() view returns (uint256)
underlying
viewfunction underlying() view returns (address)
underlyingBalanceOf
viewfunction underlyingBalanceOf(address account) view returns (uint256)
withdrawalDelay
viewfunction withdrawalDelay() view returns (uint32)
withdrawalRequests
viewfunction withdrawalRequests(uint256) view returns (uint128 value, address requester, uint32 withdrawAfter)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
batchWithdrawTo
nonpayablefunction batchWithdrawTo(address account, uint256[] requestIds)
changeRewardPoolV3
nonpayablefunction changeRewardPoolV3(address newRewardPoolV3)
changeWithdrawalDelay
nonpayablefunction changeWithdrawalDelay(uint32 newWithdrawalDelay)
depositFor
nonpayablefunction depositFor(address account, uint256 amount) returns (bool)
initialize
nonpayablefunction initialize(address underlyingToken_, string name_, string symbol_, uint32 withdrawalDelay_)
migrateToV3
nonpayablefunction migrateToV3(uint256 redeemAmount)
recover
nonpayablefunction recover(address account) returns (uint256 recoveredAmount)
renounceOwnership
nonpayablefunction renounceOwnership()
requestWithdrawal
nonpayablefunction requestWithdrawal(uint128 redeemAmount) returns (uint256 requestId)
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateStakingIncentive
nonpayablefunction updateStakingIncentive(uint128 extraReward, uint32 incentiveDuration)
withdrawTo
nonpayablefunction withdrawTo(address account, uint256 requestId) returns (bool)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Initialized
event Initialized(uint64 version)
Migrated
event Migrated(address account, address rewardPoolV3, uint256 redeemAmount, uint256 stakeAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RewardPoolV3Changed
event RewardPoolV3Changed(address newRewardPoolV3)
StakingIncentiveUpdated
event StakingIncentiveUpdated(uint128 reward, uint32 incentiveEndsAt)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
WithdrawalDelayChanged
event WithdrawalDelayChanged(uint256 newWithdrawalDelay)
WithdrawalRequested
event WithdrawalRequested(address indexed requester, uint256 indexed requestId, uint128 redeemAmount, uint128 withdrawalAmount, uint32 withdrawAfter)
WithdrawalRequestProcessed
event WithdrawalRequestProcessed(uint256 indexed requestId, address indexed to)
errors
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
ERC20InvalidUnderlying
error ERC20InvalidUnderlying(address token)
InsufficientDeposit
error InsufficientDeposit(uint256 amount)
InvalidIncentiveDuration
error InvalidIncentiveDuration(uint32 minDuration, uint32 maxDuration)
InvalidInitialization
error InvalidInitialization()
NoReward
error NoReward()
NotInitializing
error NotInitializing()
OnlyRequesterCanWithdrawToAnotherAddress
error OnlyRequesterCanWithdrawToAnotherAddress(address requester)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
RequestDoesNotExist
error RequestDoesNotExist(uint256 requestId)
RewardPoolV3NotSet
error RewardPoolV3NotSet()
WithdrawalLocked
error WithdrawalLocked(uint32 withdrawAfter)
ZeroAmount
error ZeroAmount()
creation bytecode
0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b613089806100d96000396000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c80636f307dc31161012a57806395d89b41116100bd578063b18c25ab1161008c578063f2fde38b11610071578063f2fde38b1461067d578063f55f452314610690578063f75a3b7b1461069957600080fd5b8063b18c25ab146105fc578063dd62ed3e1461061857600080fd5b806395d89b4114610595578063a7ab69611461059d578063a8968a2d146105c1578063a9059cbb146105e957600080fd5b80637df26b2d116100f95780637df26b2d146104ac5780638da5cb5b146104bf578063935a8b84146104c7578063937b2581146104da57600080fd5b80636f307dc31461041957806370a0823114610446578063715018a61461049b5780637b0a47ee146104a357600080fd5b806323b872dd116101bd5780633289d7da1161018c57806363e5ca341161017157806363e5ca34146103ae57806363f1181a146103c15780636ca4410d1461040657600080fd5b80633289d7da146103935780633ba0b9a9146103a657600080fd5b806323b872dd146103405780632eea5633146103535780632f4f21e214610366578063313ce5671461037957600080fd5b806318160ddd116101f957806318160ddd146102c15780631e465e5e146102e8578063205c2878146102fd578063228cb7331461031057600080fd5b806306fdde031461022b578063095ea7b3146102495780630cd865ec1461026c5780630e1a03991461028d575b600080fd5b6102336106ac565b6040516102409190612929565b60405180910390f35b61025c6102573660046129b7565b610781565b6040519015158152602001610240565b61027f61027a3660046129e3565b61079b565b604051908152602001610240565b6102a061029b366004612a00565b610960565b6040516fffffffffffffffffffffffffffffffff9091168152602001610240565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461027f565b6102fb6102f6366004612a32565b610986565b005b61025c61030b3660046129b7565b610a0e565b6003546102a09070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b61025c61034e366004612a4d565b610acb565b6102fb6103613660046129e3565b610ae4565b61025c6103743660046129b7565b610b5f565b610381610d87565b60405160ff9091168152602001610240565b6102fb6103a1366004612aae565b610e5e565b6102a0611252565b6102fb6103bc366004612ae1565b611343565b6002546103f1907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610240565b61027f610414366004612b6b565b611432565b6104216116de565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610240565b61027f6104543660046129e3565b73ffffffffffffffffffffffffffffffffffffffff1660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b6102fb611720565b61027f60045481565b6102fb6104ba366004612bcf565b611734565b610421611978565b61027f6104d53660046129e3565b6119a1565b61054c6104e8366004612a00565b600060208190529081526040902080546001909101546fffffffffffffffffffffffffffffffff9091169073ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900463ffffffff1683565b604080516fffffffffffffffffffffffffffffffff909416845273ffffffffffffffffffffffffffffffffffffffff909216602084015263ffffffff1690820152606001610240565b610233611a07565b6002546103f190700100000000000000000000000000000000900463ffffffff1681565b6002546103f19074010000000000000000000000000000000000000000900463ffffffff1681565b61025c6105f73660046129b7565b611a58565b6002546102a0906fffffffffffffffffffffffffffffffff1681565b61027f610626366004612c66565b73ffffffffffffffffffffffffffffffffffffffff91821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6102fb61068b3660046129e3565b611a66565b61027f60015481565b6102fb6106a7366004612a00565b611aca565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00916106fd90612c9f565b80601f016020809104026020016040519081016040528092919081815260200182805461072990612c9f565b80156107765780601f1061074b57610100808354040283529160200191610776565b820191906000526020600020905b81548152906001019060200180831161075957829003601f168201915b505050505091505090565b60003361078f818585611db2565b60019150505b92915050565b60006107a5611dc4565b6107ad611e1c565b6002546fffffffffffffffffffffffffffffffff166107ed61029b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b6107f79190612d1b565b6108019190612d1b565b6fffffffffffffffffffffffffffffffff1661081b6116de565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa158015610887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ab9190612d43565b6108b59190612d5c565b90506108bf6116de565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063a9059cbb906044016020604051808303816000875af1158015610936573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095a9190612d6f565b50919050565b600061079561096d611252565b83906fffffffffffffffffffffffffffffffff16611e62565b61098e611dc4565b600280547fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000063ffffffff8416908102919091179091556040519081527f61cf77e7a4ccfce117d0449d5a113db003011a722330d53210a6810ef22c5640906020015b60405180910390a150565b600080610a1b8484611e88565b9050610a256116de565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201849052919091169063a9059cbb906044016020604051808303816000875af1158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac09190612d6f565b506001949350505050565b600033610ad9858285612106565b610ac08585856121f4565b610aec611dc4565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f80dfc410dae512be68ee545165d6406d34e96a681c8f30e872ee556fd077e61090602001610a03565b6000610b69611252565b600380547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055610bb261229f565b6002805463ffffffff929092167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790553073ffffffffffffffffffffffffffffffffffffffff841603610c70576040517fec442f0500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b610c786116de565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810184905273ffffffffffffffffffffffffffffffffffffffff91909116906323b872dd906064016020604051808303816000875af1158015610cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d179190612d6f565b506000610d3e610d25611252565b84906fffffffffffffffffffffffffffffffff166122f3565b905080600003610d7d576040517f3502834200000000000000000000000000000000000000000000000000000000815260048101849052602401610c67565b61078f8482612308565b7f3b5a617e0d4c238430871a64fe18212794b0c8d05a4eac064a8c9039fb5e07008054604080517f313ce56700000000000000000000000000000000000000000000000000000000815290516000939273ffffffffffffffffffffffffffffffffffffffff169163313ce5679160048083019260209291908290030181865afa925050508015610e52575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610e4f91810190612d91565b60015b61079557601291505090565b610e66611dc4565b610e6e611252565b600380547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055610eb761229f565b600280547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff9384160217905560019082161080610f1d57506305a39a8063ffffffff8216115b15610f61576040517f12cb8dd4000000000000000000000000000000000000000000000000000000008152600160048201526305a39a806024820152604401610c67565b600082610f6c611e1c565b610f769190612d1b565b9050806fffffffffffffffffffffffffffffffff16600003610fc4576040517f6e99268600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380546fffffffffffffffffffffffffffffffff8084167001000000000000000000000000000000008102919092161790915561100b9063ffffffff808516906122f316565b6fffffffffffffffffffffffffffffffff166004556002805463ffffffff429081167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790915561107e908390612db4565b600280547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff938416027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff161778010000000000000000000000000000000000000000000000004293909316929092029190911790556fffffffffffffffffffffffffffffffff8316156111e15761112f6116de565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526fffffffffffffffffffffffffffffffff8516604482015273ffffffffffffffffffffffffffffffffffffffff91909116906323b872dd906064016020604051808303816000875af11580156111bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111df9190612d6f565b505b600254604080516fffffffffffffffffffffffffffffffff841681527401000000000000000000000000000000000000000090920463ffffffff1660208301527fd11bba24ca86aee79dd9262e204258763f92f11686c60a21e14f88133a677f5a91015b60405180910390a1505050565b60035460009081906fffffffffffffffffffffffffffffffff1661127e57670de0b6b3a7640000611294565b6003546fffffffffffffffffffffffffffffffff165b905060006112c07f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b9050806000036112d05750919050565b60025481907801000000000000000000000000000000000000000000000000900463ffffffff166112ff61229f565b6113099190612d5c565b6004546113169190612dd0565b6113209190612de7565b61133c906fffffffffffffffffffffffffffffffff8416612e22565b9250505090565b806000805b82811015611386576113728686868481811061136657611366612e35565b90506020020135611e88565b61137c9083612e22565b9150600101611348565b5061138f6116de565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201849052919091169063a9059cbb906044016020604051808303816000875af1158015611406573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142a9190612d6f565b505050505050565b600061143c611252565b600380547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9290921691909117905561148561229f565b600260186101000a81548163ffffffff021916908363ffffffff160217905550816fffffffffffffffffffffffffffffffff166000036114f1576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61150d33836fffffffffffffffffffffffffffffffff16612368565b6001805490600061151d83612e64565b9190505590506000611540836fffffffffffffffffffffffffffffffff16610960565b60025490915060009061156d90700100000000000000000000000000000000900463ffffffff1642612db4565b604080516060810182526fffffffffffffffffffffffffffffffff858116825233602080840191825263ffffffff86811685870190815260008b815292839052958220945185547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016908516178555915160019094018054955173ffffffffffffffffffffffffffffffffffffffff9095167fffffffffffffffff0000000000000000000000000000000000000000000000009096169590951774010000000000000000000000000000000000000000949092169390930217909255600280549394508593909261166091859116612d1b565b82546101009290920a6fffffffffffffffffffffffffffffffff818102199093169183160217909155604080518783168152918516602083015263ffffffff84169082015284915033907f29c908cef2964f2fb7dcfc6052cbf5b3acf7f18a2c0e92b667679f45106013399060600160405180910390a35050919050565b6000807f3b5a617e0d4c238430871a64fe18212794b0c8d05a4eac064a8c9039fb5e07005b5473ffffffffffffffffffffffffffffffffffffffff1692915050565b611728611dc4565b61173260006123c4565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561177f5750825b905060008267ffffffffffffffff16600114801561179c5750303b155b9050811580156117aa575080155b156117e1576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156118425784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b61184b3361245a565b6118be8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b908190840183828082843760009201919091525061246292505050565b6118c78b6124c5565b600280547fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000063ffffffff891602179055831561196b5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300611703565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0060205260408120546119ef90610960565b6fffffffffffffffffffffffffffffffff1692915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00916106fd90612c9f565b60003361078f8185856121f4565b611a6e611dc4565b73ffffffffffffffffffffffffffffffffffffffff8116611abe576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610c67565b611ac7816123c4565b50565b611ad2611252565b600380547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055611b1b61229f565b6002805463ffffffff929092167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff90921691909117905560055473ffffffffffffffffffffffffffffffffffffffff1680611bbd576040517fca5a9fe900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003611bf7576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c013383612368565b6000611c0c83610960565b6fffffffffffffffffffffffffffffffff169050611c286116de565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063095ea7b3906044016020604051808303816000875af1158015611c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc39190612d6f565b506040517fbd83dbe50000000000000000000000000000000000000000000000000000000081523360048201526bffffffffffffffffffffffff8216602482015273ffffffffffffffffffffffffffffffffffffffff83169063bd83dbe590604401600060405180830381600087803b158015611d3f57600080fd5b505af1158015611d53573d6000803e3d6000fd5b50506040805133815273ffffffffffffffffffffffffffffffffffffffff86166020820152908101869052606081018490527ff2ea3ee6d4d03a11390cbbcd09097d9fe2d7efb1b2825c2b509415d2fb95a7ba92506080019050611245565b611dbf8383836001612584565b505050565b33611dcd611978565b73ffffffffffffffffffffffffffffffffffffffff1614611732576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610c67565b6000611e5d611e2961229f565b600254611e54919074010000000000000000000000000000000000000000900463ffffffff16612d5c565b60045490611e62565b905090565b6000670de0b6b3a7640000611e778385612dd0565b611e819190612de7565b9392505050565b6000818152602081905260408120805460018201546fffffffffffffffffffffffffffffffff9091169263ffffffff740100000000000000000000000000000000000000008304169173ffffffffffffffffffffffffffffffffffffffff1690849003611f24576040517f0c4dee0300000000000000000000000000000000000000000000000000000000815260048101869052602401610c67565b8163ffffffff16421015611f6c576040517f90af1d4700000000000000000000000000000000000000000000000000000000815263ffffffff83166004820152602401610c67565b8073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015611fbe575073ffffffffffffffffffffffffffffffffffffffff81163314155b1561200d576040517fbd96f9b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c67565b600280548591906000906120349084906fffffffffffffffffffffffffffffffff16612e9c565b82546fffffffffffffffffffffffffffffffff9182166101009390930a92830291909202199091161790555060008581526020819052604080822080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016815560010180547fffffffffffffffff0000000000000000000000000000000000000000000000001690555173ffffffffffffffffffffffffffffffffffffffff88169187917f9c1b962e940b919d87abe7aa0561f38ae9f8a55c739839c451c25eacf0dfb8f29190a350505092915050565b73ffffffffffffffffffffffffffffffffffffffff83811660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146121ee57818110156121df576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610c67565b6121ee84848484036000612584565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316612244576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610c67565b73ffffffffffffffffffffffffffffffffffffffff8216612294576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610c67565b611dbf8383836126f1565b60025460009074010000000000000000000000000000000000000000900463ffffffff1642106122ee575060025474010000000000000000000000000000000000000000900463ffffffff1690565b504290565b600081611e77670de0b6b3a764000085612dd0565b73ffffffffffffffffffffffffffffffffffffffff8216612358576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610c67565b612364600083836126f1565b5050565b73ffffffffffffffffffffffffffffffffffffffff82166123b8576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610c67565b612364826000836126f1565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611a6e6128c2565b61246a6128c2565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036124b68482612f3a565b50600481016121ee8382612f3a565b6124cd6128c2565b7f3b5a617e0d4c238430871a64fe18212794b0c8d05a4eac064a8c9039fb5e07003073ffffffffffffffffffffffffffffffffffffffff83160361253f576040517f438d6fe3000000000000000000000000000000000000000000000000000000008152306004820152602401610c67565b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0073ffffffffffffffffffffffffffffffffffffffff85166125f5576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610c67565b73ffffffffffffffffffffffffffffffffffffffff8416612645576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610c67565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600183016020908152604080832093881683529290522083905581156126ea578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516126e191815260200190565b60405180910390a35b5050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0073ffffffffffffffffffffffffffffffffffffffff841661274c57818160020160008282546127419190612e22565b909155506127fe9050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208290526040902054828110156127d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861660048201526024810182905260448101849052606401610c67565b73ffffffffffffffffffffffffffffffffffffffff851660009081526020839052604090209083900390555b73ffffffffffffffffffffffffffffffffffffffff8316612829576002810180548390039055612855565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020829052604090208054830190555b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128b491815260200190565b60405180910390a350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611732576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081526000825180602084015260005b81811015612957576020818601810151604086840101520161293a565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114611ac757600080fd5b600080604083850312156129ca57600080fd5b82356129d581612995565b946020939093013593505050565b6000602082840312156129f557600080fd5b8135611e8181612995565b600060208284031215612a1257600080fd5b5035919050565b803563ffffffff81168114612a2d57600080fd5b919050565b600060208284031215612a4457600080fd5b611e8182612a19565b600080600060608486031215612a6257600080fd5b8335612a6d81612995565b92506020840135612a7d81612995565b929592945050506040919091013590565b80356fffffffffffffffffffffffffffffffff81168114612a2d57600080fd5b60008060408385031215612ac157600080fd5b612aca83612a8e565b9150612ad860208401612a19565b90509250929050565b600080600060408486031215612af657600080fd5b8335612b0181612995565b9250602084013567ffffffffffffffff811115612b1d57600080fd5b8401601f81018613612b2e57600080fd5b803567ffffffffffffffff811115612b4557600080fd5b8660208260051b8401011115612b5a57600080fd5b939660209190910195509293505050565b600060208284031215612b7d57600080fd5b611e8182612a8e565b60008083601f840112612b9857600080fd5b50813567ffffffffffffffff811115612bb057600080fd5b602083019150836020828501011115612bc857600080fd5b9250929050565b60008060008060008060808789031215612be857600080fd5b8635612bf381612995565b9550602087013567ffffffffffffffff811115612c0f57600080fd5b612c1b89828a01612b86565b909650945050604087013567ffffffffffffffff811115612c3b57600080fd5b612c4789828a01612b86565b9094509250612c5a905060608801612a19565b90509295509295509295565b60008060408385031215612c7957600080fd5b8235612c8481612995565b91506020830135612c9481612995565b809150509250929050565b600181811c90821680612cb357607f821691505b60208210810361095a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6fffffffffffffffffffffffffffffffff818116838216019081111561079557610795612cec565b600060208284031215612d5557600080fd5b5051919050565b8181038181111561079557610795612cec565b600060208284031215612d8157600080fd5b81518015158114611e8157600080fd5b600060208284031215612da357600080fd5b815160ff81168114611e8157600080fd5b63ffffffff818116838216019081111561079557610795612cec565b808202811582820484141761079557610795612cec565b600082612e1d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082018082111561079557610795612cec565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e9557612e95612cec565b5060010190565b6fffffffffffffffffffffffffffffffff828116828216039081111561079557610795612cec565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f821115611dbf57806000526020600020601f840160051c81016020851015612f1a5750805b601f840160051c820191505b818110156126ea5760008155600101612f26565b815167ffffffffffffffff811115612f5457612f54612ec4565b612f6881612f628454612c9f565b84612ef3565b6020601f821160018114612fba5760008315612f845750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556126ea565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156130085787850151825560209485019460019092019101612fe8565b508482101561304457868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220df7fe65781ff3de57537e8b3dae3065b278fdf6e4ff61bf04212e67ca96e2d0264736f6c634300081c0033