0 txs
0 calls
constructor
constructor(address addressesProvider, address augustusRegistry, address balancerVault, address initialOwner)
functions
ADDRESSES_PROVIDER
viewfunction ADDRESSES_PROVIDER() view returns (address)
AMOUNT_IN_OFFSET
viewfunction AMOUNT_IN_OFFSET() view returns (uint256)
AUGUSTUS_REGISTRY
viewfunction AUGUSTUS_REGISTRY() view returns (address)
BALANCER_VAULT
viewfunction BALANCER_VAULT() view returns (address)
calculateDeleveragedDebtAmount
viewfunction calculateDeleveragedDebtAmount(address user, address collateralAsset, address debtAsset, uint256 resultHealthFactor, uint256 slippagePercentage) view returns (uint256, uint256)
owner
viewfunction owner() view returns (address)
POOL
viewfunction POOL() view returns (address)
enableAssetAsCollateral
nonpayablefunction enableAssetAsCollateral(address asset)
executeOperation
nonpayablefunction executeOperation(address[] assets, uint256[] amounts, uint256[] premiums, address initiator, bytes params) returns (bool)
multicall
nonpayablefunction multicall(bytes[] data) returns (bytes[] results)
performDeleverage
nonpayablefunction performDeleverage(tuple performDeleverageParams)
performPermitForERC20
nonpayablefunction performPermitForERC20(address token, tuple permitData)
performPermitForVToken
nonpayablefunction performPermitForVToken(address underlyingToken, tuple permitData)
receiveFlashLoan
nonpayablefunction receiveFlashLoan(address[] tokens, uint256[] amounts, uint256[] feeAmounts, bytes userData)
renounceOwnership
nonpayablefunction renounceOwnership()
rescueEth
nonpayablefunction rescueEth()
rescueTokens
nonpayablefunction rescueTokens(address token)
setEMode
nonpayablefunction setEMode(uint8 categoryId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Swapped
event Swapped(address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
FailedCall
error FailedCall()
FromAmountOutOfRange
error FromAmountOutOfRange(uint256 callDataLength)
InitiatorMustBeThisContract
error InitiatorMustBeThisContract()
InsufficientAmountOut
error InsufficientAmountOut(uint256 amountOutActual, uint256 amountOutMin)
InvalidAugustus
error InvalidAugustus(address augustus)
InvalidReserveIndex
error InvalidReserveIndex()
NativeTokenTransferFailed
error NativeTokenTransferFailed(bytes errorData)
NoBalancerInNetwork
error NoBalancerInNetwork()
NotAllowedSender
error NotAllowedSender()
NotZeroFlashLoanPremium
error NotZeroFlashLoanPremium(uint256 premium)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ResultHealthFactorIsLessThanHealthFactorLiquidationThreshold
error ResultHealthFactorIsLessThanHealthFactorLiquidationThreshold(uint256 resultHealthFactor)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SlippagePercentageIsTooBig
error SlippagePercentageIsTooBig(uint256 slippagePercentage)
WrongFlashLoanSource
error WrongFlashLoanSource()
ZeroAddress
error ZeroAddress()
creation bytecode
0x610100604052348015610010575f5ffd5b50604051613f15380380613f1583398101604081905261002f9161022e565b828482848282806001600160a01b03811661006457604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61006d816101c8565b506001600160a01b0382166100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03821660808190526040805163026b1d5f60e01b8152905163026b1d5f916004808201926020929091908290030181865afa1580156100dd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610101919061028a565b6001600160a01b0390811660a05292831660c052505083163b1580610187575060405163fb04e17b60e01b81525f60048201526001600160a01b0384169063fb04e17b90602401602060405180830381865afa158015610163573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061018791906102ac565b156101b057604051630411b82d60e01b81526001600160a01b038416600482015260240161005b565b50506001600160a01b031660e052506102cb92505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461022b575f5ffd5b50565b5f5f5f5f60808587031215610241575f5ffd5b845161024c81610217565b602086015190945061025d81610217565b604086015190935061026e81610217565b606086015190925061027f81610217565b939692955090935050565b5f6020828403121561029a575f5ffd5b81516102a581610217565b9392505050565b5f602082840312156102bc575f5ffd5b815180151581146102a5575f5ffd5b60805160a05160c05160e051613b4c6103c95f395f8181610190015261248c01525f81816102b001528181610d1f01528181610d980152610f2d01525f81816101bf015281816103f001528181610475015281816106da01528181610e1101528181610e8f015281816112fe0152818161138d01528181611446015281816114a801528181611530015281816115d6015281816117ef01528181611ac701528181611b6601528181611ed301528181611f2c01528181611f99015281816121010152818161215d015281816121e2015281816126b70152818161276d015281816127f901526128bb01525f818161013901526108170152613b4c5ff3fe608060405234801561000f575f5ffd5b506004361061011b575f3560e01c8063920f5c84116100a9578063bc1638461161006e578063bc163846146102ab578063ce31a06b146102d2578063db0d67fe146102da578063f04f2707146102ed578063f2fde38b14610300575f5ffd5b8063920f5c841461021757806398b264891461023a578063ac9650d814610262578063b4366edc14610282578063b94e11c614610298575f5ffd5b8063715018a6116100ef578063715018a6146101b25780637535d246146101ba5780637b873218146101e1578063897ae8bb146101f45780638da5cb5b14610207575f5ffd5b8062ae3bf81461011f5780630542975c146101345780632b52ee9d146101785780633a8298671461018b575b5f5ffd5b61013261012d366004612ae2565b610313565b005b61015b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610132610186366004612bbc565b6103a9565b61015b7f000000000000000000000000000000000000000000000000000000000000000081565b6101326103b8565b61015b7f000000000000000000000000000000000000000000000000000000000000000081565b6101326101ef366004612bbc565b6103cb565b610132610202366004612ae2565b61045f565b5f546001600160a01b031661015b565b61022a610225366004612cb5565b610469565b604051901515815260200161016f565b61024d610248366004612d93565b61065a565b6040805192835260208301919091520161016f565b610275610270366004612dea565b610a97565b60405161016f9190612e56565b61028a606481565b60405190815260200161016f565b6101326102a6366004612eb9565b610b7d565b61015b7f000000000000000000000000000000000000000000000000000000000000000081565b610132610b87565b6101326102e8366004612f64565b610c13565b6101326102fb3660046130ad565b610f22565b61013261030e366004612ae2565b6110dc565b61031b611116565b6103a661032f5f546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610371573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039591906131c2565b6001600160a01b0384169190611142565b50565b6103b43383836111a6565b5050565b6103c0611116565b6103c95f611233565b565b6040516301b2848560e51b81526001600160a01b0383811660048301526103b49133917f0000000000000000000000000000000000000000000000000000000000000000169063365090a090602401602060405180830381865afa158015610435573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045991906131e4565b83611282565b6103a633826112dd565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104b35760405163cf62cd9760e01b815260040160405180910390fd5b6001600160a01b03841630146104dc576040516356af165560e11b815260040160405180910390fd5b85855f8181106104ee576104ee6131ff565b905060200201355f146105395785855f81811061050d5761050d6131ff565b905060200201356040516357ee236d60e11b815260040161053091815260200190565b60405180910390fd5b5f61054683850185613213565b604080516101008101825233815282516001600160a01b031660208201529192506105f5919081018d8d5f8161057e5761057e6131ff565b90506020020160208101906105939190612ae2565b6001600160a01b031681526020018b8b5f8181106105b3576105b36131ff565b90506020020135815260200183602001516001600160a01b031681526020018360400151815260200183606001511515815260200183608001518152506114a3565b610649338a8a5f81811061060b5761060b6131ff565b905060200201358d8d5f818110610624576106246131ff565b90506020020160208101906106399190612ae2565b6001600160a01b03169190611999565b5060019a9950505050505050505050565b5f5f670de0b6b3a76400008411610687576040516389851e0960e01b815260048101859052602401610530565b6101f483106106af57604051600162041a0d60e21b0319815260048101849052602401610530565b604051632fe4a15f60e21b81526001600160a01b0388811660048301525f91829182918291829182917f0000000000000000000000000000000000000000000000000000000000000000169063bf92857c9060240160c060405180830381865afa15801561071f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074391906132c0565b95505094505093509350808a11610765575f5f97509750505050505050610a8d565b5f6107708e8e611a28565b905061078481670de0b6b3a764000061331a565b6107908b612710613331565b61079a908d61331a565b6107a49190613331565b6107ae868561331a565b6107c090670de0b6b3a764000061331a565b6107ca868e61331a565b6107d69061271061331a565b6107e09190613331565b6107ea9190613344565b96506127106107f98b82613331565b610803908961331a565b61080d9190613344565b955050505050505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610871573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089591906131e4565b60405163b3596f0760e01b81526001600160a01b038a811660048301529192505f9182919084169063b3596f0790602401602060405180830381865afa1580156108e1573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090591906131c2565b90505f8a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610944573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109689190613363565b61097390600a613461565b905081610980868361331a565b61098a9190613344565b60405163b3596f0760e01b81526001600160a01b038e811660048301529194505f93508392509085169063b3596f0790602401602060405180830381865afa1580156109d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109fc91906131c2565b90505f8c6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5f9190613363565b610a6a90600a613461565b905081610a77888361331a565b610a819190613344565b98509296505050505050505b9550959350505050565b604080515f815260208101909152606090826001600160401b03811115610ac057610ac0612afd565b604051908082528060200260200182016040528015610af357816020015b6060815260200190600190039081610ade5790505b5091505f5b83811015610b7457610b4f30868684818110610b1657610b166131ff565b9050602002810190610b28919061346f565b85604051602001610b3b939291906134c8565b604051602081830303815290604052611a3d565b838281518110610b6157610b616131ff565b6020908102919091010152600101610af8565b50505b92915050565b6103a63382611aa6565b610b8f611116565b5f5f610ba25f546001600160a01b031690565b6001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610be9576040519150601f19603f3d011682016040523d82523d5f602084013e610bee565b606091505b5091509150816103b4578060405163f649713b60e01b815260040161053091906134dd565b6040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f929150602080830190803683370190505090508260400151825f81518110610c6d57610c6d6131ff565b60200260200101906001600160a01b031690816001600160a01b0316815250508260600151815f81518110610ca457610ca46131ff565b6020026020010181815250505f6040518060a00160405280336001600160a01b0316815260200185602001516001600160a01b03168152602001856080015181526020018560a00151151581526020018560c00151815250604051602001610d0c91906134ef565b60405160208183030381529060405290507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316845f01516001600160a01b031603610e055783516001600160a01b0316610d8157604051630ee8358160e11b815260040160405180910390fd5b604051632e1c224f60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635c38449e90610dd39030908790879087906004016135be565b5f604051808303815f87803b158015610dea575f5ffd5b505af1158015610dfc573d5f5f3e3d5ffd5b50505050610f1c565b83516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911603610f03576040805160018082528183019092525f91602080830190803683370190505090505f815f81518110610e6d57610e6d6131ff565b602090810291909101015260405163ab9c4b5d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ab9c4b5d90610ed090309088908890879084908a905f90600401613612565b5f604051808303815f87803b158015610ee7575f5ffd5b505af1158015610ef9573d5f5f3e3d5ffd5b5050505050610f1c565b60405163e03f58c360e01b815260040160405180910390fd5b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f6b5760405163cf62cd9760e01b815260040160405180910390fd5b815f81518110610f7d57610f7d6131ff565b60200260200101515f14610fc157815f81518110610f9d57610f9d6131ff565b60200260200101516040516357ee236d60e11b815260040161053091815260200190565b5f81806020019051810190610fd691906136eb565b9050611085604051806101000160405280336001600160a01b03168152602001835f01516001600160a01b03168152602001875f8151811061101a5761101a6131ff565b60200260200101516001600160a01b03168152602001865f81518110611042576110426131ff565b6020026020010151815260200183602001516001600160a01b031681526020018360400151815260200183606001511515815260200183608001518152506114a3565b6110d533855f8151811061109b5761109b6131ff565b6020026020010151875f815181106110b5576110b56131ff565b60200260200101516001600160a01b03166111429092919063ffffffff16565b5050505050565b6110e4611116565b6001600160a01b03811661110d57604051631e4fbdf760e01b81525f6004820152602401610530565b6103a681611233565b5f546001600160a01b031633146103c95760405163118cdaa760e01b8152336004820152602401610530565b6040516001600160a01b038381166024830152604482018390526111a191859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611bc3565b505050565b80602001515f036111b657505050565b816001600160a01b031663d505accf8430845f015185602001518660400151876060015188608001516040518863ffffffff1660e01b8152600401611201979695949392919061378a565b5f604051808303815f87803b158015611218575f5ffd5b505af1925050508015611229575060015b156111a157505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80602001515f0361129257505050565b816001600160a01b0316630b52d5588430845f015185602001518660400151876060015188608001516040518863ffffffff1660e01b8152600401611201979695949392919061378a565b604051634417a58360e01b81526001600160a01b0383811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690634417a58390602401602060405180830381865afa158015611345573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611369919061380a565b6040516335ea6a7560e01b81526001600160a01b0384811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa1580156113d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f7919061385f565b90506114148160e0015161ffff1683611c2f90919063ffffffff16565b610f1c57604051634b959afd60e11b81526001600160a01b0384811660048301526001602483015285811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063972b35fa906064015f604051808303815f87803b158015611487575f5ffd5b505af1158015611499573d5f5f3e3d5ffd5b5050505050505050565b6114e97f0000000000000000000000000000000000000000000000000000000000000000826060015183604001516001600160a01b03166119999092919063ffffffff16565b60408181015160608301516020840151925163573ade8160e01b81526001600160a01b03928316600482015260248101919091526002604482015291811660648301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063573ade81906084016020604051808303815f875af1158015611578573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159c91906131c2565b82606001516115ab9190613331565b608083015160405163cff027d960e01b81526001600160a01b0391821660048201529192505f9182917f0000000000000000000000000000000000000000000000000000000000000000169063cff027d990602401602060405180830381865afa15801561161b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163f91906131e4565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa158015611686573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116aa91906131c2565b602086015160a08701516040516323b872dd60e01b81526001600160a01b03928316600482015230602482015260448101919091529192508316906323b872dd906064016020604051808303815f875af115801561170a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172e9190613989565b506040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015611773573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179791906131c2565b6117a19190613331565b60a086015260c0850151156117b857819250611868565b608085015160a0860151604051631a4ca37b60e21b81526001600160a01b03928316600482015260248101919091523060448201527f0000000000000000000000000000000000000000000000000000000000000000909116906369328dec906064016020604051808303815f875af1158015611837573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061185b91906131c2565b60a0860152608085015192505b50505f5f6118898386604001518760a0015188606001518960e00151611c62565b909250905061189881856139a4565b9350508360a00151811015611969575f818560a001516118b89190613331565b905084608001516001600160a01b0316836001600160a01b0316036118ef576118ea8560800151828760200151611ebb565b611967565b602085015160405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529084169063a9059cbb906044016020604051808303815f875af1158015611941573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119659190613989565b505b505b505081606001518111156103b4576103b4826040015183606001518361198f9190613331565b8460200151611f6f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526119ea84826122fd565b610f1c576040516001600160a01b0384811660248301525f6044830152611a1e91869182169063095ea7b39060640161116f565b610f1c8482611bc3565b5f5f611a348484612346565b95945050505050565b60605f5f846001600160a01b031684604051611a5991906139b7565b5f60405180830381855af49150503d805f8114611a91576040519150601f19603f3d011682016040523d82523d5f602084013e611a96565b606091505b5091509150611a348583836123f1565b60405163eddf1b7960e01b81526001600160a01b0383811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063eddf1b7990602401602060405180830381865afa158015611b0e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b3291906131c2565b90508160ff1681146111a1576040516312e81a0560e21b815260ff831660048201526001600160a01b0384811660248301527f00000000000000000000000000000000000000000000000000000000000000001690634ba06814906044015b5f604051808303815f87803b158015611ba8575f5ffd5b505af1158015611bba573d5f5f3e3d5ffd5b50505050505050565b5f5f60205f8451602086015f885af180611be2576040513d5f823e3d81fd5b50505f513d91508115611bf9578060011415611c06565b6001600160a01b0384163b155b15610f1c57604051635274afe760e01b81526001600160a01b0385166004820152602401610530565b5f60808210611c51576040516385e98beb60e01b815260040160405180910390fd5b509051600191821b82011c16151590565b6040516370a0823160e01b81523060048201525f90819081906001600160a01b038816906370a0823190602401602060405180830381865afa158015611caa573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cce91906131c2565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038a16906370a0823190602401602060405180830381865afa158015611d15573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d3991906131c2565b9050611d488989898989612450565b6040516370a0823160e01b815230600482015282906001600160a01b038a16906370a0823190602401602060405180830381865afa158015611d8c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611db091906131c2565b611dba9190613331565b925085831015611de75760405163126c3c7360e21b81526004810184905260248101879052604401610530565b6040516370a0823160e01b81523060048201526001600160a01b038a16906370a0823190602401602060405180830381865afa158015611e29573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e4d91906131c2565b611e579082613331565b9350876001600160a01b0316896001600160a01b03167fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8686604051611ea7929190918252602082015260400190565b60405180910390a350509550959350505050565b6002821115611f5b57611ef86001600160a01b0384167f000000000000000000000000000000000000000000000000000000000000000084611999565b60405163617ba03760e01b81526001600160a01b0384811660048301526024820184905282811660448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba03790608401611b91565b6111a16001600160a01b0384168284611142565b600282111561228d576040516301b2848560e51b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063365090a090602401602060405180830381865afa158015611fe0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200491906131e4565b604051630ed1279f60e11b81526001600160a01b0384811660048301529192505f91831690631da24f3e90602401602060405180830381865afa15801561204d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061207191906131c2565b9050805f036120f25760405163a9059cbb60e01b81526001600160a01b0384811660048301526024820186905286169063a9059cbb906044016020604051808303815f875af11580156120c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120ea9190613989565b505050505050565b6121266001600160a01b0386167f000000000000000000000000000000000000000000000000000000000000000086611999565b60405163573ade8160e01b81526001600160a01b038681166004830152602482018690526002604483015284811660648301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063573ade81906084016020604051808303815f875af11580156121a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121c991906131c2565b9050848110156120ea576122076001600160a01b0387167f00000000000000000000000000000000000000000000000000000000000000005f611999565b6001600160a01b03861663a9059cbb856122218489613331565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015612269573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bba9190613989565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303815f875af11580156122d9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1c9190613989565b5f5f5f5f60205f8651602088015f8a5af192503d91505f51905082801561233c5750811561232e578060011461233c565b5f866001600160a01b03163b115b9695505050505050565b6040805160018082528183019092525f91829182916020808301908036833701905050905083815f8151811061237e5761237e6131ff565b60200260200101906001600160a01b031690816001600160a01b0316815250505f5f6123aa8784612604565b91509150815f815181106123c0576123c06131ff565b6020026020010151815f815181106123da576123da6131ff565b6020026020010151945094505050505b9250929050565b6060826124065761240182612a5c565b612449565b815115801561241d57506001600160a01b0384163b155b1561244657604051639996b31560e01b81526001600160a01b0385166004820152602401610530565b50805b9392505050565b5f8180602001905181019061246591906139c2565b602081015160405163fb04e17b60e01b81526001600160a01b0391821660048201529192507f0000000000000000000000000000000000000000000000000000000000000000169063fb04e17b90602401602060405180830381865afa1580156124d1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124f59190613989565b612523576020810151604051630411b82d60e01b81526001600160a01b039091166004820152602401610530565b602081015161253d906001600160a01b0388169086611999565b8051805161254d90602090613331565b606411158151906125745760405163080e19e960e41b815260040161053091815260200190565b508460206064018201525f82602001516001600160a01b03168260405161259b91906139b7565b5f604051808303815f865af19150503d805f81146125d4576040519150601f19603f3d011682016040523d82523d5f602084013e6125d9565b606091505b50509050806125ea573d5f5f3e3d5ffd5b6020830151611499906001600160a01b038a16905f611999565b805160609081905f816001600160401b0381111561262457612624612afd565b60405190808252806020026020018201604052801561264d578160200160208202803683370190505b5090505f826001600160401b0381111561266957612669612afd565b604051908082528060200260200182016040528015612692578160200160208202803683370190505b5060405163eddf1b7960e01b81526001600160a01b0389811660048301529192505f917f0000000000000000000000000000000000000000000000000000000000000000169063eddf1b7990602401602060405180830381865afa1580156126fc573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061272091906131c2565b6040805160a0810182525f80825260208201819052918101829052606080820183905260808201529192509060ff83161561286f5760405163583b8edd60e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0771dba90602401602060405180830381865afa1580156127ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127de9190613a60565b604051636c6f6ae160e01b815260ff851660048201529092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636c6f6ae1906024015f60405180830381865afa158015612845573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261286c9190810190613a79565b90505b5f5b86811015612a4b575f8a828151811061288c5761288c6131ff565b60209081029190910101516040516335ea6a7560e01b81526001600160a01b0380831660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa158015612901573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612925919061385f565b90505f5f61295b835f01515161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b50505091509150805f036129725750505050612a43565b5f60ff8916158015906129925750612992888560e0015161ffff16612a85565b905082156129eb5780156129cb57865f015161ffff168b87815181106129ba576129ba6131ff565b6020026020010181815250506129eb565b828b87815181106129de576129de6131ff565b6020026020010181815250505b8015612a1d57866020015161ffff168a8781518110612a0c57612a0c6131ff565b602002602001018181525050612a3d565b818a8781518110612a3057612a306131ff565b6020026020010181815250505b50505050505b600101612871565b509399929850919650505050505050565b805115612a6c5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f60808210612aa7576040516385e98beb60e01b815260040160405180910390fd5b506001600160801b0391909116901c600116151590565b6001600160a01b03811681146103a6575f5ffd5b8035612add81612abe565b919050565b5f60208284031215612af2575f5ffd5b813561244981612abe565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b0381118282101715612b3357612b33612afd565b60405290565b60405160e081016001600160401b0381118282101715612b3357612b33612afd565b6040516101e081016001600160401b0381118282101715612b3357612b33612afd565b604051601f8201601f191681016001600160401b0381118282101715612ba657612ba6612afd565b604052919050565b60ff811681146103a6575f5ffd5b5f5f82840360c0811215612bce575f5ffd5b8335612bd981612abe565b925060a0601f1982011215612bec575f5ffd5b50612bf5612b11565b60208481013582526040850135908201526060840135612c1481612bae565b6040820152608084810135606083015260a090940135938101939093525092909150565b5f5f83601f840112612c48575f5ffd5b5081356001600160401b03811115612c5e575f5ffd5b6020830191508360208260051b85010111156123ea575f5ffd5b5f5f83601f840112612c88575f5ffd5b5081356001600160401b03811115612c9e575f5ffd5b6020830191508360208285010111156123ea575f5ffd5b5f5f5f5f5f5f5f5f5f60a08a8c031215612ccd575f5ffd5b89356001600160401b03811115612ce2575f5ffd5b612cee8c828d01612c38565b909a5098505060208a01356001600160401b03811115612d0c575f5ffd5b612d188c828d01612c38565b90985096505060408a01356001600160401b03811115612d36575f5ffd5b612d428c828d01612c38565b90965094505060608a0135612d5681612abe565b925060808a01356001600160401b03811115612d70575f5ffd5b612d7c8c828d01612c78565b915080935050809150509295985092959850929598565b5f5f5f5f5f60a08688031215612da7575f5ffd5b8535612db281612abe565b94506020860135612dc281612abe565b93506040860135612dd281612abe565b94979396509394606081013594506080013592915050565b5f5f60208385031215612dfb575f5ffd5b82356001600160401b03811115612e10575f5ffd5b612e1c85828601612c38565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612ead57603f19878603018452612e98858351612e28565b94506020938401939190910190600101612e7c565b50929695505050505050565b5f60208284031215612ec9575f5ffd5b813561244981612bae565b80151581146103a6575f5ffd5b8035612add81612ed4565b5f6001600160401b03821115612f0457612f04612afd565b50601f01601f191660200190565b5f82601f830112612f21575f5ffd5b8135612f34612f2f82612eec565b612b7e565b818152846020838601011115612f48575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215612f74575f5ffd5b81356001600160401b03811115612f89575f5ffd5b820160e08185031215612f9a575f5ffd5b612fa2612b39565b612fab82612ad2565b8152612fb960208301612ad2565b6020820152612fca60408301612ad2565b60408201526060828101359082015260808083013590820152612fef60a08301612ee1565b60a082015260c08201356001600160401b0381111561300c575f5ffd5b61301886828501612f12565b60c083015250949350505050565b5f6001600160401b0382111561303e5761303e612afd565b5060051b60200190565b5f82601f830112613057575f5ffd5b8135613065612f2f82613026565b8082825260208201915060208360051b860101925085831115613086575f5ffd5b602085015b838110156130a357803583526020928301920161308b565b5095945050505050565b5f5f5f5f608085870312156130c0575f5ffd5b84356001600160401b038111156130d5575f5ffd5b8501601f810187136130e5575f5ffd5b80356130f3612f2f82613026565b8082825260208201915060208360051b850101925089831115613114575f5ffd5b6020840193505b8284101561313f57833561312e81612abe565b82526020938401939091019061311b565b965050505060208501356001600160401b0381111561315c575f5ffd5b61316887828801613048565b93505060408501356001600160401b03811115613183575f5ffd5b61318f87828801613048565b92505060608501356001600160401b038111156131aa575f5ffd5b6131b687828801612f12565b91505092959194509250565b5f602082840312156131d2575f5ffd5b5051919050565b8051612add81612abe565b5f602082840312156131f4575f5ffd5b815161244981612abe565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613223575f5ffd5b81356001600160401b03811115613238575f5ffd5b820160a08185031215613249575f5ffd5b613251612b11565b813561325c81612abe565b8152602082013561326c81612abe565b602082015260408281013590820152606082013561328981612ed4565b606082015260808201356001600160401b038111156132a6575f5ffd5b6132b286828501612f12565b608083015250949350505050565b5f5f5f5f5f5f60c087890312156132d5575f5ffd5b50508451602086015160408701516060880151608089015160a090990151939a929950909790965094509092509050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610b7757610b77613306565b81810381811115610b7757610b77613306565b5f8261335e57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215613373575f5ffd5b815161244981612bae565b6001815b60018411156133b95780850481111561339d5761339d613306565b60018416156133ab57908102905b60019390931c928002613382565b935093915050565b5f826133cf57506001610b77565b816133db57505f610b77565b81600181146133f157600281146133fb57613417565b6001915050610b77565b60ff84111561340c5761340c613306565b50506001821b610b77565b5060208310610133831016604e8410600b841016171561343a575081810a610b77565b6134465f19848461337e565b805f190482111561345957613459613306565b029392505050565b5f61244960ff8416836133c1565b5f5f8335601e19843603018112613484575f5ffd5b8301803591506001600160401b0382111561349d575f5ffd5b6020019150368190038213156123ea575f5ffd5b5f81518060208401855e5f93019283525090919050565b828482375f8382015f815261233c81856134b1565b602081525f6124496020830184612e28565b6020815260018060a01b03825116602082015260018060a01b036020830151166040820152604082015160608201526060820151151560808201525f608083015160a08084015261354360c0840182612e28565b949350505050565b5f8151808452602084019350602083015f5b828110156135845781516001600160a01b031686526020958601959091019060010161355d565b5093949350505050565b5f8151808452602084019350602083015f5b828110156135845781518652602095860195909101906001016135a0565b6001600160a01b03851681526080602082018190525f906135e19083018661354b565b82810360408401526135f3818661358e565b905082810360608401526136078185612e28565b979650505050505050565b6001600160a01b038816815260e0602082018190525f906136359083018961354b565b8281036040840152613647818961358e565b9050828103606084015261365b818861358e565b6001600160a01b038716608085015283810360a0850152905061367e8186612e28565b91505061ffff831660c083015298975050505050505050565b5f6136a4612f2f84612eec565b90508281528383830111156136b7575f5ffd5b8282602083015e5f602084830101529392505050565b5f82601f8301126136dc575f5ffd5b61244983835160208501613697565b5f602082840312156136fb575f5ffd5b81516001600160401b03811115613710575f5ffd5b820160a08185031215613721575f5ffd5b613729612b11565b815161373481612abe565b8152602082015161374481612abe565b602082015260408281015190820152606082015161376181612ed4565b606082015260808201516001600160401b0381111561377e575f5ffd5b6132b2868285016136cd565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b5f602082840312156137db575f5ffd5b604051602081016001600160401b03811182821017156137fd576137fd612afd565b6040529151825250919050565b5f6020828403121561381a575f5ffd5b61244983836137cb565b80516001600160801b0381168114612add575f5ffd5b805164ffffffffff81168114612add575f5ffd5b805161ffff81168114612add575f5ffd5b5f6101e0828403128015613871575f5ffd5b5061387a612b5b565b61388484846137cb565b815261389260208401613824565b60208201526138a360408401613824565b60408201526138b460608401613824565b60608201526138c560808401613824565b60808201526138d660a08401613824565b60a08201526138e760c0840161383a565b60c08201526138f860e0840161384e565b60e082015261390a61010084016131d9565b61010082015261391d61012084016131d9565b61012082015261393061014084016131d9565b61014082015261394361016084016131d9565b6101608201526139566101808401613824565b6101808201526139696101a08401613824565b6101a082015261397c6101c08401613824565b6101c08201529392505050565b5f60208284031215613999575f5ffd5b815161244981612ed4565b80820180821115610b7757610b77613306565b5f61244982846134b1565b5f602082840312156139d2575f5ffd5b81516001600160401b038111156139e7575f5ffd5b8201604081850312156139f8575f5ffd5b604080519081016001600160401b0381118282101715613a1a57613a1a612afd565b60405281516001600160401b03811115613a32575f5ffd5b613a3e868285016136cd565b82525060208201519150613a5182612abe565b60208101919091529392505050565b5f60208284031215613a70575f5ffd5b61244982613824565b5f60208284031215613a89575f5ffd5b81516001600160401b03811115613a9e575f5ffd5b820160a08185031215613aaf575f5ffd5b613ab7612b11565b613ac08261384e565b8152613ace6020830161384e565b6020820152613adf6040830161384e565b60408201526060820151613af281612abe565b606082015260808201516001600160401b03811115613b0f575f5ffd5b80830192505084601f830112613b23575f5ffd5b613b3285835160208501613697565b608082015294935050505056fea164736f6c634300081b000a000000000000000000000000e20fcbdbffc4dd138ce8b2e6fbb6cb49777ad64d0000000000000000000000007e31b336f9e8ba52ba3c4ac861b033ba90900bb3000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c8000000000000000000000000de95ef02810c4da6411dba60252f46f35083eb31