0 txs
0 calls
constructor
No constructor.
functions
_GATEWAY_ADDRESS
viewfunction _GATEWAY_ADDRESS() view returns (address)
aavePool
viewfunction aavePool() view returns (address)
amanaVault
viewfunction amanaVault() view returns (address)
convertToAssets
viewfunction convertToAssets(uint256 shares) view returns (uint256)
convertToShares
viewfunction convertToShares(uint256 assetAmount) view returns (uint256)
getStrategyWithdrawShareAmount
viewfunction getStrategyWithdrawShareAmount(uint256 assetAmount) view returns (uint256)
harvestSwapSlippage
viewfunction harvestSwapSlippage() view returns (uint16)
inputToken
viewfunction inputToken() view returns (address)
lastProcessedNonce
viewfunction lastProcessedNonce() view returns (uint256)
minClaimableReward
viewfunction minClaimableReward() view returns (uint256)
name
viewfunction name() view returns (string)
oldStrategy
viewfunction oldStrategy() view returns (address)
owner
viewfunction owner() view returns (address)
pendingByNonce
viewfunction pendingByNonce(uint256) view returns (uint8 txType, uint256 assetAmount, uint256 minimumOut, address newStrategy)
pendingOwner
viewfunction pendingOwner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
receiptToken
viewfunction receiptToken() view returns (address)
receiptTokenAddress
viewfunction receiptTokenAddress() view returns (address)
rewardsDistributor
viewfunction rewardsDistributor() view returns (address)
swapHelper
viewfunction swapHelper() view returns (address)
totalUnderlyingAssets
viewfunction totalUnderlyingAssets() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
withdrawHelper
viewfunction withdrawHelper() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
claimRewards
nonpayablefunction claimRewards() returns (uint256)
depositFromOldStrategy
nonpayablefunction depositFromOldStrategy(uint256 amount, uint256 minimumOut, uint256 currentExecutionNonce)
emergencyWithdraw
nonpayablefunction emergencyWithdraw(address _token)
harvest
nonpayablefunction harvest()
initialize
nonpayablefunction initialize(string _name, address _gatewayAddress, address _amanaVault, address _withdrawHelper, address, address _receiptTokenAddress, address _inputTokenAddress, address, address, uint256)
manualResendFundsAndDivestConfirmation
nonpayablefunction manualResendFundsAndDivestConfirmation(uint256 amountWithdrawn, uint256 totalUnderlyingAssetsAfter, uint256 vaultNonce)
manualResendInvestConfirmation
nonpayablefunction manualResendInvestConfirmation(uint256 totalUnderlyingAssetsBefore, uint256 totalUnderlyingAssetsAfter, uint256 vaultNonce)
onAbort
nonpayablefunction onAbort(tuple context)
onCall
payablefunction onCall(tuple context, bytes message) payable returns (bytes result)
onRevert
nonpayablefunction onRevert(tuple context)
processBufferedTransactions
nonpayablefunction processBufferedTransactions()
renounceOwnership
nonpayablefunction renounceOwnership()
sendTotalUnderlyingAssetsToVault
nonpayablefunction sendTotalUnderlyingAssetsToVault()
setHarvestSwapSlippage
nonpayablefunction setHarvestSwapSlippage(uint16 _slippage)
setLastProcessedNonce
nonpayablefunction setLastProcessedNonce(uint256 _lastProcessedNonce)
setMinClaimableReward
nonpayablefunction setMinClaimableReward(uint256 newThreshold)
setOldStrategy
nonpayablefunction setOldStrategy(address _oldStrategy)
setRewardsDistributor
nonpayablefunction setRewardsDistributor(address _rewardsDistributor)
setSwapHelper
nonpayablefunction setSwapHelper(address _swapHelper)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateVault
nonpayablefunction updateVault(address _amanaVault)
updateWithdrawHelper
nonpayablefunction updateWithdrawHelper(address _withdrawHelper)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
whitelistOperatorForRewards
nonpayablefunction whitelistOperatorForRewards(address operator)
events
AssetsReceivedFromOldStrategy
event AssetsReceivedFromOldStrategy(address indexed oldStrategy, uint256 totalAssetsTransferrred, uint256 vaultNonce)
AssetsTransferredToNewStrategy
event AssetsTransferredToNewStrategy(address indexed newStrategy, uint256 totalAssetsTransferrred, uint256 vaultNonce)
FundsDivested
event FundsDivested(uint256 indexed vaultNonce, uint256 amount, uint256 totalAssetsAfter)
FundsInvested
event FundsInvested(uint256 indexed vaultNonce, uint256 amount, uint256 totalAssetsAfter)
Initialized
event Initialized(uint64 version)
InvestConfirmFailed
event InvestConfirmFailed(uint256 indexed vaultNonce, uint256 totalAssetsAfter)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
ReturnFundsFromStrategyFailed
event ReturnFundsFromStrategyFailed(uint256 indexed vaultNonce, uint256 withdrawnAmount, uint256 totalAssetsAfter)
RewardClaimFailed
event RewardClaimFailed(string reason)
RewardsClaimed
event RewardsClaimed(address indexed strategy, address indexed rewardToken, uint256 amount)
RewardsHarvested
event RewardsHarvested(address indexed rewardToken, uint256 rewardAmount, uint256 inputTokenReceived)
SendTotalUnderlyingAssetsFailed
event SendTotalUnderlyingAssetsFailed(uint256 indexed vaultNonce, uint256 totalAssetsAfter)
SwapFailed
event SwapFailed(address indexed rewardToken, uint256 amount, string reason)
TotalUnderlyingAssetsSent
event TotalUnderlyingAssetsSent(uint256 indexed vaultNonce, uint256 totalUnderlyingAssets)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AmountCantBeZero
error AmountCantBeZero()
ConfirmationAlreadyProcessed
error ConfirmationAlreadyProcessed()
DepositExceedsLimit
error DepositExceedsLimit()
DepositsPaused
error DepositsPaused()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExceedsMaxSharesOut
error ExceedsMaxSharesOut()
FailedCall
error FailedCall()
FeeExceedsLimit
error FeeExceedsLimit()
InsufficientBalance
error InsufficientBalance()
InsufficientInputAmount
error InsufficientInputAmount()
InsufficientLiquidity
error InsufficientLiquidity()
InsufficientOut
error InsufficientOut()
InvalidAddress
error InvalidAddress()
InvalidAmanaVault
error InvalidAmanaVault()
InvalidInitialization
error InvalidInitialization()
InvalidMessage
error InvalidMessage()
InvalidNonce
error InvalidNonce()
InvalidPath
error InvalidPath()
InvalidPathLength
error InvalidPathLength()
InvalidStrategyChainId
error InvalidStrategyChainId()
InvalidTokenPair
error InvalidTokenPair()
MintExceedsLimit
error MintExceedsLimit()
NoAssetsToSwitch
error NoAssetsToSwitch()
NoFundsReceived
error NoFundsReceived()
NotAuthorized
error NotAuthorized()
NothingToWithdraw
error NothingToWithdraw()
NotInitializing
error NotInitializing()
OldStrategyNotSet
error OldStrategyNotSet()
OnlyGateway
error OnlyGateway()
OnlyVault
error OnlyVault()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
RedeemExceedsLimit
error RedeemExceedsLimit()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StrategyAlreadySet
error StrategyAlreadySet()
TransferFailed
error TransferFailed()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
VaultAlreadyAuthorized
error VaultAlreadyAuthorized()
WithdrawExceedsLimit
error WithdrawExceedsLimit()
creation bytecode
0x60a080604052346029573060805261335a908161002f823960805181818161131801526113d80152f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816301b60ef214611c815750806302c1b22514611c6357806306fdde0314611ba857806307a2d13a14610a0f57806308e8553e14611b8a5780630fc6a11c14611b615780632d4cfb7e14611a5d57806331c6226a146115fe57806334c01f33146115de578063372500ab146115c25780633f2a5540146115995780634641257d146115855780634f1ef286146113885780634fb9bbba1461136d57806352d1902d146113055780636372d28c146112e3578063670857d314611286578063676cc0541461102d57806369f714d4146110045780636ff1c9bc14610f04578063715018a614610e8357806379ba509714610e355780637bac9d7b14610dee5780638da5cb5b14610db85780639f77020714610d98578063a03e4bc314610d6f578063a0ba4d1e14610d46578063a47493c214610cb1578063a63ba72114610c63578063a89c8cb114610c3a578063a9a1cf6c14610afb578063ab0a33e814610ad2578063ab4c448814610ab1578063ad3cb1cc14610a64578063adb3500114610a3d578063c17ca3e714610a14578063c6e6f59214610a0f578063c9028a36146106bd578063ceb50d1014610645578063d1f5c33b14610605578063d73cd47f146105be578063e1dd75eb1461059b578063e30c397814610565578063e7563f3f1461050f578063ec78e832146104e6578063f22960ed1461046c578063f2fde38b146103e45763ff7bba031461023157600080fd5b346103e157806003193601126103e1576006548161024d611fd4565b6040519082602083015260408201528260608201527f11f366f882f2fac1e67e479a4463bab5328fd2d4389c99954162ac537e24045960808201526080815261029760a082611d2c565b61029f611fd4565b6040519060806020830152602860a08301527f5f68616e646c655265766572744f6e53656e64546f74616c556e6465726c796960c0830152676e6741737365747360c01b60e0830152836040830152606082015283608082015260e0815261030961010082611d2c565b6040519061031682611d11565b308083526020830185905260408301526060820152620f424060808201526005546001546001600160a01b03908116929116803b156103dd5761037393858094604051968795869485936306fb33ad60e21b8552600485016121a1565b03925af180156103d2576103b9575b50507f3b55d9eded8f7a17d9a63a25503484ea8e255c91afcf0479e13e8f594419666660206103af611fd4565b604051908152a280f35b816103c391611d2c565b6103ce578138610382565b5080fd5b6040513d84823e3d90fd5b8480fd5b80fd5b50346103e15760203660031901126103e1576103fe611e5e565b6104066123b3565b60008051602061330583398151915280546001600160a01b0319166001600160a01b03928316908117909155600080516020613285833981519152549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b50346103e15760203660031901126103e15760043561ffff81168091036103ce576104956123b3565b61271081116104ad5761ffff19600754161760075580f35b60405162461bcd60e51b81526020600482015260116024820152700a6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b6044820152606490fd5b50346103e157806003193601126103e157600e546040516001600160a01b039091168152602090f35b50346103e15760203660031901126103e157610529611e5e565b6105316123b3565b6001600160a01b03168015610556576001600160601b0360a01b600154161760015580f35b63e6c4247b60e01b8252600482fd5b50346103e157806003193601126103e157600080516020613305833981519152546040516001600160a01b039091168152602090f35b50346103e15760203660031901126103e1576105b56123b3565b60043560065580f35b50346103e15760203660031901126103e1576105d8611e5e565b6105e06123b3565b6001600160a01b03168015610556576001600160601b0360a01b600954161760095580f35b50346103e15760203660031901126103e15761061f611e5e565b6106276123b3565b60018060a01b03166001600160601b0360a01b600454161760045580f35b50346103e15760203660031901126103e1576004358152600a6020526040812060ff81541690600181015490600281015490600360018060a01b0391015416916040519360048110156106a957608095508452602084015260408301526060820152f35b634e487b7160e01b86526021600452602486fd5b50346103e15760203660031901126103e1576004356001600160401b0381116103ce57608060031982360301126103ce576005546001600160a01b03163303610a00578061071d610715606485940183600401611e8e565b810190611ec0565b949193909280519060208101918220610734611efc565b602081519101201460001461077957505050507fa4fee66b95acfbe42b67e700bc7b59d3035f1e3c0c0c9848707bc25f8aeb902591506020906103af8461235f565b80f35b80518220610785611f2e565b6020815191012014600014610978575050600b54600d546024939260440135916107bd9183916001600160a01b039182169116612f92565b600e546040516370a0823160e01b81523060048201529360209185919082906001600160a01b03165afa9283156103d2578293610941575b50600d54600b546001600160a01b0391821692911690823b1561093d576084849283604051958694859363617ba03760e01b8552600485015260248401523060448401528160648401525af180156103d257610928575b5050600e546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa90811561091d5786916108e5575b5060019161089591612085565b106108d6577fa1e6116e68e739c41371396a94423dd96d649508388b2a2277a9199a9fc7bf99916040916108c8856121d7565b82519182526020820152a280f35b6302f9993560e61b8452600484fd5b90506020813d602011610915575b8161090060209383611d2c565b8101031261091057516001610888565b600080fd5b3d91506108f3565b6040513d88823e3d90fd5b8161093291611d2c565b6103dd57843861084c565b8380fd5b915091506020813d602011610970575b8161095e60209383611d2c565b810103126109105785905191386107f5565b3d9150610951565b925092935050519020610989611f69565b60208151910120146000146109c65760207fe70834532512de2cfa5793e9f32b707b90fc9a66597ee10915d87022fa921bd091604051908152a280f35b60405162461bcd60e51b815260206004820152601260248201527114995d995c9d081b9bdd081a185b991b195960721b6044820152606490fd5b63ec76af1360e01b8252600482fd5b611d8e565b50346103e157806003193601126103e157600c546040516001600160a01b039091168152602090f35b50346103e15760203660031901126103e1576020610a5c6004356120a8565b604051908152f35b50346103e157806003193601126103e15750610aad604051610a87604082611d2c565b60058152640352e302e360dc1b6020820152604051918291602083526020830190611d4d565b0390f35b50346103e157806003193601126103e157610aca6123b3565b610776612574565b50346103e157806003193601126103e1576005546040516001600160a01b039091168152602090f35b50346103e157610b0a36611e74565b600354926001600160a01b0384169250908215610c2b57823303610c1c5781158015610ba8575b610b99576000198101818111610b8557916040917f9e157e137b4a49b5ae94277728905e1d5c014268d164e7fdd2560e0257990cec9360065582519182526020820152a26001600160a01b03191660035580f35b634e487b7160e01b86526011600452602486fd5b631eb3d2fd60e31b8552600485fd5b50600c546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa90811561091d578691610bea575b5015610b31565b90506020813d602011610c14575b81610c0560209383611d2c565b81010312610910575138610be3565b3d9150610bf8565b63ea8e4eb560e01b8552600485fd5b63eac3c84d60e01b8552600485fd5b50346103e157806003193601126103e1576003546040516001600160a01b039091168152602090f35b50346103e15760203660031901126103e157610c7d611e5e565b610c856123b3565b6001600160a01b0316801561055657308114610556576001600160601b0360a01b600354161760035580f35b50346103e15760203660031901126103e15780610ccc611e5e565b610cd46123b3565b6004546001600160a01b031690813b15610d425760405163bdac7ca360e01b81523060048201526001600160a01b039091166024820152919081908390604490829084905af18015610d3557610d275780f35b610d3091611d2c565b388180f35b50604051903d90823e3d90fd5b5050fd5b50346103e157806003193601126103e1576001546040516001600160a01b039091168152602090f35b50346103e157806003193601126103e157600d546040516001600160a01b039091168152602090f35b50346103e157610776610daa36611e74565b91610db36123b3565b612dd1565b50346103e157806003193601126103e157600080516020613285833981519152546040516001600160a01b039091168152602090f35b50346103e15760203660031901126103e157610e08611e5e565b610e106123b3565b6001600160a01b03168015610556576001600160601b0360a01b600254161760025580f35b50346103e157806003193601126103e15760008051602061330583398151915254336001600160a01b0390911603610e705761077633612d63565b63118cdaa760e01b815233600452602490fd5b50346103e157806003193601126103e157610e9c6123b3565b60008051602061330583398151915280546001600160a01b03199081169091556000805160206132858339815191528054918216905581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346103e15760203660031901126103e157610f1e611e5e565b610f266123b3565b6040516370a0823160e01b8152306004820152906001600160a01b0316602082602481845afa918215610ff9578392610fc1575b508115610fb2576000805160206132858339815191525460405163a9059cbb60e01b60208201526001600160a01b0390911660248201526044808201939093529182526107769190610fad606483611d2c565b612f07565b630686827b60e51b8352600483fd5b9091506020813d602011610ff1575b81610fdd60209383611d2c565b81010312610fed57519038610f5a565b8280fd5b3d9150610fd0565b6040513d85823e3d90fd5b50346103e157806003193601126103e1576002546040516001600160a01b039091168152602090f35b503660031901604081126103ce576020136103e1576024356001600160401b0381116103ce57366023820112156103ce5780600401356001600160401b038111610fed578101366024820111610fed576005546001600160a01b031633036112775761109761204d565b6001546001600160a01b039182169116141580611257575b6112485760a090829003126103ce576024810135906004821015610fed5760448101359160848201356001600160a01b03811692908390036103dd5760a481013593821580611240575b6111fa575b6111146040519361110e85611ce0565b84612063565b60208301908152606460408401920135825260608301938452848652600a60205260408620925160048110156111e65790600393929160ff80198554169116178355516001830155516002820155019060018060a01b039051166001600160601b0360a01b82541617905560065491600183018093116111d25750146111c5575b610aad60405160016020820152602081526111b1604082611d2c565b604051918291602083526020830190611d4d565b6111cd612574565b611195565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b87526021600452602487fd5b600b546040516323b872dd60e01b60208201523360248201523060448201526064808201849052815261123b916001600160a01b0316610fad608483611d2c565b6110fe565b5034156110f9565b638d1af8bd60e01b8352600483fd5b5061126061204d565b6002546001600160a01b03918216911614156110af565b63ec76af1360e01b8352600483fd5b50346103e15760203660031901126103e1576004356112a36123b3565b6127108110156112b35760085580f35b60405162461bcd60e51b81526020600482015260086024820152670a8dede40d0d2ced60c31b6044820152606490fd5b50346103e157806003193601126103e157602061ffff60075416604051908152f35b50346103e157806003193601126103e1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361135e5760206040516000805160206132c58339815191528152f35b63703e46dd60e11b8152600490fd5b50346103e157806003193601126103e1576020610a5c611fd4565b5060403660031901126103e15761139d611e5e565b906024356001600160401b0381116103ce57366023820112156103ce576113ce903690602481600401359101611dc6565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115611562575b50611553576114106123b3565b6040516352d1902d60e01b8152926001600160a01b0381169190602085600481865afa8095859661151f575b5061145557634c9c8ce360e01b84526004839052602484fd5b9091846000805160206132c5833981519152810361150d5750813b156114fb576000805160206132c583398151915280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a281518390156114e157808360206114dd95519101845af46114d7612f62565b91613223565b5080f35b505050346114ec5780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8452600452602483fd5b632a87526960e21b8552600452602484fd5b9095506020813d60201161154b575b8161153b60209383611d2c565b810103126103dd5751943861143c565b3d915061152e565b63703e46dd60e11b8252600482fd5b6000805160206132c5833981519152546001600160a01b03161415905038611403565b50346103e157806003193601126103e15780f35b50346103e157806003193601126103e1576004546040516001600160a01b039091168152602090f35b50346103e157806003193601126103e157602090604051908152f35b50346103e1576107766115f036611e74565b916115f96123b3565b6123e9565b50346103e1576101403660031901126103e1576004356001600160401b0381116103ce57611630903690600401611dfd565b6024356001600160a01b03811690819003610fed576044356001600160a01b0381169081900361093d576064356001600160a01b038116908190036103dd57611677611e1b565b5060a4356001600160a01b0381169390849003611a595760c4356001600160a01b0381169390849003611a55576116ac611e31565b506116b5611e47565b506000805160206132e5833981519152549560ff8760401c1615966001600160401b03811680159081611a4d575b6001149081611a43575b159081611a3a575b50611a2b5767ffffffffffffffff1981166001176000805160206132e583398151915255876119fe575b50611728612ed9565b611730612ed9565b611738612ed9565b33156119ea5761174733612d63565b8051906001600160401b0382116119d6576117628954611ca6565b601f811161196c575b50602090601f83116001146118f457918060049896949260209896948c926118e9575b50508160011b916000199060031b1c19161789555b6001600160601b0360a01b60015416176001556001600160601b0360a01b60055416176005556001600160601b0360a01b60025416176002556001600160601b0360a01b600b541617600b55806001600160601b0360a01b600c541617600c556005600855806001600160601b0360a01b600e541617600e5560405192838092633a9ae92360e11b82525afa908115610ff95783916118ba575b5060018060a01b03166001600160601b0360a01b600d541617600d556118605780f35b68ff0000000000000000196000805160206132e583398151915254166000805160206132e5833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b6118dc915060203d6020116118e2575b6118d48183611d2c565b810190611fb5565b3861183d565b503d6118ca565b01519050388061178e565b8980526000805160206132a58339815191529190601f1984168b5b818110611954575092600192859260209a989660049c9a98961061193b575b505050811b0189556117a3565b015160001960f88460031b161c1916905538808061192e565b9293602060018192878601518155019501930161190f565b898052601f830160051c6000805160206132a58339815191520190602084106119c0575b601f0160051c6000805160206132a583398151915201905b8181106119b5575061176b565b8a81556001016119a8565b6000805160206132a58339815191529150611990565b634e487b7160e01b89526041600452602489fd5b631e4fbdf760e01b88526004889052602488fd5b68ffffffffffffffffff191668010000000000000001176000805160206132e5833981519152553861171f565b63f92ee8a960e01b8952600489fd5b905015386116f5565b303b1591506116ed565b8991506116e3565b8680fd5b8580fd5b50346103e15760203660031901126103e1576004356001600160401b0381116103ce5760c060031982360301126103ce576005546001600160a01b03163303610a00576107158160a4611ab4930190600401611e8e565b9280929192519060208101918220611aca611efc565b6020815191012014600014611b095750505060207fa4fee66b95acfbe42b67e700bc7b59d3035f1e3c0c0c9848707bc25f8aeb9025916103af8461235f565b80518220611b15611f2e565b6020815191012014600014611b545750506040907fa1e6116e68e739c41371396a94423dd96d649508388b2a2277a9199a9fc7bf99926108c8856121d7565b5190209050610989611f69565b50346103e157806003193601126103e1576009546040516001600160a01b039091168152602090f35b50346103e157806003193601126103e1576020600654604051908152f35b50346103e157806003193601126103e1576040519080805490611bca82611ca6565b8085529160018116908115611c3c5750600114611bf2575b610aad846111b181860382611d2c565b8080526000805160206132a5833981519152939250905b808210611c22575090915081016020016111b182611be2565b919260018160209254838588010152019101909291611c09565b60ff191660208087019190915292151560051b850190920192506111b19150839050611be2565b50346103e157806003193601126103e1576020600854604051908152f35b9050346103ce57816003193601126103ce57600b546001600160a01b03168152602090f35b90600182811c92168015611cd6575b6020831014611cc057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611cb5565b608081019081106001600160401b03821117611cfb57604052565b634e487b7160e01b600052604160045260246000fd5b60a081019081106001600160401b03821117611cfb57604052565b90601f801991011681019081106001600160401b03821117611cfb57604052565b919082519283825260005b848110611d79575050826000602080949584010152601f8019910116010190565b80602080928401015182828601015201611d58565b346109105760203660031901126109105760206040516004358152f35b6001600160401b038111611cfb57601f01601f191660200190565b929192611dd282611dab565b91611de06040519384611d2c565b829481845281830111610910578281602093846000960137010152565b9080601f8301121561091057816020611e1893359101611dc6565b90565b608435906001600160a01b038216820361091057565b60e435906001600160a01b038216820361091057565b61010435906001600160a01b038216820361091057565b600435906001600160a01b038216820361091057565b606090600319011261091057600435906024359060443590565b903590601e198136030182121561091057018035906001600160401b0382116109105760200191813603831361091057565b9190608083820312610910578235906001600160401b03821161091057611ee8918401611dfd565b916020810135916060604083013592013590565b60405190611f0b604083611d2c565b601482527317da5b9d995cdd10dbdb999a5c9b51985a5b195960621b6020830152565b60405190611f3d604083611d2c565b601e82527f5f72657475726e46756e647346726f6d53747261746567794661696c656400006020830152565b60405190611f78606083611d2c565b60288252676e6741737365747360c01b6040837f5f68616e646c655265766572744f6e53656e64546f74616c556e6465726c796960208201520152565b9081602091031261091057516001600160a01b03811681036109105790565b600e546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa90811561204157600091612012575090565b90506020813d602011612039575b8161202d60209383611d2c565b81010312610910575190565b3d9150612020565b6040513d6000823e3d90fd5b6004356001600160a01b03811681036109105790565b600482101561206f5752565b634e487b7160e01b600052602160045260246000fd5b9190820391821161209257565b634e487b7160e01b600052601160045260246000fd5b600e546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa9081156120415760009161211f575b50808211612117575b80151580612102575b6120fd575090565b905090565b506103e86121108383612085565b11156120f5565b9050806120ec565b906020823d602011612149575b8161213960209383611d2c565b810103126103e1575051386120e3565b3d915061212c565b9060018060a01b03825116815260208201511515602082015260018060a01b036040830151166040820152608080612198606085015160a0606086015260a0850190611d4d565b93015191015290565b6001600160a01b039091168152606060208201819052611e189391926121c991840190611d4d565b916040818403910152612151565b6121df611fd4565b60405160009182602083015260408201528260608201527ff37792b058d51910ef816afd8a02206346420c1dbc05414546919983727e8d3760808201526080815261222b60a082611d2c565b612233611fd4565b906040519160806020840152602860a08401527f5f68616e646c655265766572744f6e53656e64546f74616c556e6465726c796960c0840152676e6741737365747360c01b60e0840152836040840152606083015283608083015260e0825261229e61010083611d2c565b604051916122ab83611d11565b308084526020840185905260408401526060830152620f424060808301526005546001546001600160a01b03918216929116823b156103dd579161230a9391858094604051968795869485936306fb33ad60e21b8552600485016121a1565b03925af180156103d25761234f575b50507f3b55d9eded8f7a17d9a63a25503484ea8e255c91afcf0479e13e8f59441966666020612346611fd4565b604051908152a2565b8161235991611d2c565b38612319565b612367611fd4565b60405160009182602083015260408201528260608201527f234277bc4e8f38a87a539fcfac6b77c91276b9db6b46c7adbcb21c86f10a428f60808201526080815261222b60a082611d2c565b600080516020613285833981519152546001600160a01b031633036123d457565b63118cdaa760e01b6000523360045260246000fd5b90604051916000938160208501528260408501528060608501527f7a5775814269eec48efc6bfaf9097b87c7f5dc8298cbbbd8003a741bd200470960808501526080845261243860a085611d2c565b6040519260806020850152601e60a08501527f5f72657475726e46756e647346726f6d53747261746567794661696c6564000060c08501528260408501526060840152608083015260c0825261248f60e083611d2c565b6040519161249c83611d11565b3080845260016020850181905260408501919091526060840191909152620f4240608084015254600b546005546001600160a01b0392831693926124e592849282169116612f92565b600554600b546001600160a01b039081169491169290833b15611a555786949392916125558692612543604051998a9889978896631a13c76f60e31b885260048801526024870152604486015260a0606486015260a4850190611d4d565b83810360031901608485015290612151565b03925af180156103d257612567575050565b8161257191611d2c565b50565b60005b80156125805750565b600654600181018091116120925780600052600a602052604060002060ff81541690600482101561206f57811580918192612d56575b81612d49575b81612d33575b50612d2d576000901561289f5750506006546001810180911161288b578252600a60205260408220604051906125f782611ce0565b61260560ff82541683612063565b6001810154602083019081526002820154604084019081526003909201546001600160a01b031660609093019290925261263d611fd4565b82519151600b54600d5492939192602492916126679183916001600160a01b039182169116612f92565b600e546040516370a0823160e01b81523060048201529260209184919082906001600160a01b03165afa918215612832578792612856575b50600d54600b546001600160a01b03918216929116823b1561285257906084899283604051958694859363617ba03760e01b8552600485015260248401523060448401528160648401525af180156128325790879161283d575b5050600e546040516370a0823160e01b81523060048201529190602090839060249082906001600160a01b03165afa80156128325787906127fb575b61273f9250612085565b106108d65761275590612750611fd4565b612085565b61275d611fd4565b6006549160018301809311610b8557906127779291612dd1565b60065490600182018092116127e75760407fde6bfdf677e1224099582e18976c785397b5085f970b7427a3a059f5abccb86491516127b3611fd4565b82519182526020820152a25b808252600a602052816003604082208281558260018201558260028201550155600655612577565b634e487b7160e01b84526011600452602484fd5b509060203d811161282b575b6128118183611d2c565b602082600092810103126103e157509061273f9151612735565b503d612807565b6040513d89823e3d90fd5b8161284791611d2c565b611a595785386126f9565b8880fd5b90915060203d8111612884575b61286d8183611d2c565b602082600092810103126103e1575051903861269f565b503d612863565b634e487b7160e01b83526011600452602483fd5b50600181036129f657506006546001810180911161288b578252600a602052604082206128d560026001830154920154916120a8565b600d54600b54604051631a4ca37b60e21b81526001600160a01b0391821660048201526024810193909352306044840152919291602091849160649183918991165af19182156129eb5784926129b6575b5081106129a757612935611fd4565b90600654600181018091116129935761294f9083836123e9565b6006549160018301809311612993577fc9375064fdfa65563ea36cb516321dbe9835584eabc24a79ecbab2d810c329de9160409182519182526020820152a26127bf565b634e487b7160e01b85526011600452602485fd5b6302f9993560e61b8352600483fd5b90915060203d81116129e4575b6129cd8183611d2c565b602082600092810103126103e15750519038612926565b503d6129c3565b6040513d86823e3d90fd5b60009060028103612cdf5750506006546001810180911161209257600052600a6020526040600020604051612a2a81611ce0565b612a3860ff83541682612063565b6001820154602082015260046020606060028501549460408501958652600360018060a01b03910154169301928084526040519283809263505d268f60e11b82525afa90811561204157600091612cc1575b506001546001600160a01b03908116911603612cb157600c546040516370a0823160e01b815230600482015292906001600160a01b0316602084602481845afa93841561204157600094612c7d575b50602084612b7292612b388260018060a01b038851166060612afe6040519182611d2c565b602381527f5472616e7366657272696e672061737365747320746f206e6577207374726174878201526265677960e81b60408201526131b8565b855160405163a9059cbb60e01b81526001600160a01b03909116600482015260248101929092529092839190829060009082906044820190565b03925af190811561204157600091612c43575b505060018060a01b0382511690516006546001810180911161209257823b15610910576064600092836040519586948593632a6873db60e21b85528a6004860152602485015260448401525af1801561204157612c2c575b5060018060a01b039051169060065460018101809111612993577f0fa0225eaf155f9ad952440461374b5a8ceb04cf37b28381e299245c227e10359160409182519182526020820152a26127bf565b612c3a919450600090611d2c565b60009238612bdd565b6020813d8211612c75575b81612c5b60209383611d2c565b810103126103ce57519081151582036103e1575038612b85565b3d9150612c4e565b90936020823d8211612ca9575b81612c9760209383611d2c565b810103126103e1575051926020612ad9565b3d9150612c8a565b6234cfcd60ea1b60005260046000fd5b612cd9915060203d81116118e2576118d48183611d2c565b38612a8a565b600314159050612cf757612cf28161235f565b6127bf565b60405162461bcd60e51b815260206004820152600e60248201526d556e6b6e6f776e2054785479706560901b6044820152606490fd5b50505050565b600301546001600160a01b0316159050386125c2565b60028101541591506125bc565b60018101541591506125b6565b60008051602061330583398151915280546001600160a01b031990811690915560008051602061328583398151915280549182166001600160a01b0393841690811790915591167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b916040519060009360208301528260408301528060608301527f782d11976f990fc98f6baa859e0ca32be1f057564961da9c94a318cb9975a255608083015260808252612e1f60a083611d2c565b6040519260806020850152601460a08501527317da5b9d995cdd10dbdb999a5c9b51985a5b195960621b60c08501528460408501526060840152608083015260c08252612e6d60e083611d2c565b60405191612e7a83611d11565b308084526020840185905260408401526060830152620f424060808301526005546001546001600160a01b03918216929116823b156103dd57916125559391858094604051968795869485936306fb33ad60e21b8552600485016121a1565b60ff6000805160206132e58339815191525460401c1615612ef657565b631afcd79f60e31b60005260046000fd5b906000602091828151910182855af115612041576000513d612f5957506001600160a01b0381163b155b612f385750565b635274afe760e01b60009081526001600160a01b0391909116600452602490fd5b60011415612f31565b3d15612f8d573d90612f7382611dab565b91612f816040519384611d2c565b82523d6000602084013e565b606090565b90606092612fe28183604051612fa88882611d2c565b602281527f417070726f76696e67207370656e64657220257320666f7220616d6f756e7420602082015261257360f01b60408201526131b8565b60405163095ea7b360e01b602082019081526001600160a01b03841660248301526044808301939093529181529261301b606485611d2c565b60018060a01b03169160008085518482875af1613036612f62565b506131b15760405163095ea7b360e01b602082019081526001600160a01b039092166024820152600060448083018290528252918291613077606482611d2c565b519082865af1613085612f62565b5015613178576000809493818061310461311282986130a76040519182611d2c565b602681527f526573657420746f2030207375636365656465642c207265747279696e6720616020820152657070726f766560d01b604082015260405192839163104c13eb60e21b6020840152602060248401526044830190611d4d565b03601f198101835282611d2c565b6020815191016a636f6e736f6c652e6c6f675afa5051925af1613133612f62565b501561313b57565b60405162461bcd60e51b815260206004820152601560248201527414d958dbdb9908185c1c1c9bdd994819985a5b1959605a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601160248201527014995cd95d081d1bc80c0819985a5b1959607a1b6044820152606490fd5b5050505050565b61320c6131e991600094938594604051948593630d26b92560e01b6020860152606060248601526084850190611d4d565b6001600160a01b039092166044840152606483015203601f198101835282611d2c565b6020815191016a636f6e736f6c652e6c6f675afa50565b90613249575080511561323857805190602001fd5b63d6bda27560e01b60005260046000fd5b8151158061327b575b61325a575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b1561325256fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00a264697066735822122079935570947d8b5cd62295389deab3cf9fb45a94a67bf5ce6cba4cd9c00dda7564736f6c634300081a0033