1 tx
2.4k calls
constructor
constructor(address _core, address _assetToken, address _receiptToken, address _accounting)
functions
accounting
viewfunction accounting() view returns (address)
assets
viewfunction assets() view returns (uint256)
assetToken
viewfunction assetToken() view returns (address)
beforeRedeemHook
viewfunction beforeRedeemHook() view returns (address)
cap
viewfunction cap() view returns (uint256)
core
viewfunction core() view returns (address)
liquidity
viewfunction liquidity() view returns (uint256)
MAX_QUEUE_LENGTH
viewfunction MAX_QUEUE_LENGTH() view returns (uint256)
maxDeposit
viewfunction maxDeposit() view returns (uint256)
maxSlippage
viewfunction maxSlippage() view returns (uint256)
minRedemptionAmount
viewfunction minRedemptionAmount() view returns (uint256)
paused
viewfunction paused() view returns (bool)
queue
viewfunction queue() view returns (uint128 _begin, uint128 _end)
queueLength
viewfunction queueLength() view returns (uint256)
receiptToAsset
viewfunction receiptToAsset(uint256 _receiptAmount) view returns (uint256)
receiptToken
viewfunction receiptToken() view returns (address)
totalEnqueuedRedemptions
viewfunction totalEnqueuedRedemptions() view returns (uint256)
totalPendingClaims
viewfunction totalPendingClaims() view returns (uint256)
userPendingClaims
viewfunction userPendingClaims(address recipient) view returns (uint256 assetAmount)
claimRedemption
nonpayablefunction claimRedemption(address _recipient)
deposit
nonpayablefunction deposit()
emergencyAction
payablefunction emergencyAction(tuple[] calls) payable returns (bytes[] returnData)
pause
nonpayablefunction pause()
redeem
nonpayablefunction redeem(address _to, uint256 _receiptAmountIn) returns (uint256)
setBeforeRedeemHook
nonpayablefunction setBeforeRedeemHook(address _beforeRedeemHook)
setCap
nonpayablefunction setCap(uint256 _newCap)
setCore
nonpayablefunction setCore(address newCore)
setMaxSlippage
nonpayablefunction setMaxSlippage(uint256 _maxSlippage)
setMinRedemptionAmount
nonpayablefunction setMinRedemptionAmount(uint256 _minRedemptionAmount)
unpause
nonpayablefunction unpause()
withdraw
nonpayablefunction withdraw(uint256 amount, address to)
events
AssetsUpdated
event AssetsUpdated(uint256 timestamp, uint256 assetsBefore, uint256 assetsAfter)
BeforeRedeemHookChanged
event BeforeRedeemHookChanged(uint256 indexed timestamp, address hook)
CapUpdated
event CapUpdated(uint256 newCap)
CoreUpdate
event CoreUpdate(address indexed oldCore, address indexed newCore)
MaxSlippageUpdated
event MaxSlippageUpdated(uint256 newMaxSlippage)
MinRedemptionAmountUpdated
event MinRedemptionAmountUpdated(uint256 indexed timestamp, uint256 amount)
Paused
event Paused(address account)
Redeem
event Redeem(uint256 indexed timestamp, address indexed to, address asset, uint256 amountIn, uint256 amountOut)
RedemptionClaimed
event RedemptionClaimed(uint256 indexed timestamp, address recipient, uint256 amount)
RedemptionFunded
event RedemptionFunded(uint256 indexed timestamp, address recipient, uint256 amount)
RedemptionPartiallyFunded
event RedemptionPartiallyFunded(uint256 indexed timestamp, address recipient, uint256 amount)
RedemptionQueued
event RedemptionQueued(uint256 indexed timestamp, address recipient, uint256 amount)
Unpaused
event Unpaused(address account)
errors
CapExceeded
error CapExceeded(uint256 newAmount, uint256 cap)
EnforcedPause
error EnforcedPause()
EnqueueAmountTooLarge
error EnqueueAmountTooLarge()
EnqueueAmountZero
error EnqueueAmountZero()
ExpectedPause
error ExpectedPause()
FundingAmountZero
error FundingAmountZero()
NoPendingClaims
error NoPendingClaims(address _recipient)
QueueIsEmpty
error QueueIsEmpty()
QueueIsFull
error QueueIsFull()
QueueTooLong
error QueueTooLong()
RedeemAmountTooLow
error RedeemAmountTooLow(uint256 _amountIn, uint256 _minRedemptionAmount)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SlippageTooHigh
error SlippageTooHigh(uint256 minAssetsOut, uint256 assetsReceived)
UnderlyingCallReverted
error UnderlyingCallReverted(bytes returnData)
creation bytecode
0x60e06040526001600855348015610014575f5ffd5b50604051612a96380380612a9683398101604081905261003391610093565b5f8054610100600160a81b0319166101006001600160a01b03968716021790559183166080525f19600155670de0b5cad2bef000600255821660a0521660c0526100e4565b80516001600160a01b038116811461008e575f5ffd5b919050565b5f5f5f5f608085870312156100a6575f5ffd5b6100af85610078565b93506100bd60208601610078565b92506100cb60408601610078565b91506100d960608601610078565b905092959194509250565b60805160a05160c0516129116101855f395f818161043701528181611a4a0152611af701525f818161054e0152818161080b015281816109c201528181610afe01528181610bc301528181611aca0152611f9f01525f81816102050152818161089601528181610a2e01528181610a6501528181610b6a01528181610c4e0152818161115301528181611869015281816119e00152611a1e01526129115ff3fe6080604052600436106101cf575f3560e01c80637df3927e116100fd578063ab91c7b011610092578063e10d29ee11610062578063e10d29ee146104f3578063ec78e8321461053d578063f2f4eb2614610570578063f308cf6514610591575f5ffd5b8063ab91c7b01461048d578063c0598b0d146104a1578063ce25b2c6146104c0578063d0e30db0146104df575f5ffd5b80638c04166f116100cd5780638c04166f146104115780639624e83e146104265780639f027e7314610459578063a66d69d71461046e575f5ffd5b80637df3927e1461039357806380009630146103b357806380dcff13146103d25780638456cb59146103fd575f5ffd5b806343f68a49116101735780636083e59a116101435780636083e59a146103415780636e73ba5b1461035557806370bf23811461036a57806371a973051461037f575f5ffd5b806343f68a49146102c3578063464f2e99146102e257806347786d37146103015780635c975abb14610320575f5ffd5b80631e9a6950116101ae5780631e9a695014610266578063355274ea146102855780633f3b03ca1461029a5780633f4ba83a146102af575f5ffd5b8062f714ce146101d35780631083f761146101f45780631a68650214610244575b5f5ffd5b3480156101de575f5ffd5b506101f26101ed366004612619565b6105b0565b005b3480156101ff575f5ffd5b506102277f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561024f575f5ffd5b5061025861069c565b60405190815260200161023b565b348015610271575f5ffd5b50610258610280366004612643565b6106aa565b348015610290575f5ffd5b5061025860015481565b3480156102a5575f5ffd5b5061025860075481565b3480156102ba575f5ffd5b506101f2610cc1565b3480156102ce575f5ffd5b506101f26102dd36600461266b565b610d9c565b3480156102ed575f5ffd5b506101f26102fc36600461266b565b610ea9565b34801561030c575f5ffd5b506101f261031b36600461266b565b610fe4565b34801561032b575f5ffd5b505f5460ff16604051901515815260200161023b565b34801561034c575f5ffd5b506102586110e9565b348015610360575f5ffd5b5061025861271081565b348015610375575f5ffd5b5061025860065481565b34801561038a575f5ffd5b50610258611119565b6103a66103a1366004612682565b6111cc565b60405161023b9190612721565b3480156103be575f5ffd5b506101f26103cd366004612784565b611467565b3480156103dd575f5ffd5b506102586103ec366004612784565b60056020525f908152604090205481565b348015610408575f5ffd5b506101f2611544565b34801561041c575f5ffd5b5061025860025481565b348015610431575f5ffd5b506102277f000000000000000000000000000000000000000000000000000000000000000081565b348015610464575f5ffd5b5061025860085481565b348015610479575f5ffd5b506101f2610488366004612784565b61161c565b348015610498575f5ffd5b50610258611754565b3480156104ac575f5ffd5b506101f26104bb366004612784565b611778565b3480156104cb575f5ffd5b50600954610227906001600160a01b031681565b3480156104ea575f5ffd5b506101f2611890565b3480156104fe575f5ffd5b5060035461051d906001600160801b0380821691600160801b90041682565b604080516001600160801b0393841681529290911660208301520161023b565b348015610548575f5ffd5b506102277f000000000000000000000000000000000000000000000000000000000000000081565b34801561057b575f5ffd5b505f5461010090046001600160a01b0316610227565b34801561059c575f5ffd5b506102586105ab36600461266b565b611978565b5f54604051632474521560e21b81527f5f33620cda06d02d58df96005b92bc83bd059a566e48e016372f3fbdc974e371600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610621573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610645919061279d565b6106855760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b61068d611995565b61069783836119d3565b505050565b5f6106a5611119565b905090565b5f6106b3611995565b5f54604051632474521560e21b81527f276ea66e969b021a947c47a128f4d53c55387336443ef7a5391a75f0d2e48d25600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610724573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610748919061279d565b6107835760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161067c565b6008548390808210156107b25760405163012c88eb60e61b81526004810192909252602482015260440161067c565b50505f6107bd611a07565b90505f6107ca8583611b73565b90505f6107d5611754565b1115610904575f6107e68284611b87565b6040516323b872dd60e01b8152336004820152306024820152604481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303815f875af1158015610859573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087d919061279d565b506108888782611b92565b604080516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081168252602082018990529181018490529088169042907f9908c9a9b44e8e318fc2d72841d07742290c2e6604a6c8931a6234855adc56e69060600160405180910390a35f9450505050610cba565b6009546001600160a01b03168015610994576040517f6aea520c0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820188905260448201849052821690636aea520c906064015f604051808303815f87803b15801561097d575f5ffd5b505af115801561098f573d5f5f3e3d5ffd5b505050505b5f61099d61069c565b9050808311610ad45760405163079cc67960e41b8152336004820152602481018890527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906379cc6790906044015f604051808303815f87803b158015610a0b575f5ffd5b505af1158015610a1d573d5f5f3e3d5ffd5b50610a579250506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690508985611cfb565b604080516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081168252602082018a90529181018590529089169042907f9908c9a9b44e8e318fc2d72841d07742290c2e6604a6c8931a6234855adc56e69060600160405180910390a382955050505050610cba565b5f610adf8286611b87565b60405163079cc67960e41b8152336004820152602481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906379cc6790906044015f604051808303815f87803b158015610b47575f5ffd5b505af1158015610b59573d5f5f3e3d5ffd5b50610b939250506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690508a84611cfb565b5f610b9e828a6127d0565b6040516323b872dd60e01b8152336004820152306024820152604481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303815f875af1158015610c11573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c35919061279d565b50610c408a82611b92565b604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116825260208201859052918101859052908b169042907f9908c9a9b44e8e318fc2d72841d07742290c2e6604a6c8931a6234855adc56e69060600160405180910390a350909550505050505b5092915050565b5f54604051632474521560e21b81527fe7276a2a84d8de556657ec9cf93a55a7d66f096e529d0582ed08e9e2208b92b5600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610d32573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d56919061279d565b610d915760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161067c565b610d99611d7b565b50565b5f54604051632474521560e21b81527f3947e2f542c6c46c543fa4f79cbd1e27fea37ed249bc3caf992570d19123642e600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610e0d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e31919061279d565b610e6c5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161067c565b60028290556040518281527f9c922f6d0c990b250e9dd0a427a5c8da7f44b960f697fecb31cbbd8ba79ec8c2906020015b60405180910390a15050565b5f54604051632474521560e21b81527f3947e2f542c6c46c543fa4f79cbd1e27fea37ed249bc3caf992570d19123642e600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610f1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3e919061279d565b610f795760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161067c565b81600181610fa35760405163012c88eb60e61b81526004810192909252602482015260440161067c565b5050600882905560405182815242907f5730a5318498413436bed4cccc1a2bbb8bde2936e2548cc2af2148cce27b8fdf906020015b60405180910390a25050565b5f54604051632474521560e21b81527f3947e2f542c6c46c543fa4f79cbd1e27fea37ed249bc3caf992570d19123642e600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611055573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611079919061279d565b6110b45760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161067c565b60018290556040518281527f3c8eb7c49d332f4c1e4d92a27cda93c31cc9452f7a408e0c6109fcddbc9946ea90602001610e9d565b5f5f6110f3611119565b90506001548110611105575f91505090565b8060015461111391906127d0565b91505090565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611198573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111bc91906127e3565b90506006548161111391906127d0565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a6004820181905233602483015260609290916101009091046001600160a01b0316906391d1485490604401602060405180830381865afa158015611242573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611266919061279d565b6112a15760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161067c565b8267ffffffffffffffff8111156112ba576112ba6127fa565b6040519080825280602002602001820160405280156112ed57816020015b60608152602001906001900390816112d85790505b5091505f5b8381101561145f575f85858381811061130d5761130d61280e565b905060200281019061131f9190612822565b61132d906020810190612784565b90505f8686848181106113425761134261280e565b90506020028101906113549190612822565b602001359050365f88888681811061136e5761136e61280e565b90506020028101906113809190612822565b61138e906040810190612840565b915091505f5f856001600160a01b03168585856040516113af929190612883565b5f6040518083038185875af1925050503d805f81146113e9576040519150601f19603f3d011682016040523d82523d5f602084013e6113ee565b606091505b509150915081819061142d576040517f4ad176bb00000000000000000000000000000000000000000000000000000000815260040161067c9190612892565b50808988815181106114415761144161280e565b602002602001018190525050505050505080806001019150506112f2565b505092915050565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa1580156114d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fc919061279d565b6115375760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161067c565b61154082611dcc565b5050565b5f54604051632474521560e21b81527ffcb9fcbfa83b897fb2d5cf4b58962164105c1e71489a37ef3ae0db3fdce576f6600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa1580156115b5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d9919061279d565b6116145760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161067c565b610d99611e3b565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa15801561168d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b1919061279d565b6116ec5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161067c565b600980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03841690811790915560405190815242907fd09cf9dd2451581ddd83b8cd3d72c0e0f8cddd023f2447bad6e1b7e8a6301d7f90602001610fd8565b5f6106a56003546001600160801b03808216600160801b9092048116919091031690565b611780611995565b5f54604051632474521560e21b81527f276ea66e969b021a947c47a128f4d53c55387336443ef7a5391a75f0d2e48d25600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa1580156117f1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611815919061279d565b6118505760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161067c565b5f61185a83611e77565b90506106976001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168483611cfb565b5f54604051632474521560e21b81527f5f33620cda06d02d58df96005b92bc83bd059a566e48e016372f3fbdc974e371600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611901573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611925919061279d565b6119605760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161067c565b611968611995565b610d9961197361069c565b611f4f565b5f5f611982611a07565b905061198e8382611b73565b9392505050565b5f5460ff16156119d1576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6115406001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168284611cfb565b6040516315d5220f60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063aea9107890602401602060405180830381865afa158015611a8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ab391906127e3565b6040516315d5220f60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529192505f917f0000000000000000000000000000000000000000000000000000000000000000169063aea9107890602401602060405180830381865afa158015611b3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6091906127e3565b9050611b6c8183612002565b9250505090565b5f611b7e8383612016565b90505b92915050565b5f611b7e838361202a565b612710611bb86003546001600160801b03808216600160801b9092048116919091031690565b10611bef576040517fb6e8f80d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8111611c28576040517fd6226cfb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6bffffffffffffffffffffffff811115611c6e576040517f1562918c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060075f828254611c7f91906128a4565b9091555050604080518082019091526bffffffffffffffffffffffff821681526001600160a01b0383166020820152611cba9060039061203e565b604080516001600160a01b03841681526020810183905242917fd032280a1d5c18c45b8e4f7cf1d3e43673ae01f28ad98c8f8ab8b088d252a25c9101610fd8565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526106979084906120fb565b611d83612186565b5f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f80546001600160a01b038381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff851617855560405193049190911692909183917f9209b7c8c06dcfd261686a663e7c55989337b18d59da5433c6f2835fb697092091a35050565b611e43611995565b5f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611daf3390565b6001600160a01b0381165f908152600560205260408120548281611ed3576040517fcf933a280000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260240161067c565b506001600160a01b0383165f90815260056020526040812081905560068054839290611f009084906127d0565b9091555050604080516001600160a01b03851681526020810183905242917fa15008b6e695cc35d35421608ccb0ed390dab78c54707b1be30293cb76296c81910160405180910390a292915050565b8015610d99575f611f6782611f62611a07565b6121c1565b9150508015611540576040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c68906024015f604051808303815f87803b158015611fe8575f5ffd5b505af1158015611ffa573d5f5f3e3d5ffd5b505050505050565b5f611b7e83670de0b6b3a7640000846123cb565b5f611b7e8383670de0b6b3a76400006123cb565b5f611b7e83670de0b6b3a7640000846123e6565b81546001600160801b03600160801b820481169181166001830190911603612092576040517fa3d0cff300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160801b038082165f908152600180860160209081526040909220855192909501516001600160a01b03166c01000000000000000000000000026bffffffffffffffffffffffff909216919091179093558354919092018216600160801b029116179055565b5f5f60205f8451602086015f885af18061211a576040513d5f823e3d81fd5b50505f513d9150811561213157806001141561213e565b6001600160a01b0384163b155b15612180576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161067c565b50505050565b5f5460ff166119d1576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f84116121fc576040517f52d1674800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007546006548590825b5f8311801561222a57506003546001600160801b03808216600160801b9092041614155b156123a4575f61223a6003612409565b80519091505f90612259906bffffffffffffffffffffffff168a612016565b82519091506bffffffffffffffffffffffff16858211156122f057859150612281828b61202a565b90505f81845f015161229391906128b7565b90506122a06003826124aa565b602080850151604080516001600160a01b03909216825291810189905242917f65860bd1fef471f7c4b2de05576592a3073b86dc626031beb2d81ae343ba84f6910160405180910390a250612346565b6122fa6003612523565b50602080840151604080516001600160a01b03909216825291810184905242917fb7e6617ade0f97e294ed70934adbf1b40613042dc2bb5aecabb208cc84042872910160405180910390a25b6020808401516001600160a01b03165f90815260059091526040812080548492906123729084906128a4565b90915550612382905082876127d0565b955061238e82866128a4565b945061239a81856127d0565b9350505050612206565b600682905560078190555f6123b982866127d0565b939650929450505050505b9250929050565b5f825f1904841183021582026123df575f5ffd5b5091020490565b5f825f1904841183021582026123fa575f5ffd5b50910281810615159190040190565b604080518082019091525f808252602082015281546001600160801b03808216600160801b9092041603612450576040516363c3654960e01b815260040160405180910390fd5b5080546001600160801b03165f908152600190910160209081526040918290208251808401909352546bffffffffffffffffffffffff811683526c0100000000000000000000000090046001600160a01b03169082015290565b81546001600160801b03808216600160801b90920416036124de576040516363c3654960e01b815260040160405180910390fd5b81546001600160801b03165f9081526001909201602052604090912080546bffffffffffffffffffffffff19166bffffffffffffffffffffffff909216919091179055565b604080518082019091525f808252602082015281546001600160801b0380821691600160801b900416810361256b576040516363c3654960e01b815260040160405180910390fd5b6001600160801b038181165f818152600186810160208181526040808520815180830190925280546bffffffffffffffffffffffff811683526c0100000000000000000000000090046001600160a01b0316828401529585529190529190925585547fffffffffffffffffffffffffffffffff000000000000000000000000000000001691909301909116179092555090565b80356001600160a01b0381168114612614575f5ffd5b919050565b5f5f6040838503121561262a575f5ffd5b8235915061263a602084016125fe565b90509250929050565b5f5f60408385031215612654575f5ffd5b61265d836125fe565b946020939093013593505050565b5f6020828403121561267b575f5ffd5b5035919050565b5f5f60208385031215612693575f5ffd5b823567ffffffffffffffff8111156126a9575f5ffd5b8301601f810185136126b9575f5ffd5b803567ffffffffffffffff8111156126cf575f5ffd5b8560208260051b84010111156126e3575f5ffd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561277857603f198786030184526127638583516126f3565b94506020938401939190910190600101612747565b50929695505050505050565b5f60208284031215612794575f5ffd5b611b7e826125fe565b5f602082840312156127ad575f5ffd5b8151801515811461198e575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115611b8157611b816127bc565b5f602082840312156127f3575f5ffd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612836575f5ffd5b9190910192915050565b5f5f8335601e19843603018112612855575f5ffd5b83018035915067ffffffffffffffff82111561286f575f5ffd5b6020019150368190038213156123c4575f5ffd5b818382375f9101908152919050565b602081525f611b7e60208301846126f3565b80820180821115611b8157611b816127bc565b6bffffffffffffffffffffffff8281168282160390811115611b8157611b816127bc56fea2646970667358221220ee1464f19bcb297fbf0b01be0eeb9ee7ddc853d7c19f6a5e5a4b3ca4e755fc0e64736f6c634300081c0033000000000000000000000000f6d48735eccf12bdc1df2674b1ce3fcb3bd25490000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000048f9e38f3070ad8945dfeae3fa70987722e3d89c0000000000000000000000007a5c5dba4fbd0e1e1a2ecdbe752fae55f6e842b3