0 txs
381 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
asset
viewfunction asset() view returns (address)
balance
viewfunction balance() view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
claimFee
viewfunction claimFee() view returns (uint256)
convertToAssets
viewfunction convertToAssets(uint256 shares) view returns (uint256)
convertToShares
viewfunction convertToShares(uint256 assets) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
feeDecimals
purefunction feeDecimals() pure returns (uint8)
feeInterval
viewfunction feeInterval() view returns (uint256)
feeRecipient
viewfunction feeRecipient() view returns (address)
getFee
viewfunction getFee(address account) view returns (uint256)
getTimeLeft
viewfunction getTimeLeft(address account) view returns (uint256)
maxDeposit
viewfunction maxDeposit(address) view returns (uint256)
maxFee
viewfunction maxFee() view returns (uint256)
maxFeeLimit
viewfunction maxFeeLimit() view returns (uint256)
maxMint
viewfunction maxMint(address) view returns (uint256)
maxRedeem
viewfunction maxRedeem(address owner) view returns (uint256)
maxWithdraw
viewfunction maxWithdraw(address owner) view returns (uint256)
minFee
viewfunction minFee() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
pendingRewards
viewfunction pendingRewards(address account) view returns (uint256 amount)
previewDeposit
viewfunction previewDeposit(uint256 assets) view returns (uint256)
previewMint
viewfunction previewMint(uint256 shares) view returns (uint256)
previewRedeem
viewfunction previewRedeem(uint256 shares) view returns (uint256)
previewWithdraw
viewfunction previewWithdraw(uint256 assets) view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
symbol
viewfunction symbol() view returns (string)
totalAssets
viewfunction totalAssets() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
acceptOwnership
nonpayablefunction acceptOwnership()
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
claim
nonpayablefunction claim(address account)
deposit
nonpayablefunction deposit(address account, uint256 amount) returns (uint256)
deposit
nonpayablefunction deposit(uint256 assets, address receiver) returns (uint256)
initialize
nonpayablefunction initialize(address owner_, address vault_, address feeRecipient_, address token_, uint256 minFee_, uint256 maxFee_, uint256 feeInterval_, uint256 maxFeeLimit_, uint256 claimFee_)
mint
nonpayablefunction mint(uint256 shares, address receiver) returns (uint256)
redeem
nonpayablefunction redeem(uint256 shares, address receiver, address owner) returns (uint256)
renounceOwnership
nonpayablefunction renounceOwnership()
setClaimFee
nonpayablefunction setClaimFee(uint256 claimFee_)
setFeeRecipient
nonpayablefunction setFeeRecipient(address feeRecipient_)
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)
updateFees
nonpayablefunction updateFees(uint256 feeInterval_, uint256 minFee_, uint256 maxFee_)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw(address account, uint256 amount) returns (uint256)
withdraw
nonpayablefunction withdraw(uint256 assets, address receiver, address owner) returns (uint256)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Claim
event Claim(address indexed account, uint256 amount)
Deposit
event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares)
Initialized
event Initialized(uint64 version)
InitStaking4626Upgradeable
event InitStaking4626Upgradeable(address vault, address asset)
InitStakingWithFee4626Upgradeable
event InitStakingWithFee4626Upgradeable(address indexed vault, address indexed asset, address indexed feeRecipient, uint256 minFee, uint256 maxFee, uint256 feeInterval, uint256 maxFeeLimit)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Rewards
event Rewards(address indexed account, uint256 amount)
RewardsWithFee
event RewardsWithFee(address indexed account, address indexed feeRecipient, uint256 rewards, uint256 fee)
SetClaimFee
event SetClaimFee(uint256 claimFee)
SetFeeRecipient
event SetFeeRecipient(address indexed feeRecipient)
SetMaxFeeLimit
event SetMaxFeeLimit(uint256 maxFeeLimit)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Update
event Update(uint256 accRewardsPerShare, uint256 released)
UpdateFee
event UpdateFee(address account)
UpdateFees
event UpdateFees(uint256 minFee, uint256 maxFee, uint256 feeInterval)
Upgraded
event Upgraded(address indexed implementation)
Withdraw
event Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)
WithdrawWithFee
event WithdrawWithFee(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares, address feeRecipient, uint256 feeAssets, uint256 feeShares)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
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)
ERC4626ExceededMaxDeposit
error ERC4626ExceededMaxDeposit(address receiver, uint256 assets, uint256 max)
ERC4626ExceededMaxMint
error ERC4626ExceededMaxMint(address receiver, uint256 shares, uint256 max)
ERC4626ExceededMaxRedeem
error ERC4626ExceededMaxRedeem(address owner, uint256 shares, uint256 max)
ERC4626ExceededMaxWithdraw
error ERC4626ExceededMaxWithdraw(address owner, uint256 assets, uint256 max)
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
MathOverflowedMulDiv
error MathOverflowedMulDiv()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000044565b6200002a62000044565b6200003462000044565b6200003e62000044565b620000f8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000955760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000f55780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516130bd62000122600039600081816117a2015281816117cb015261190c01526130bd6000f3fe6080604052600436106102e45760003560e01c8063715018a611610190578063beb3e382116100dc578063dd62ed3e11610095578063ef8b30f71161006f578063ef8b30f714610771578063f2fde38b1461083a578063f3fef3a31461085a578063fc66e7841461087a57600080fd5b8063dd62ed3e146107e5578063e30c397814610805578063e74b981b1461081a57600080fd5b8063beb3e38214610751578063c63d75b614610505578063c6e6f59214610771578063cc0f178614610791578063ce96cb77146107a5578063d905777e146107c557600080fd5b8063a9059cbb11610149578063b460af9411610123578063b460af94146106dc578063b69ef8a8146106fc578063b88c914814610711578063ba0876521461073157600080fd5b8063a9059cbb1461066b578063ad3cb1cc1461068b578063b3d7f6b9146106bc57600080fd5b8063715018a6146105e257806379ba5097146105f75780638da5cb5b1461060c57806394bf804d1461062157806395d89b411461064157806399d32fc41461065657600080fd5b80632e75ab501161024f57806347e7ef241161020857806352d1902d116101e257806352d1902d1461057857806366b0bebc1461058d5780636e553f65146105a257806370a08231146105c257600080fd5b806347e7ef24146105455780634cdad506146103485780634f1ef2861461056557600080fd5b80632e75ab5014610471578063313ce5671461049157806331d7a262146104b857806338d52e0f146104d8578063402d267d14610505578063469048401461052757600080fd5b8063111eb8b1116102a1578063111eb8b1146103b857806318160ddd146103d85780631e83409a146103fa578063224290851461041c57806323b872dd1461043c57806324ec75901461045c57600080fd5b806301e1d114146102e957806301f59d161461031157806306fdde031461032657806307a2d13a14610348578063095ea7b3146103685780630a28a47714610398575b600080fd5b3480156102f557600080fd5b506102fe61088f565b6040519081526020015b60405180910390f35b34801561031d57600080fd5b506035546102fe565b34801561033257600080fd5b5061033b610913565b6040516103089190612979565b34801561035457600080fd5b506102fe6103633660046129ac565b6109d6565b34801561037457600080fd5b506103886103833660046129e1565b6109e9565b6040519015158152602001610308565b3480156103a457600080fd5b506102fe6103b33660046129ac565b610a01565b3480156103c457600080fd5b506102fe6103d3366004612a0b565b610a0e565b3480156103e457600080fd5b50600080516020613028833981519152546102fe565b34801561040657600080fd5b5061041a610415366004612a0b565b610a7d565b005b34801561042857600080fd5b5061041a610437366004612a26565b610ad9565b34801561044857600080fd5b50610388610457366004612a52565b610af1565b34801561046857600080fd5b506034546102fe565b34801561047d57600080fd5b5061041a61048c3660046129ac565b610b15565b34801561049d57600080fd5b506104a6610b29565b60405160ff9091168152602001610308565b3480156104c457600080fd5b506102fe6104d3366004612a0b565b610b55565b3480156104e457600080fd5b506104ed610bc6565b6040516001600160a01b039091168152602001610308565b34801561051157600080fd5b506102fe610520366004612a0b565b5060001990565b34801561053357600080fd5b506068546001600160a01b03166104ed565b34801561055157600080fd5b506102fe6105603660046129e1565b610be9565b61041a610573366004612aa4565b610bf5565b34801561058457600080fd5b506102fe610c14565b34801561059957600080fd5b506033546102fe565b3480156105ae57600080fd5b506102fe6105bd366004612b66565b610c31565b3480156105ce57600080fd5b506102fe6105dd366004612a0b565b610c5d565b3480156105ee57600080fd5b5061041a610c85565b34801561060357600080fd5b5061041a610c99565b34801561061857600080fd5b506104ed610cde565b34801561062d57600080fd5b506102fe61063c366004612b66565b610d07565b34801561064d57600080fd5b5061033b610d25565b34801561066257600080fd5b50609c546102fe565b34801561067757600080fd5b506103886106863660046129e1565b610d64565b34801561069757600080fd5b5061033b604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156106c857600080fd5b506102fe6106d73660046129ac565b610d72565b3480156106e857600080fd5b506102fe6106f7366004612b92565b610d7f565b34801561070857600080fd5b506102fe610dd7565b34801561071d57600080fd5b506102fe61072c366004612a0b565b610df4565b34801561073d57600080fd5b506102fe61074c366004612b92565b610e94565b34801561075d57600080fd5b5061041a61076c366004612bce565b610ee3565b34801561077d57600080fd5b506102fe61078c3660046129ac565b611066565b34801561079d57600080fd5b5060126104a6565b3480156107b157600080fd5b506102fe6107c0366004612a0b565b611073565b3480156107d157600080fd5b506102fe6107e0366004612a0b565b611088565b3480156107f157600080fd5b506102fe610800366004612c50565b611093565b34801561081157600080fd5b506104ed6110dd565b34801561082657600080fd5b5061041a610835366004612a0b565b611106565b34801561084657600080fd5b5061041a610855366004612a0b565b611117565b34801561086657600080fd5b506102fe6108753660046129e1565b61119c565b34801561088657600080fd5b506069546102fe565b60008060008051602061306883398151915280546040516370a0823160e01b81523060048201529192506001600160a01b0316906370a0823190602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d9190612c7a565b91505090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060916000805160206130088339815191529161095290612c93565b80601f016020809104026020016040519081016040528092919081815260200182805461097e90612c93565b80156109cb5780601f106109a0576101008083540402835291602001916109cb565b820191906000526020600020905b8154815290600101906020018083116109ae57829003601f168201915b505050505091505090565b60006109e38260006111a9565b92915050565b6000336109f78185856111f0565b5060019392505050565b60006109e38260016111fd565b6001600160a01b038116600090815260366020908152604080832081516080810183528154815260018201549381019390935260028101549183019190915260030154606082018190524211610a7357428160600151610a6e9190612ce3565b610a76565b60005b9392505050565b610a8561123a565b6000610a9082611293565b9050816001600160a01b03167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d482604051610acd91815260200190565b60405180910390a25050565b610ae1611492565b610aec83838361149a565b505050565b600033610aff858285611591565b610b0a8585856115e4565b506001949350505050565b610b1d611643565b610b2681611675565b50565b60008060008051602061306883398151915290506000815461090d9190600160a01b900460ff16612cf6565b600080610b606116b1565b506001600160a01b038416600090815260036020526040902054909150808211610b8e575060009392505050565b670de0b6b3a7640000610ba085610c5d565b610baa8385612ce3565b610bb49190612d0f565b610bbe9190612d3c565b949350505050565b6000806000805160206130688339815191525b546001600160a01b031692915050565b6000610a768284610c31565b610bfd611797565b610c068261183c565b610c108282611844565b5050565b6000610c1e611901565b5060008051602061304883398151915290565b6000600019610c44565b60405180910390fd5b6000610c4f85611066565b9050610bbe3385878461194a565b6001600160a01b03166000908152600080516020613008833981519152602052604090205490565b610c8d611643565b610c9760006119d7565b565b3380610ca36110dd565b6001600160a01b031614610cd55760405163118cdaa760e01b81526001600160a01b0382166004820152602401610c3b565b610b26816119d7565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300610bd9565b60006000196000610d1785610d72565b9050610bbe3385838861194a565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060916000805160206130088339815191529161095290612c93565b6000336109f78185856115e4565b60006109e38260016111a9565b600080610d8b83611073565b905080851115610db457828582604051633fa733bb60e21b8152600401610c3b93929190612d50565b6000610dbf86610a01565b9050610dce3386868985611a0f565b95945050505050565b6000610def6000805160206130288339815191525490565b905090565b6001600160a01b038116600090815260366020908152604080832081516080810183528154815260018201549381019390935260028101549183019190915260030154606082015281610e4684610a0e565b905060008111610e5a578160200151610bbe565b8151602083015160408401518391610e7191612ce3565b610e7b9190612d0f565b610e859190612d3c565b8260200151610bbe9190612d71565b600080610ea083611088565b905080851115610ec957828582604051632e52afbb60e21b8152600401610c3b93929190612d50565b6000610ed4866109d6565b9050610dce338686848a611a0f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff16600081158015610f295750825b905060008267ffffffffffffffff166001148015610f465750303b155b905081158015610f54575080155b15610f725760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f9c57845460ff60401b1916600160401b1785555b610fe76040518060400160405280600b81526020016a5a4854204661726d696e6760a81b81525060405180604001604052806006815260200165199c9b56921560d21b815250611bc6565b610ff68b8e8e8d8d8d8d611bd8565b610fff8e611c63565b611007611c74565b61101086611675565b831561105657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050505050565b60006109e38260006111fd565b60006109e361108183610c5d565b60006111a9565b60006109e382610c5d565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610bd9565b61110e611643565b610b2681611c7c565b61111f611643565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b0383169081178255611163610cde565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b6000610a76828485610d7f565b6000610a766111b661088f565b6111c1906001612d71565b6111cd6000600a612e68565b600080516020613028833981519152546111e79190612d71565b85919085611cc6565b610aec8383836001611d15565b6000610a7661120d82600a612e68565b600080516020613028833981519152546112279190612d71565b61122f61088f565b6111e7906001612d71565b6000806112456116b1565b6001829055600281905560408051838152602081018390529294509092507f8ecf343d22d1934aea3fb34b7332371552b19286c5bc696adae16c7690a90d5491015b60405180910390a15050565b600080670de0b6b3a76400006112a884610c5d565b6001600160a01b0385166000908152600360205260409020546001546112ce9190612ce3565b6112d89190612d0f565b6112e29190612d3c565b905080158015906112fb57506001600160a01b03831615155b1561146e57600061130e6012600a612e68565b611319906064612d0f565b609c546113269084612d0f565b6113309190612d3c565b9050600061133e8284612ce3565b905060006113546068546001600160a01b031690565b600054604051631f72642160e31b81526001600160a01b0380841660048301526024820187905292935091169063fb93210890604401600060405180830381600087803b1580156113a457600080fd5b505af11580156113b8573d6000803e3d6000fd5b5050600054604051631f72642160e31b81526001600160a01b038a8116600483015260248201879052909116925063fb9321089150604401600060405180830381600087803b15801561140a57600080fd5b505af115801561141e573d6000803e3d6000fd5b505060408051858152602081018790526001600160a01b0380861694508a1692507fda5b2d6106cde39b502ce721eef72d96d7ac04c7e2b429e9d7e59c4e33bfb0a5910160405180910390a35050505b6001546001600160a01b039093166000908152600360205260409020929092555090565b610c97611643565b6069548111156114ec5760405162461bcd60e51b815260206004820152601a60248201527f4665654d616e616765725570677261646561626c653a203030310000000000006044820152606401610c3b565b8082111561153c5760405162461bcd60e51b815260206004820152601a60248201527f4665654d616e616765725570677261646561626c653a203030320000000000006044820152606401610c3b565b60338390556034829055603581905560408051838152602081018390529081018490527f9fef908e44cc0f51b9e9f7fd26bc506a50448657da0dc10a9661e37bc1c4a3929060600160405180910390a1505050565b600061159d8484611093565b905060001981146115de57818110156115cf57828183604051637dc7a0d960e11b8152600401610c3b93929190612d50565b6115de84848484036000611d15565b50505050565b6001600160a01b03831661160e57604051634b637e8f60e11b815260006004820152602401610c3b565b6001600160a01b0382166116385760405163ec442f0560e01b815260006004820152602401610c3b565b610aec838383611df4565b3361164c610cde565b6001600160a01b031614610c975760405163118cdaa760e01b8152336004820152602401610c3b565b609c8190556040518181527f13fa675fefcae94b0250d92c1fec53cd08f7031592b28bf9429f840b7d255097906020015b60405180910390a150565b60008060006116cc6000805160206130288339815191525490565b9050806000036116e157506000928392509050565b60008054604051632614965760e21b81523060048201526001600160a01b0390911690639852595c90602401602060405180830381865afa15801561172a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174e9190612c7a565b90506000600254826117609190612ce3565b90508261177582670de0b6b3a7640000612d0f565b61177f9190612d3c565b60015461178c9190612d71565b959194509092505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061181e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611812600080516020613048833981519152546001600160a01b031690565b6001600160a01b031614155b15610c975760405163703e46dd60e11b815260040160405180910390fd5b610b26611643565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561189e575060408051601f3d908101601f1916820190925261189b91810190612c7a565b60015b6118c657604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610c3b565b60008051602061304883398151915281146118f757604051632a87526960e21b815260048101829052602401610c3b565b610aec8383611e62565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c975760405163703e46dd60e11b815260040160405180910390fd5b6000805160206130688339815191528054611970906001600160a01b0316863086611eb8565b61197a8483611f1f565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d785856040516119c8929190918252602082015260400190565b60405180910390a35050505050565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319168155610c1082611f55565b6000611a1a84610df4565b90506000808215611b49576012611a3281600a612e77565b611a3d906064612d0f565b611a478588612d0f565b611a519190612d3c565b9250611a5e81600a612e77565b611a69906064612d0f565b611a738587612d0f565b611a7d9190612d3c565b6068549092506001600160a01b0316611afc57611a98610bc6565b6001600160a01b03166342966c68846040518263ffffffff1660e01b8152600401611ac591815260200190565b600060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b50505050611b25565b606854611b25906001600160a01b031684611b15610bc6565b6001600160a01b03169190611fc6565b611b2f8783611ff7565b611b398387612ce3565b9550611b458286612ce3565b9450505b611b56888888888861202d565b60685460408051878152602081018790526001600160a01b039283168183015260608101859052608081018490529051888316928a811692908c16917fca925e4cd8ef8921d9e3d344801ec968dd4e1b2a6b5bcd2c22524f0bb4f3a8ad9181900360a00190a45050505050505050565b611bce6120e2565b610c10828261212b565b611be06120e2565b611bea858261217c565b611bf48787612196565b611bff8285856121f0565b6040805183815260208101869052908101849052606081018290526001600160a01b0380871691898216918916907fc7fffa84225bb8852167aa3f21721add87902a38a62c31a33b46d565e27a5ac69060800160405180910390a450505050505050565b611c6b6120e2565b610b2681612203565b610c976120e2565b606880546001600160a01b0319166001600160a01b0383169081179091556040517f2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a7390600090a250565b600080611cd4868686612235565b9050611cdf836122f9565b8015611cfb575060008480611cf657611cf6612d26565b868809115b15610dce57611d0b600182612d71565b9695505050505050565b6000805160206130088339815191526001600160a01b038516611d4e5760405163e602df0560e01b815260006004820152602401610c3b565b6001600160a01b038416611d7857604051634a1406b160e11b815260006004820152602401610c3b565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115611ded57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516119c891815260200190565b5050505050565b6001600160a01b0383161580611e1157506001600160a01b038216155b611e4e5760405162461bcd60e51b815260206004820152600e60248201526d756e7472616e7366657261626c6560901b6044820152606401610c3b565b611e59838383612326565b610aec8261234d565b611e6b826123ef565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611eb057610aec8282612454565b610c106124c1565b6040516001600160a01b0384811660248301528381166044830152606482018390526115de9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506124e0565b6001600160a01b038216611f495760405163ec442f0560e01b815260006004820152602401610c3b565b610c1060008383611df4565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6040516001600160a01b03838116602483015260448201839052610aec91859182169063a9059cbb90606401611eed565b6001600160a01b03821661202157604051634b637e8f60e11b815260006004820152602401610c3b565b610c1082600083611df4565b6000805160206130688339815191526001600160a01b038681169085161461205a5761205a848784611591565b6120648483611ff7565b805461207a906001600160a01b03168685611fc6565b836001600160a01b0316856001600160a01b0316876001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db86866040516120d2929190918252602082015260400190565b60405180910390a4505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610c9757604051631afcd79f60e31b815260040160405180910390fd5b6121336120e2565b6000805160206130088339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0361216d8482612ed1565b50600481016115de8382612ed1565b6121846120e2565b61218d82611c7c565b610c1081612543565b61219e6120e2565b6121a782612578565b6121b081612589565b604080516001600160a01b038084168252841660208201527fe45bcfdf5117e55bffa635e2cece089c78f932e69e71602add8997ddcf645bac9101611287565b6121f86120e2565b610aec8383836125b3565b61220b6120e2565b6001600160a01b038116610cd557604051631e4fbdf760e01b815260006004820152602401610c3b565b600083830281600019858709828110838203039150508060000361226c5783828161226257612262612d26565b0492505050610a76565b80841161228c5760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000600282600381111561230f5761230f612f91565b6123199190612fa7565b60ff166001149050919050565b61232e61123a565b61233783611293565b5061234182611293565b50610aec8383836125bb565b60006040518060800160405280603354815260200160345481526020016035548152602001603354426123809190612d71565b90526001600160a01b03831660008181526036602090815260409182902084518155848201516001820155848301516002820155606085015160039091015590519182529192507fbb04e879061fc4bec637ced5c14a6dd542181fb6216588741ff189f4c0db26c39101611287565b806001600160a01b03163b60000361242557604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610c3b565b60008051602061304883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516124719190612fc9565b600060405180830381855af49150503d80600081146124ac576040519150601f19603f3d011682016040523d82523d6000602084013e6124b1565b606091505b5091509150610dce8583836126e6565b3415610c975760405163b398979f60e01b815260040160405180910390fd5b60006124f56001600160a01b0384168361273d565b9050805160001415801561251a5750808060200190518101906125189190612fe5565b155b15610aec57604051635274afe760e01b81526001600160a01b0384166004820152602401610c3b565b60698190556040518181527f2635777184f9064531c83ce7ce0178c73602733019ee533a7cb257263cf55bf8906020016116a6565b6125806120e2565b610b268161274b565b6125916120e2565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b610ae16120e2565b6000805160206130088339815191526001600160a01b0384166125f757818160020160008282546125ec9190612d71565b909155506126569050565b6001600160a01b038416600090815260208290526040902054828110156126375784818460405163391434e360e21b8152600401610c3b93929190612d50565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316612674576002810180548390039055612693565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126d891815260200190565b60405180910390a350505050565b6060826126f657610a6e826127bd565b815115801561270d57506001600160a01b0384163b155b1561273657604051639996b31560e01b81526001600160a01b0385166004820152602401610c3b565b5080610a76565b6060610a76838360006127e6565b6127536120e2565b60008051602061306883398151915260008061276e84612879565b915091508161277e576012612780565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b8051156127cd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60608147101561280b5760405163cd78605960e01b8152306004820152602401610c3b565b600080856001600160a01b031684866040516128279190612fc9565b60006040518083038185875af1925050503d8060008114612864576040519150601f19603f3d011682016040523d82523d6000602084013e612869565b606091505b5091509150611d0b8683836126e6565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b038716916128c091612fc9565b600060405180830381855afa9150503d80600081146128fb576040519150601f19603f3d011682016040523d82523d6000602084013e612900565b606091505b509150915081801561291457506020815110155b156129485760008180602001905181019061292f9190612c7a565b905060ff8111612946576001969095509350505050565b505b5060009485945092505050565b60005b83811015612970578181015183820152602001612958565b50506000910152565b6020815260008251806020840152612998816040850160208701612955565b601f01601f19169190910160400192915050565b6000602082840312156129be57600080fd5b5035919050565b80356001600160a01b03811681146129dc57600080fd5b919050565b600080604083850312156129f457600080fd5b6129fd836129c5565b946020939093013593505050565b600060208284031215612a1d57600080fd5b610a76826129c5565b600080600060608486031215612a3b57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612a6757600080fd5b612a70846129c5565b9250612a7e602085016129c5565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612ab757600080fd5b612ac0836129c5565b9150602083013567ffffffffffffffff80821115612add57600080fd5b818501915085601f830112612af157600080fd5b813581811115612b0357612b03612a8e565b604051601f8201601f19908116603f01168101908382118183101715612b2b57612b2b612a8e565b81604052828152886020848701011115612b4457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060408385031215612b7957600080fd5b82359150612b89602084016129c5565b90509250929050565b600080600060608486031215612ba757600080fd5b83359250612bb7602085016129c5565b9150612bc5604085016129c5565b90509250925092565b60008060008060008060008060006101208a8c031215612bed57600080fd5b612bf68a6129c5565b9850612c0460208b016129c5565b9750612c1260408b016129c5565b9650612c2060608b016129c5565b989b979a50959860808101359760a0820135975060c0820135965060e08201359550610100909101359350915050565b60008060408385031215612c6357600080fd5b612c6c836129c5565b9150612b89602084016129c5565b600060208284031215612c8c57600080fd5b5051919050565b600181811c90821680612ca757607f821691505b602082108103612cc757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109e3576109e3612ccd565b60ff81811683821601908111156109e3576109e3612ccd565b80820281158282048414176109e3576109e3612ccd565b634e487b7160e01b600052601260045260246000fd5b600082612d4b57612d4b612d26565b500490565b6001600160a01b039390931683526020830191909152604082015260600190565b808201808211156109e3576109e3612ccd565b600181815b80851115612dbf578160001904821115612da557612da5612ccd565b80851615612db257918102915b93841c9390800290612d89565b509250929050565b600082612dd6575060016109e3565b81612de3575060006109e3565b8160018114612df95760028114612e0357612e1f565b60019150506109e3565b60ff841115612e1457612e14612ccd565b50506001821b6109e3565b5060208310610133831016604e8410600b8410161715612e42575081810a6109e3565b612e4c8383612d84565b8060001904821115612e6057612e60612ccd565b029392505050565b6000610a7660ff841683612dc7565b6000610a768383612dc7565b601f821115610aec57600081815260208120601f850160051c81016020861015612eaa5750805b601f850160051c820191505b81811015612ec957828155600101612eb6565b505050505050565b815167ffffffffffffffff811115612eeb57612eeb612a8e565b612eff81612ef98454612c93565b84612e83565b602080601f831160018114612f345760008415612f1c5750858301515b600019600386901b1c1916600185901b178555612ec9565b600085815260208120601f198616915b82811015612f6357888601518255948401946001909101908401612f44565b5085821015612f815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b600060ff831680612fba57612fba612d26565b8060ff84160691505092915050565b60008251612fdb818460208701612955565b9190910192915050565b600060208284031215612ff757600080fd5b81518015158114610a7657600080fdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00a26469706673582212209e5c6b6349d87a66d40611e7f2177217c60de70f0bb7bec65109c3ee6d3bde0964736f6c63430008140033