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)
calculateBoostAmountForDebtSwap
viewfunction calculateBoostAmountForDebtSwap(address user, address debtToRepay, uint256 amountToRepay, address debtToBorrow, uint256 amountToBorrow, address boostCollateral) view returns (uint256)
owner
viewfunction owner() view returns (address)
POOL
viewfunction POOL() view returns (address)
executeOperation
nonpayablefunction executeOperation(address[] assets, uint256[] amounts, uint256[] premiums, address initiator, bytes params) returns (bool)
multicall
nonpayablefunction multicall(bytes[] data) returns (bytes[] results)
performCollateralSwap
nonpayablefunction performCollateralSwap(tuple params)
performDebtSwap
nonpayablefunction performDebtSwap(tuple params)
receiveFlashLoan
nonpayablefunction receiveFlashLoan(address[] tokens, uint256[] amounts, uint256[] feeAmounts, bytes userData)
renounceOwnership
nonpayablefunction renounceOwnership()
rescueEth
nonpayablefunction rescueEth()
rescueTokens
nonpayablefunction rescueTokens(address token)
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)
InvalidOperationType
error InvalidOperationType()
InvalidReserveIndex
error InvalidReserveIndex()
NativeTokenTransferFailed
error NativeTokenTransferFailed(bytes errorData)
NoBalancerInNetwork
error NoBalancerInNetwork()
NotAllowedSender
error NotAllowedSender()
NotEnoughWithdrawnBoostAmount
error NotEnoughWithdrawnBoostAmount(uint256 withdrawnAmount, uint256 boostAmount)
NotZeroFlashLoanPremium
error NotZeroFlashLoanPremium(uint256 premium)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
WrongFlashLoanSource
error WrongFlashLoanSource()
ZeroAddress
error ZeroAddress()
creation bytecode
0x610100604052348015610010575f5ffd5b50604051614f60380380614f6083398101604081905261002f9161022e565b828482848282806001600160a01b03811661006457604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61006d816101c8565b506001600160a01b0382166100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03821660808190526040805163026b1d5f60e01b8152905163026b1d5f916004808201926020929091908290030181865afa1580156100dd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610101919061028a565b6001600160a01b0390811660a05292831660c052505083163b1580610187575060405163fb04e17b60e01b81525f60048201526001600160a01b0384169063fb04e17b90602401602060405180830381865afa158015610163573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061018791906102ac565b156101b057604051630411b82d60e01b81526001600160a01b038416600482015260240161005b565b50506001600160a01b031660e052506102cb92505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461022b575f5ffd5b50565b5f5f5f5f60808587031215610241575f5ffd5b845161024c81610217565b602086015190945061025d81610217565b604086015190935061026e81610217565b606086015190925061027f81610217565b939692955090935050565b5f6020828403121561029a575f5ffd5b81516102a581610217565b9392505050565b5f602082840312156102bc575f5ffd5b815180151581146102a5575f5ffd5b60805160a05160c05160e051614b3561042b5f395f818161016f015261365b01525f8181610241015281816108d60152818161094f015281816115d40152818161164d01526117c701525f818161019e015281816103640152818161040d015281816104b5015281816109c801528181610a7f01528181610bb90152818161109901528181611383015281816116c60152818161174401528181611a3b01528181611b1f01528181611baf01528181611c530152818161204e0152818161208a0152818161212701528181612326015281816123f0015281816124cd01528181612529015281816125b9015281816125f5015281816126a2015281816127220152818161289201528181612a4f01528181612d9e01528181612e2d01528181612ee6015281816131b4015281816131f001528181613292015281816133f20152818161344e01526134d301525f81816101180152610c560152614b355ff3fe608060405234801561000f575f5ffd5b50600436106100fa575f3560e01c8063920f5c8411610093578063ce31a06b11610063578063ce31a06b14610263578063d85dc0f91461026b578063f04f27071461027e578063f2fde38b14610291575f5ffd5b8063920f5c84146101f1578063ac9650d814610214578063b4366edc14610234578063bc1638461461023c575f5ffd5b8063715018a6116100ce578063715018a6146101915780637535d246146101995780638b480ae4146101c05780638da5cb5b146101e1575f5ffd5b8062ae3bf8146100fe5780630542975c146101135780633a67f40b146101575780633a8298671461016a575b5f5ffd5b61011161010c3660046137f7565b6102a4565b005b61013a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610111610165366004613a08565b61033a565b61013a7f000000000000000000000000000000000000000000000000000000000000000081565b610111610b13565b61013a7f000000000000000000000000000000000000000000000000000000000000000081565b6101d36101ce366004613b01565b610b26565b60405190815260200161014e565b5f546001600160a01b031661013a565b6102046101ff366004613bf1565b61108d565b604051901515815260200161014e565b610227610222366004613ccf565b6111de565b60405161014e9190613d3b565b6101d3606481565b61013a7f000000000000000000000000000000000000000000000000000000000000000081565b6101116112c4565b610111610279366004613db6565b61135d565b61011161028c366004613f26565b6117bc565b61011161029f3660046137f7565b611817565b6102ac611851565b6103376102c05f546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610302573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610326919061403b565b6001600160a01b038416919061187d565b50565b60208101516040516301b2848560e51b81526001600160a01b0391821660048201526103d99133917f00000000000000000000000000000000000000000000000000000000000000009091169063365090a090602401602060405180830381865afa1580156103ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103cf919061405d565b83606001516118e1565b60e0810151156104835760c081015160405163cff027d960e01b81526001600160a01b0391821660048201526104839133917f00000000000000000000000000000000000000000000000000000000000000009091169063cff027d990602401602060405180830381865afa158015610454573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610478919061405d565b83610100015161196e565b5f198160a001510361058e5760808101516040516301b2848560e51b81526001600160a01b0391821660048201525f917f0000000000000000000000000000000000000000000000000000000000000000169063365090a090602401602060405180830381865afa1580156104fa573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051e919061405d565b6040516370a0823160e01b81523360048201529091506001600160a01b038216906370a0823190602401602060405180830381865afa158015610563573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610587919061403b565b60a0830152505b6060808260e001515f14806105bc575082608001516001600160a01b03168360c001516001600160a01b0316145b1561066f57604080516001808252818301909252906020808301908036833750506040805160018082528183019092529294509050602080830190803683370190505090508260800151825f8151811061061857610618614078565b60200260200101906001600160a01b031690816001600160a01b0316815250508260e001518360a0015161064c91906140a0565b815f8151811061065e5761065e614078565b602002602001018181525050610832565b604080516002808252606082018352909160208301908036833750506040805160028082526060820183529395509291506020830190803683370190505090508260c001516001600160a01b031683608001516001600160a01b0316101561077b578260800151825f815181106106e8576106e8614078565b60200260200101906001600160a01b031690816001600160a01b0316815250508260a00151815f8151811061071f5761071f614078565b6020026020010181815250508260c001518260018151811061074357610743614078565b60200260200101906001600160a01b031690816001600160a01b0316815250508260e001518160018151811061065e5761065e614078565b8260c00151825f8151811061079257610792614078565b60200260200101906001600160a01b031690816001600160a01b0316815250508260e00151815f815181106107c9576107c9614078565b6020026020010181815250508260800151826001815181106107ed576107ed614078565b60200260200101906001600160a01b031690816001600160a01b0316815250508260a001518160018151811061082557610825614078565b6020026020010181815250505b6040805160c080820183523382526020868101516001600160a01b039081169184019190915286840151838501529086015116606082015260e0850151608082015261012085015160a08201528151808301909252905f908060018152602001836040516020016108a391906140c7565b60408051601f198184030181529181529152516108c39190602001614133565b60405160208183030381529060405290507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316855f01516001600160a01b0316036109bc5784516001600160a01b031661093857604051630ee8358160e11b815260040160405180910390fd5b604051632e1c224f60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635c38449e9061098a9030908890889087906004016141e8565b5f604051808303815f87803b1580156109a1575f5ffd5b505af11580156109b3573d5f5f3e3d5ffd5b50505050610b0c565b84516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911603610af3575f84516001600160401b03811115610a0a57610a0a613812565b604051908082528060200260200182016040528015610a33578160200160208202803683370190505b5090505f5b8551811015610a67575f828281518110610a5457610a54614078565b6020908102919091010152600101610a38565b5060405163ab9c4b5d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ab9c4b5d90610ac090309089908990879084908a905f9060040161423c565b5f604051808303815f87803b158015610ad7575f5ffd5b505af1158015610ae9573d5f5f3e3d5ffd5b5050505050610b0c565b60405163e03f58c360e01b815260040160405180910390fd5b5050505050565b610b1b611851565b610b245f6119c9565b565b5f610b9a604051806101e001604052805f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b604051632fe4a15f60e21b81526001600160a01b0389811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063bf92857c9060240160c060405180830381865afa158015610bfe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2291906142c1565b506060860152604080860191909152602080860193909352928452508151631f94a27560e31b815291516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263fca513a89260048083019391928290030181865afa158015610c9c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc0919061405d565b6001600160a01b039081166080830181905260405163b3596f0760e01b815291891660048301529063b3596f0790602401602060405180830381865afa158015610d0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d30919061403b565b8160a0018181525050866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d999190614307565b610da490600a614405565b60c0820181905260a0820151610dbb908890614413565b610dc5919061442a565b60e0820152608081015160405163b3596f0760e01b81526001600160a01b0387811660048301529091169063b3596f0790602401602060405180830381865afa158015610e14573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e38919061403b565b81610100018181525050846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea29190614307565b610ead90600a614405565b6101208201819052610100820151610ec6908690614413565b610ed0919061442a565b610140820152606081015181516305f5e10091610eec91614413565b610ef8906126ac614413565b610f02919061442a565b61016082015261014081015160e08201516020830151610f229190614449565b610f2c91906140a0565b610180820181905261016082015110610f48575f915050611083565b610f528884611a18565b6101a08201819052610160820151610180830151610f709190614449565b610f7c90612710614413565b610f86919061442a565b6101c0820152608081015160405163b3596f0760e01b81526001600160a01b0385811660048301529091169063b3596f0790602401602060405180830381865afa158015610fd6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffa919061403b565b836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611036573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105a9190614307565b61106590600a614405565b826101c001516110759190614413565b61107f919061442a565b9150505b9695505050505050565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110d75760405163cf62cd9760e01b815260040160405180910390fd5b6001600160a01b0384163014611100576040516356af165560e11b815260040160405180910390fd5b6111ce8a8a808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050604080516020808e0282810182019093528d82529093508d92508c9182918501908490808284375f9201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611ce692505050565b5060019998505050505050505050565b604080515f815260208101909152606090826001600160401b0381111561120757611207613812565b60405190808252806020026020018201604052801561123a57816020015b60608152602001906001900390816112255790505b5091505f5b838110156112bb576112963086868481811061125d5761125d614078565b905060200281019061126f919061445c565b85604051602001611282939291906144b5565b604051602081830303815290604052611f28565b8382815181106112a8576112a8614078565b602090810291909101015260010161123f565b50505b92915050565b6112cc611851565b5f5f6112df5f546001600160a01b031690565b6001600160a01b0316476040515f6040518083038185875af1925050503d805f8114611326576040519150601f19603f3d011682016040523d82523d5f602084013e61132b565b606091505b509150915081611359578060405163f649713b60e01b815260040161135091906144ca565b60405180910390fd5b5050565b608081015160405163cff027d960e01b81526001600160a01b0391821660048201525f917f0000000000000000000000000000000000000000000000000000000000000000169063cff027d990602401602060405180830381865afa1580156113c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ec919061405d565b90506113fd33828460c0015161196e565b5f198260a0015103611475576040516370a0823160e01b81523360048201526001600160a01b038216906370a0823190602401602060405180830381865afa15801561144b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061146f919061403b565b60a08301525b6040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f929150602080830190803683370190505090508360400151825f815181106114cf576114cf614078565b60200260200101906001600160a01b031690816001600160a01b0316815250508360600151815f8151811061150657611506614078565b6020026020010181815250505f6040518060c00160405280336001600160a01b0316815260200186608001516001600160a01b031681526020018660a0015181526020018660200151151581526020018660e001511515815260200186610100015181525090505f60405180604001604052805f600181111561158b5761158b6140b3565b8152602001836040516020016115a191906144dc565b60408051601f198184030181529181529152516115c19190602001614133565b60405160208183030381529060405290507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316865f01516001600160a01b0316036116ba5785516001600160a01b031661163657604051630ee8358160e11b815260040160405180910390fd5b604051632e1c224f60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635c38449e906116889030908890889087906004016141e8565b5f604051808303815f87803b15801561169f575f5ffd5b505af11580156116b1573d5f5f3e3d5ffd5b505050506117b4565b85516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911603610af3576040805160018082528183019092525f91602080830190803683370190505090505f815f8151811061172257611722614078565b602090810291909101015260405163ab9c4b5d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ab9c4b5d9061178590309089908990879084908a905f9060040161423c565b5f604051808303815f87803b15801561179c575f5ffd5b505af11580156117ae573d5f5f3e3d5ffd5b50505050505b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118055760405163cf62cd9760e01b815260040160405180910390fd5b61181184848484611ce6565b50505050565b61181f611851565b6001600160a01b03811661184857604051631e4fbdf760e01b81525f6004820152602401611350565b610337816119c9565b5f546001600160a01b03163314610b245760405163118cdaa760e01b8152336004820152602401611350565b6040516001600160a01b038381166024830152604482018390526118dc91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611f9a565b505050565b80602001515f036118f157505050565b816001600160a01b0316630b52d5588430845f015185602001518660400151876060015188608001516040518863ffffffff1660e01b815260040161193c979695949392919061453c565b5f604051808303815f87803b158015611953575f5ffd5b505af1925050508015611964575060015b156118dc57505050565b80602001515f0361197e57505050565b816001600160a01b031663d505accf8430845f015185602001518660400151876060015188608001516040518863ffffffff1660e01b815260040161193c979695949392919061453c565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516335ea6a7560e01b81526001600160a01b0382811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa158015611a81573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa591906145f7565b90505f5f611adb835f01515161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b50505091509150805f1480611aee575081155b15611afe575f93505050506112be565b60405163eddf1b7960e01b81526001600160a01b0387811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063eddf1b7990602401602060405180830381865afa158015611b66573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8a919061403b565b905060ff811615611cdb5760405163583b8edd60e11b815260ff821660048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0771dba90602401602060405180830381865afa158015611bfc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c209190614721565b9050611c34818660e0015161ffff16612006565b15611cd957604051636c6f6ae160e01b815260ff831660048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636c6f6ae1906024015f60405180830381865afa158015611c9f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611cc69190810190614770565b5161ffff1696506112be95505050505050565b505b509095945050505050565b815f81518110611cf857611cf8614078565b60200260200101515f14611d3c57815f81518110611d1857611d18614078565b60200260200101516040516357ee236d60e11b815260040161135091815260200190565b83516002148015611d67575081600181518110611d5b57611d5b614078565b60200260200101515f14155b15611d7f5781600181518110611d1857611d18614078565b5f81806020019051810190611d949190614854565b90505f81516001811115611daa57611daa6140b3565b03611e2a575f8160200151806020019051810190611dc891906148df565b9050611e2433825f0151885f81518110611de457611de4614078565b60200260200101518460200151895f81518110611e0357611e03614078565b60200260200101518660400151876060015188608001518960a0015161203f565b50610b0c565b600181516001811115611e3f57611e3f6140b3565b03611f0f575f8160200151806020019051810190611e5d919061499d565b90505f81608001515f14158015611e75575086516001145b15611eaa578160800151865f81518110611e9157611e91614078565b6020026020010151611ea39190614449565b9050611ec7565b855f81518110611ebc57611ebc614078565b602002602001015190505b611f0833835f015184602001518a5f81518110611ee657611ee6614078565b6020026020010151866040015186886060015189608001518a60a001516124be565b5050610b0c565b604051630ead561960e11b815260040160405180910390fd5b60605f5f846001600160a01b031684604051611f449190614a3a565b5f60405180830381855af49150503d805f8114611f7c576040519150601f19603f3d011682016040523d82523d5f602084013e611f81565b606091505b5091509150611f91858383612c8f565b95945050505050565b5f5f60205f8451602086015f885af180611fb9576040513d5f823e3d81fd5b50505f513d91508115611fd0578060011415611fdd565b6001600160a01b0384163b155b1561181157604051635274afe760e01b81526001600160a01b0385166004820152602401611350565b5f60808210612028576040516385e98beb60e01b815260040160405180910390fd5b506001600160801b0391909116901c600116151590565b6120736001600160a01b0388167f000000000000000000000000000000000000000000000000000000000000000087612cee565b60405163617ba03760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906120c5908a9089908d905f90600401614a45565b5f604051808303815f87803b1580156120dc575f5ffd5b505af11580156120ee573d5f5f3e3d5ffd5b505050508215612102576121028888612d7d565b60405163cff027d960e01b81526001600160a01b0387811660048301525f91829182917f00000000000000000000000000000000000000000000000000000000000000009091169063cff027d990602401602060405180830381865afa15801561216e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612192919061405d565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156121d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121fd919061403b565b6040516323b872dd60e01b81526001600160a01b038e81166004830152306024830152604482018b9052919250908316906323b872dd906064016020604051808303815f875af1158015612253573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122779190614a72565b506040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156122bc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e0919061403b565b6122ea9190614449565b97505f86156122fa575081612396565b604051631a4ca37b60e21b81526001600160a01b038c81166004830152602482018b90523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec906064016020604051808303815f875af115801561236c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612390919061403b565b98508a90505b6123a3818d8b8d8a612f43565b95509350505050858110156123cc575f6123bd8288614449565b90506123ca89828d61319c565b505b868211156123ee575f6123df8884614449565b90506123ec8a828d61319c565b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168b6001600160a01b0316036124405761243b6001600160a01b038a168c89612cee565b6117ae565b60405163a9059cbb60e01b81526001600160a01b038c81166004830152602482018990528a169063a9059cbb906044016020604051808303815f875af115801561248c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b09190614a72565b505050505050505050505050565b6124f26001600160a01b0387167f000000000000000000000000000000000000000000000000000000000000000086612cee565b60405163573ade8160e01b81526001600160a01b038781166004830152602482018690526002604483015289811660648301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063573ade81906084016020604051808303815f875af1158015612571573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612595919061403b565b90505f6125a28287614449565b90508315612667576125de6001600160a01b0386167f000000000000000000000000000000000000000000000000000000000000000086612cee565b60405163617ba03760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063617ba0379061263090889088908f905f90600401614a45565b5f604051808303815f87803b158015612647575f5ffd5b505af1158015612659573d5f5f3e3d5ffd5b505050506126678a86612d7d565b60405163a415bcad60e01b81526001600160a01b038a8116600483015260248201899052600260448301525f60648301528b811660848301527f0000000000000000000000000000000000000000000000000000000000000000169063a415bcad9060a4015f604051808303815f87803b1580156126e3575f5ffd5b505af11580156126f5573d5f5f3e3d5ffd5b505050505f845f146129dc5760405163cff027d960e01b81526001600160a01b0387811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063cff027d990602401602060405180830381865afa158015612769573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061278d919061405d565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156127d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127f8919061403b565b6040516323b872dd60e01b81526001600160a01b038f81166004830152306024830152604482018a9052919250908316906323b872dd906064016020604051808303815f875af115801561284e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128729190614a72565b506040516370a0823160e01b81523060048201525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116916369328dec918c9186918816906370a0823190602401602060405180830381865afa1580156128e5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612909919061403b565b6129139190614449565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201523060448201526064016020604051808303815f875af1158015612961573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612985919061403b565b9050878110156129d8578b6001600160a01b0316896001600160a01b0316146129cb57604051630f5521b760e01b81526004810182905260248101899052604401611350565b6129d58189614449565b93505b5050505b5f806129ff8c8c8c866129ef898f614449565b6129f991906140a0565b8a612f43565b909250905082612a0f85836140a0565b612a199190614449565b905089821015612a3757612a378c612a31848d614449565b8f613271565b88811115612a4d57612a4d8b612a318b84614449565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168e6001600160a01b031603612af157876001600160a01b03168b6001600160a01b031603612ac357612abe8e612aad898c6140a0565b6001600160a01b038e169190612cee565b612c7f565b612ad76001600160a01b038c168f8b612cee565b8615612abe57612abe6001600160a01b0389168f89612cee565b876001600160a01b03168b6001600160a01b031603612b96576001600160a01b038b1663a9059cbb8f612b248a8d6140a0565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015612b6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b909190614a72565b50612c7f565b60405163a9059cbb60e01b81526001600160a01b038f81166004830152602482018b90528c169063a9059cbb906044016020604051808303815f875af1158015612be2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c069190614a72565b508615612c7f5760405163a9059cbb60e01b81526001600160a01b038f811660048301526024820189905289169063a9059cbb906044016020604051808303815f875af1158015612c59573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c7d9190614a72565b505b5050505050505050505050505050565b606082612ca457612c9f8261357e565b612ce7565b8151158015612cbb57506001600160a01b0384163b155b15612ce457604051639996b31560e01b81526001600160a01b0385166004820152602401611350565b50805b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612d3f84826135a7565b611811576040516001600160a01b0384811660248301525f6044830152612d7391869182169063095ea7b3906064016118aa565b6118118482611f9a565b604051634417a58360e01b81526001600160a01b0383811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690634417a58390602401602060405180830381865afa158015612de5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e099190614a8d565b6040516335ea6a7560e01b81526001600160a01b0384811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa158015612e73573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e9791906145f7565b9050612eb48160e0015161ffff16836135ec90919063ffffffff16565b61181157604051634b959afd60e11b81526001600160a01b0384811660048301526001602483015285811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063972b35fa906064015f604051808303815f87803b158015612f27575f5ffd5b505af1158015612f39573d5f5f3e3d5ffd5b5050505050505050565b6040516370a0823160e01b81523060048201525f90819081906001600160a01b038816906370a0823190602401602060405180830381865afa158015612f8b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612faf919061403b565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038a16906370a0823190602401602060405180830381865afa158015612ff6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061301a919061403b565b9050613029898989898961361f565b6040516370a0823160e01b815230600482015282906001600160a01b038a16906370a0823190602401602060405180830381865afa15801561306d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613091919061403b565b61309b9190614449565b9250858310156130c85760405163126c3c7360e21b81526004810184905260248101879052604401611350565b6040516370a0823160e01b81523060048201526001600160a01b038a16906370a0823190602401602060405180830381865afa15801561310a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061312e919061403b565b6131389082614449565b9350876001600160a01b0316896001600160a01b03167fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8686604051613188929190918252602082015260400190565b60405180910390a350509550959350505050565b600282111561325d576131d96001600160a01b0384167f000000000000000000000000000000000000000000000000000000000000000084612cee565b60405163617ba03760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063617ba0379061322b908690869086905f90600401614a45565b5f604051808303815f87803b158015613242575f5ffd5b505af1158015613254573d5f5f3e3d5ffd5b50505050505050565b6118dc6001600160a01b038416828461187d565b6040516301b2848560e51b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063365090a090602401602060405180830381865afa1580156132d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132fd919061405d565b604051630ed1279f60e11b81526001600160a01b0384811660048301529192505f91831690631da24f3e90602401602060405180830381865afa158015613346573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061336a919061403b565b9050805f036133e35760405163a9059cbb60e01b81526001600160a01b0384811660048301526024820186905286169063a9059cbb906044016020604051808303815f875af11580156133bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b49190614a72565b6134176001600160a01b0386167f000000000000000000000000000000000000000000000000000000000000000086612cee565b60405163573ade8160e01b81526001600160a01b038681166004830152602482018690526002604483015284811660648301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063573ade81906084016020604051808303815f875af1158015613496573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ba919061403b565b9050848110156117b4576134f86001600160a01b0387167f00000000000000000000000000000000000000000000000000000000000000005f612cee565b6001600160a01b03861663a9059cbb856135128489614449565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af115801561355a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132549190614a72565b80511561358e5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f5f5f5f60205f8651602088015f8a5af192503d91505f519050828015611083575081156135d85780600114611083565b50505050506001600160a01b03163b151590565b5f6080821061360e576040516385e98beb60e01b815260040160405180910390fd5b509051600191821b82011c16151590565b5f818060200190518101906136349190614aa7565b602081015160405163fb04e17b60e01b81526001600160a01b0391821660048201529192507f0000000000000000000000000000000000000000000000000000000000000000169063fb04e17b90602401602060405180830381865afa1580156136a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136c49190614a72565b6136f2576020810151604051630411b82d60e01b81526001600160a01b039091166004820152602401611350565b602081015161370c906001600160a01b0388169086612cee565b8051805161371c90602090614449565b606411158151906137435760405163080e19e960e41b815260040161135091815260200190565b508460206064018201525f82602001516001600160a01b03168260405161376a9190614a3a565b5f604051808303815f865af19150503d805f81146137a3576040519150601f19603f3d011682016040523d82523d5f602084013e6137a8565b606091505b50509050806137b9573d5f5f3e3d5ffd5b6020830151612f39906001600160a01b038a16905f612cee565b6001600160a01b0381168114610337575f5ffd5b80356137f2816137d3565b919050565b5f60208284031215613807575f5ffd5b8135612ce7816137d3565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b038111828210171561384857613848613812565b60405290565b60405161014081016001600160401b038111828210171561384857613848613812565b60405161012081016001600160401b038111828210171561384857613848613812565b6040516101e081016001600160401b038111828210171561384857613848613812565b604080519081016001600160401b038111828210171561384857613848613812565b60405160c081016001600160401b038111828210171561384857613848613812565b604051601f8201601f191681016001600160401b038111828210171561392357613923613812565b604052919050565b60ff81168114610337575f5ffd5b5f60a08284031215613949575f5ffd5b613951613826565b82358152602080840135908201529050604082013561396f8161392b565b60408201526060828101359082015260809182013591810191909152919050565b5f6001600160401b038211156139a8576139a8613812565b50601f01601f191660200190565b5f82601f8301126139c5575f5ffd5b81356139d86139d382613990565b6138fb565b8181528460208386010111156139ec575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215613a18575f5ffd5b81356001600160401b03811115613a2d575f5ffd5b82016102408185031215613a3f575f5ffd5b613a4761384e565b613a50826137e7565b8152613a5e602083016137e7565b602082015260408281013590820152613a7a8560608401613939565b6060820152613a8c61010083016137e7565b608082015261012082013560a0820152613aa961014083016137e7565b60c082015261016082013560e0820152613ac7856101808401613939565b6101008201526102208201356001600160401b03811115613ae6575f5ffd5b613af2868285016139b6565b61012083015250949350505050565b5f5f5f5f5f5f60c08789031215613b16575f5ffd5b8635613b21816137d3565b95506020870135613b31816137d3565b9450604087013593506060870135613b48816137d3565b92506080870135915060a0870135613b5f816137d3565b809150509295509295509295565b5f5f83601f840112613b7d575f5ffd5b5081356001600160401b03811115613b93575f5ffd5b6020830191508360208260051b8501011115613bad575f5ffd5b9250929050565b5f5f83601f840112613bc4575f5ffd5b5081356001600160401b03811115613bda575f5ffd5b602083019150836020828501011115613bad575f5ffd5b5f5f5f5f5f5f5f5f5f60a08a8c031215613c09575f5ffd5b89356001600160401b03811115613c1e575f5ffd5b613c2a8c828d01613b6d565b909a5098505060208a01356001600160401b03811115613c48575f5ffd5b613c548c828d01613b6d565b90985096505060408a01356001600160401b03811115613c72575f5ffd5b613c7e8c828d01613b6d565b90965094505060608a0135613c92816137d3565b925060808a01356001600160401b03811115613cac575f5ffd5b613cb88c828d01613bb4565b915080935050809150509295985092959850929598565b5f5f60208385031215613ce0575f5ffd5b82356001600160401b03811115613cf5575f5ffd5b613d0185828601613b6d565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613d9257603f19878603018452613d7d858351613d0d565b94506020938401939190910190600101613d61565b50929695505050505050565b8015158114610337575f5ffd5b80356137f281613d9e565b5f60208284031215613dc6575f5ffd5b81356001600160401b03811115613ddb575f5ffd5b82016101a08185031215613ded575f5ffd5b613df5613871565b613dfe826137e7565b8152613e0c60208301613dab565b6020820152613e1d604083016137e7565b604082015260608281013590820152613e38608083016137e7565b608082015260a08281013590820152613e548560c08401613939565b60c0820152613e666101608301613dab565b60e08201526101808201356001600160401b03811115613e84575f5ffd5b613e90868285016139b6565b61010083015250949350505050565b5f6001600160401b03821115613eb757613eb7613812565b5060051b60200190565b5f82601f830112613ed0575f5ffd5b8135613ede6139d382613e9f565b8082825260208201915060208360051b860101925085831115613eff575f5ffd5b602085015b83811015613f1c578035835260209283019201613f04565b5095945050505050565b5f5f5f5f60808587031215613f39575f5ffd5b84356001600160401b03811115613f4e575f5ffd5b8501601f81018713613f5e575f5ffd5b8035613f6c6139d382613e9f565b8082825260208201915060208360051b850101925089831115613f8d575f5ffd5b6020840193505b82841015613fb8578335613fa7816137d3565b825260209384019390910190613f94565b965050505060208501356001600160401b03811115613fd5575f5ffd5b613fe187828801613ec1565b93505060408501356001600160401b03811115613ffc575f5ffd5b61400887828801613ec1565b92505060608501356001600160401b03811115614023575f5ffd5b61402f878288016139b6565b91505092959194509250565b5f6020828403121561404b575f5ffd5b5051919050565b80516137f2816137d3565b5f6020828403121561406d575f5ffd5b8151612ce7816137d3565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156112be576112be61408c565b634e487b7160e01b5f52602160045260245ffd5b6020815260018060a01b03825116602082015260018060a01b0360208301511660408201526040820151606082015260018060a01b036060830151166080820152608082015160a08201525f60a083015160c08084015261412b60e0840182613d0d565b949350505050565b602081525f82516002811061415657634e487b7160e01b5f52602160045260245ffd5b80602084015250602083015160408084015261412b6060840182613d0d565b5f8151808452602084019350602083015f5b828110156141ae5781516001600160a01b0316865260209586019590910190600101614187565b5093949350505050565b5f8151808452602084019350602083015f5b828110156141ae5781518652602095860195909101906001016141ca565b6001600160a01b03851681526080602082018190525f9061420b90830186614175565b828103604084015261421d81866141b8565b905082810360608401526142318185613d0d565b979650505050505050565b6001600160a01b038816815260e0602082018190525f9061425f90830189614175565b828103604084015261427181896141b8565b9050828103606084015261428581886141b8565b6001600160a01b038716608085015283810360a085015290506142a88186613d0d565b91505061ffff831660c083015298975050505050505050565b5f5f5f5f5f5f60c087890312156142d6575f5ffd5b50508451602086015160408701516060880151608089015160a090990151939a929950909790965094509092509050565b5f60208284031215614317575f5ffd5b8151612ce78161392b565b6001815b600184111561435d578085048111156143415761434161408c565b600184161561434f57908102905b60019390931c928002614326565b935093915050565b5f82614373575060016112be565b8161437f57505f6112be565b8160018114614395576002811461439f576143bb565b60019150506112be565b60ff8411156143b0576143b061408c565b50506001821b6112be565b5060208310610133831016604e8410600b84101617156143de575081810a6112be565b6143ea5f198484614322565b805f19048211156143fd576143fd61408c565b029392505050565b5f612ce760ff841683614365565b80820281158282048414176112be576112be61408c565b5f8261444457634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156112be576112be61408c565b5f5f8335601e19843603018112614471575f5ffd5b8301803591506001600160401b0382111561448a575f5ffd5b602001915036819003821315613bad575f5ffd5b5f81518060208401855e5f93019283525090919050565b828482375f8382015f8152611083818561449e565b602081525f612ce76020830184613d0d565b6020815260018060a01b03825116602082015260018060a01b036020830151166040820152604082015160608201526060820151151560808201526080820151151560a08201525f60a083015160c08084015261412b60e0840182613d0d565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b5f6020828403121561458d575f5ffd5b604051602081016001600160401b03811182821017156145af576145af613812565b6040529151825250919050565b80516001600160801b03811681146137f2575f5ffd5b805164ffffffffff811681146137f2575f5ffd5b805161ffff811681146137f2575f5ffd5b5f6101e0828403128015614609575f5ffd5b50614612613894565b61461c848461457d565b815261462a602084016145bc565b602082015261463b604084016145bc565b604082015261464c606084016145bc565b606082015261465d608084016145bc565b608082015261466e60a084016145bc565b60a082015261467f60c084016145d2565b60c082015261469060e084016145e6565b60e08201526146a26101008401614052565b6101008201526146b56101208401614052565b6101208201526146c86101408401614052565b6101408201526146db6101608401614052565b6101608201526146ee61018084016145bc565b6101808201526147016101a084016145bc565b6101a08201526147146101c084016145bc565b6101c08201529392505050565b5f60208284031215614731575f5ffd5b612ce7826145bc565b5f6147476139d384613990565b905082815283838301111561475a575f5ffd5b8282602083015e5f602084830101529392505050565b5f60208284031215614780575f5ffd5b81516001600160401b03811115614795575f5ffd5b820160a081850312156147a6575f5ffd5b6147ae613826565b6147b7826145e6565b81526147c5602083016145e6565b60208201526147d6604083016145e6565b604082015260608201516147e9816137d3565b606082015260808201516001600160401b03811115614806575f5ffd5b80830192505084601f83011261481a575f5ffd5b6148298583516020850161473a565b6080820152949350505050565b5f82601f830112614845575f5ffd5b612ce78383516020850161473a565b5f60208284031215614864575f5ffd5b81516001600160401b03811115614879575f5ffd5b82016040818503121561488a575f5ffd5b6148926138b7565b8151600281106148a0575f5ffd5b815260208201516001600160401b038111156148ba575f5ffd5b6148c686828501614836565b602083015250949350505050565b80516137f281613d9e565b5f602082840312156148ef575f5ffd5b81516001600160401b03811115614904575f5ffd5b820160c08185031215614915575f5ffd5b61491d6138d9565b8151614928816137d3565b81526020820151614938816137d3565b602082015260408281015190820152606082015161495581613d9e565b6060820152614966608083016148d4565b608082015260a08201516001600160401b03811115614983575f5ffd5b61498f86828501614836565b60a083015250949350505050565b5f602082840312156149ad575f5ffd5b81516001600160401b038111156149c2575f5ffd5b820160c081850312156149d3575f5ffd5b6149db6138d9565b81516149e6816137d3565b815260208201516149f6816137d3565b6020820152604082810151908201526060820151614a13816137d3565b60608201526080828101519082015260a08201516001600160401b03811115614983575f5ffd5b5f612ce7828461449e565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b5f60208284031215614a82575f5ffd5b8151612ce781613d9e565b5f60208284031215614a9d575f5ffd5b612ce7838361457d565b5f60208284031215614ab7575f5ffd5b81516001600160401b03811115614acc575f5ffd5b820160408185031215614add575f5ffd5b614ae56138b7565b81516001600160401b03811115614afa575f5ffd5b614b0686828501614836565b82525060208201519150614b19826137d3565b6020810191909152939250505056fea164736f6c634300081b000a000000000000000000000000e20fcbdbffc4dd138ce8b2e6fbb6cb49777ad64d0000000000000000000000007e31b336f9e8ba52ba3c4ac861b033ba90900bb3000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c8000000000000000000000000de95ef02810c4da6411dba60252f46f35083eb31