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)
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)
performCollateralSwap
nonpayablefunction performCollateralSwap(tuple params)
performDebtSwap
nonpayablefunction performDebtSwap(tuple params)
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)
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
0x610100604052348015610010575f5ffd5b506040516151d83803806151d883398101604081905261002f9161022e565b828482848282806001600160a01b03811661006457604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61006d816101c8565b506001600160a01b0382166100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03821660808190526040805163026b1d5f60e01b8152905163026b1d5f916004808201926020929091908290030181865afa1580156100dd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610101919061028a565b6001600160a01b0390811660a05292831660c052505083163b1580610187575060405163fb04e17b60e01b81525f60048201526001600160a01b0384169063fb04e17b90602401602060405180830381865afa158015610163573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061018791906102ac565b156101b057604051630411b82d60e01b81526001600160a01b038416600482015260240161005b565b50506001600160a01b031660e052506102cb92505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461022b575f5ffd5b50565b5f5f5f5f60808587031215610241575f5ffd5b845161024c81610217565b602086015190945061025d81610217565b604086015190935061026e81610217565b606086015190925061027f81610217565b939692955090935050565b5f6020828403121561029a575f5ffd5b81516102a581610217565b9392505050565b5f602082840312156102bc575f5ffd5b815180151581146102a5575f5ffd5b60805160a05160c05160e051614db46104245f395f818161019b015261391f01525f81816102b90152818161100801528181611081015281816113d5015261172e01525f81816101ca015281816103f901528181610505015281816109e501528181610bc5015281816110fa015281816111b1015281816114f70152818161179c0152818161181a01528181611a4301528181611ad201528181611b8b01528181611f6001528181611fff015281816121b5015281816121f1015281816122900152818161248d015281816126000152818161265e01528181612700015281816127e80152818161280f01528181612949015281816129c901528181612b3901528181612e5a01528181612f1001528181612f9c0152818161305e01528181613470015281816134ac0152818161352501528181613685015281816136e1015261376601525f818161014401526105a20152614db45ff3fe608060405234801561000f575f5ffd5b5060043610610126575f3560e01c8063920f5c84116100a9578063bc1638461161006e578063bc163846146102b4578063ce31a06b146102db578063f04f2707146102e3578063f2fde38b146102f6578063f656372814610309575f5ffd5b8063920f5c8414610243578063a939dfea14610266578063ac9650d814610279578063b4366edc14610299578063b94e11c6146102a1575f5ffd5b80637535d246116100ef5780637535d246146101c55780637b873218146101ec578063897ae8bb146101ff5780638b480ae4146102125780638da5cb5b14610233575f5ffd5b8062ae3bf81461012a5780630542975c1461013f5780632b52ee9d146101835780633a82986714610196578063715018a6146101bd575b5f5ffd5b61013d610138366004613abb565b61031c565b005b6101667f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61013d610191366004613bda565b6103b2565b6101667f000000000000000000000000000000000000000000000000000000000000000081565b61013d6103c1565b6101667f000000000000000000000000000000000000000000000000000000000000000081565b61013d6101fa366004613bda565b6103d4565b61013d61020d366004613abb565b610468565b610225610220366004613c56565b610472565b60405190815260200161017a565b5f546001600160a01b0316610166565b610256610251366004613d3f565b6109d9565b604051901515815260200161017a565b61013d610274366004613e95565b610b93565b61028c610287366004613f62565b611245565b60405161017a9190613fce565b610225606481565b61013d6102af366004614031565b61132b565b6101667f000000000000000000000000000000000000000000000000000000000000000081565b61013d611335565b61013d6102f13660046140d3565b6113ca565b61013d610304366004613abb565b61148b565b61013d610317366004614200565b6114c5565b61032461185b565b6103af6103385f546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa15801561037a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039e91906142ba565b6001600160a01b0384169190611887565b50565b6103bd3383836118eb565b5050565b6103c961185b565b6103d25f611978565b565b6040516301b2848560e51b81526001600160a01b0383811660048301526103bd9133917f0000000000000000000000000000000000000000000000000000000000000000169063365090a090602401602060405180830381865afa15801561043e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046291906142dc565b836119c7565b6103af3382611a22565b5f6104e6604051806101e001604052805f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b604051632fe4a15f60e21b81526001600160a01b0389811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063bf92857c9060240160c060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906142f7565b506060860152604080860191909152602080860193909352928452508151631f94a27560e31b815291516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263fca513a89260048083019391928290030181865afa1580156105e8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061060c91906142dc565b6001600160a01b039081166080830181905260405163b3596f0760e01b815291891660048301529063b3596f0790602401602060405180830381865afa158015610658573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067c91906142ba565b8160a0018181525050866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e5919061433d565b6106f090600a61444f565b60c0820181905260a082015161070790889061445d565b6107119190614474565b60e0820152608081015160405163b3596f0760e01b81526001600160a01b0387811660048301529091169063b3596f0790602401602060405180830381865afa158015610760573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078491906142ba565b81610100018181525050846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ee919061433d565b6107f990600a61444f565b610120820181905261010082015161081290869061445d565b61081c9190614474565b610140820152606081015181516305f5e100916108389161445d565b610844906126ac61445d565b61084e9190614474565b61016082015261014081015160e0820151602083015161086e9190614493565b61087891906144a6565b610180820181905261016082015110610894575f9150506109cf565b61089e8884611be9565b6101a082018190526101608201516101808301516108bc9190614493565b6108c89061271061445d565b6108d29190614474565b6101c0820152608081015160405163b3596f0760e01b81526001600160a01b0385811660048301529091169063b3596f0790602401602060405180830381865afa158015610922573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094691906142ba565b836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610982573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a6919061433d565b6109b190600a61444f565b826101c001516109c1919061445d565b6109cb9190614474565b9150505b9695505050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a235760405163cf62cd9760e01b815260040160405180910390fd5b6001600160a01b0384163014610a4c576040516356af165560e11b815260040160405180910390fd5b610b1a8a8a808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050604080516020808e0282810182019093528d82529093508d92508c9182918501908490808284375f9201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611bfe92505050565b885f5b81811015610b8157610b79338b8b84818110610b3b57610b3b6144b9565b905060200201358e8e85818110610b5457610b546144b9565b9050602002016020810190610b699190613abb565b6001600160a01b03169190611e3e565b600101610b1d565b5060019b9a5050505050505050505050565b5f19816080015103610c9e5760608101516040516301b2848560e51b81526001600160a01b0391821660048201525f917f0000000000000000000000000000000000000000000000000000000000000000169063365090a090602401602060405180830381865afa158015610c0a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2e91906142dc565b6040516370a0823160e01b81523360048201529091506001600160a01b038216906370a0823190602401602060405180830381865afa158015610c73573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9791906142ba565b6080830152505b6060808260c001515f1480610ccc575082606001516001600160a01b03168360a001516001600160a01b0316145b15610d7f57604080516001808252818301909252906020808301908036833750506040805160018082528183019092529294509050602080830190803683370190505090508260600151825f81518110610d2857610d286144b9565b60200260200101906001600160a01b031690816001600160a01b0316815250508260c001518360800151610d5c91906144a6565b815f81518110610d6e57610d6e6144b9565b602002602001018181525050610f42565b604080516002808252606082018352909160208301908036833750506040805160028082526060820183529395509291506020830190803683370190505090508260a001516001600160a01b031683606001516001600160a01b03161015610e8b578260600151825f81518110610df857610df86144b9565b60200260200101906001600160a01b031690816001600160a01b0316815250508260800151815f81518110610e2f57610e2f6144b9565b6020026020010181815250508260a0015182600181518110610e5357610e536144b9565b60200260200101906001600160a01b031690816001600160a01b0316815250508260c0015181600181518110610d6e57610d6e6144b9565b8260a00151825f81518110610ea257610ea26144b9565b60200260200101906001600160a01b031690816001600160a01b0316815250508260c00151815f81518110610ed957610ed96144b9565b602002602001018181525050826060015182600181518110610efd57610efd6144b9565b60200260200101906001600160a01b031690816001600160a01b031681525050826080015181600181518110610f3557610f356144b9565b6020026020010181815250505b5f6040518060c00160405280336001600160a01b0316815260200185602001516001600160a01b03168152602001856040015181526020018560a001516001600160a01b031681526020018560c0015181526020018560e0015181525090505f6040518060400160405280600180811115610fbf57610fbf6144cd565b815260200183604051602001610fd591906144e1565b60408051601f19818403018152918152915251610ff5919060200161454d565b60405160208183030381529060405290507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316855f01516001600160a01b0316036110ee5784516001600160a01b031661106a57604051630ee8358160e11b815260040160405180910390fd5b604051632e1c224f60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635c38449e906110bc903090889088908790600401614602565b5f604051808303815f87803b1580156110d3575f5ffd5b505af11580156110e5573d5f5f3e3d5ffd5b5050505061123e565b84516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911603611225575f84516001600160401b0381111561113c5761113c613ad6565b604051908082528060200260200182016040528015611165578160200160208202803683370190505b5090505f5b8551811015611199575f828281518110611186576111866144b9565b602090810291909101015260010161116a565b5060405163ab9c4b5d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ab9c4b5d906111f290309089908990879084908a905f90600401614656565b5f604051808303815f87803b158015611209575f5ffd5b505af115801561121b573d5f5f3e3d5ffd5b505050505061123e565b60405163e03f58c360e01b815260040160405180910390fd5b5050505050565b604080515f815260208101909152606090826001600160401b0381111561126e5761126e613ad6565b6040519080825280602002602001820160405280156112a157816020015b606081526020019060019003908161128c5790505b5091505f5b83811015611322576112fd308686848181106112c4576112c46144b9565b90506020028101906112d691906146db565b856040516020016112e993929190614734565b604051602081830303815290604052611ecd565b83828151811061130f5761130f6144b9565b60209081029190910101526001016112a6565b50505b92915050565b6103af3382611f3f565b61133d61185b565b5f5f6113505f546001600160a01b031690565b6001600160a01b0316476040515f6040518083038185875af1925050503d805f8114611397576040519150601f19603f3d011682016040523d82523d5f602084013e61139c565b606091505b5091509150816103bd578060405163f649713b60e01b81526004016113c19190614749565b60405180910390fd5b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114135760405163cf62cd9760e01b815260040160405180910390fd5b61141f84848484611bfe565b83515f5b818110156114835761147b33868381518110611441576114416144b9565b602002602001015188848151811061145b5761145b6144b9565b60200260200101516001600160a01b03166118879092919063ffffffff16565b600101611423565b505050505050565b61149361185b565b6001600160a01b0381166114bc57604051631e4fbdf760e01b81525f60048201526024016113c1565b6103af81611978565b5f198160a00151036115d057608081015160405163cff027d960e01b81526001600160a01b0391821660048201525f917f0000000000000000000000000000000000000000000000000000000000000000169063cff027d990602401602060405180830381865afa15801561153c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156091906142dc565b6040516370a0823160e01b81523360048201529091506001600160a01b038216906370a0823190602401602060405180830381865afa1580156115a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c991906142ba565b60a0830152505b6040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f929150602080830190803683370190505090508260400151825f8151811061162a5761162a6144b9565b60200260200101906001600160a01b031690816001600160a01b0316815250508260600151815f81518110611661576116616144b9565b6020026020010181815250505f6040518060c00160405280336001600160a01b0316815260200185608001516001600160a01b031681526020018560a0015181526020018560200151151581526020018560c00151151581526020018560e0015181525090505f60405180604001604052805f60018111156116e5576116e56144cd565b8152602001836040516020016116fb919061475b565b60408051601f1981840301815291815291525161171b919060200161454d565b60405160208183030381529060405290507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316855f01516001600160a01b0316036117905784516001600160a01b031661106a57604051630ee8358160e11b815260040160405180910390fd5b84516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911603611225576040805160018082528183019092525f91602080830190803683370190505090505f815f815181106117f8576117f86144b9565b602090810291909101015260405163ab9c4b5d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ab9c4b5d906111f290309089908990879084908a905f90600401614656565b5f546001600160a01b031633146103d25760405163118cdaa760e01b81523360048201526024016113c1565b6040516001600160a01b038381166024830152604482018390526118e691859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061205c565b505050565b80602001515f036118fb57505050565b816001600160a01b031663d505accf8430845f015185602001518660400151876060015188608001516040518863ffffffff1660e01b815260040161194697969594939291906147bb565b5f604051808303815f87803b15801561195d575f5ffd5b505af192505050801561196e575060015b156118e657505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80602001515f036119d757505050565b816001600160a01b0316630b52d5588430845f015185602001518660400151876060015188608001516040518863ffffffff1660e01b815260040161194697969594939291906147bb565b604051634417a58360e01b81526001600160a01b0383811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690634417a58390602401602060405180830381865afa158015611a8a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aae919061483b565b6040516335ea6a7560e01b81526001600160a01b0384811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa158015611b18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b3c9190614890565b9050611b598160e0015161ffff16836120c890919063ffffffff16565b611be357604051634b959afd60e11b81526001600160a01b0384811660048301526001602483015285811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063972b35fa906064015f604051808303815f87803b158015611bcc575f5ffd5b505af1158015611bde573d5f5f3e3d5ffd5b505050505b50505050565b5f5f611bf584846120fb565b50949350505050565b815f81518110611c1057611c106144b9565b60200260200101515f14611c5457815f81518110611c3057611c306144b9565b60200260200101516040516357ee236d60e11b81526004016113c191815260200190565b83516002148015611c7f575081600181518110611c7357611c736144b9565b60200260200101515f14155b15611c975781600181518110611c3057611c306144b9565b5f81806020019051810190611cac9190614a0e565b90505f81516001811115611cc257611cc26144cd565b03611d41575f8160200151806020019051810190611ce09190614a99565b9050611d3b815f0151875f81518110611cfb57611cfb6144b9565b60200260200101518360200151885f81518110611d1a57611d1a6144b9565b60200260200101518560400151866060015187608001518860a001516121a6565b5061123e565b600181516001811115611d5657611d566144cd565b03611e25575f8160200151806020019051810190611d749190614b57565b90505f81608001515f14158015611d8c575086516001145b15611dc1578160800151865f81518110611da857611da86144b9565b6020026020010151611dba9190614493565b9050611dde565b855f81518110611dd357611dd36144b9565b602002602001015190505b611e1e825f01518360200151895f81518110611dfc57611dfc6144b9565b6020026020010151856040015185876060015188608001518960a001516125f1565b505061123e565b604051630ead561960e11b815260040160405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052611e8f8482612d03565b611be3576040516001600160a01b0384811660248301525f6044830152611ec391869182169063095ea7b3906064016118b4565b611be3848261205c565b60605f5f846001600160a01b031684604051611ee99190614bf4565b5f60405180830381855af49150503d805f8114611f21576040519150601f19603f3d011682016040523d82523d5f602084013e611f26565b606091505b5091509150611f36858383612d48565b95945050505050565b60405163eddf1b7960e01b81526001600160a01b0383811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063eddf1b7990602401602060405180830381865afa158015611fa7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fcb91906142ba565b90508160ff1681146118e6576040516312e81a0560e21b815260ff831660048201526001600160a01b0384811660248301527f00000000000000000000000000000000000000000000000000000000000000001690634ba06814906044015b5f604051808303815f87803b158015612041575f5ffd5b505af1158015612053573d5f5f3e3d5ffd5b50505050505050565b5f5f60205f8451602086015f885af18061207b576040513d5f823e3d81fd5b50505f513d9150811561209257806001141561209f565b6001600160a01b0384163b155b15611be357604051635274afe760e01b81526001600160a01b03851660048201526024016113c1565b5f608082106120ea576040516385e98beb60e01b815260040160405180910390fd5b509051600191821b82011c16151590565b6040805160018082528183019092525f91829182916020808301908036833701905050905083815f81518110612133576121336144b9565b60200260200101906001600160a01b031690816001600160a01b0316815250505f5f61215f8784612da7565b91509150815f81518110612175576121756144b9565b6020026020010151815f8151811061218f5761218f6144b9565b6020026020010151945094505050505b9250929050565b6121da6001600160a01b0388167f000000000000000000000000000000000000000000000000000000000000000087611e3e565b60405163617ba03760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063617ba0379061222c908a9089908d905f90600401614bff565b5f604051808303815f87803b158015612243575f5ffd5b505af1158015612255573d5f5f3e3d5ffd5b505050508215612269576122698888611a22565b60405163cff027d960e01b81526001600160a01b0387811660048301525f918291829182917f0000000000000000000000000000000000000000000000000000000000000000169063cff027d990602401602060405180830381865afa1580156122d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122f991906142dc565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa158015612340573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061236491906142ba565b6040516323b872dd60e01b81526001600160a01b038f81166004830152306024830152604482018c9052919250908316906323b872dd906064016020604051808303815f875af11580156123ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123de9190614c2c565b506040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015612423573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061244791906142ba565b6124519190614493565b98508615612461578192506124fd565b604051631a4ca37b60e21b81526001600160a01b038c81166004830152602482018b90523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec906064016020604051808303815f875af11580156124d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124f791906142ba565b98508a92505b61250a838d8b8d8a6131ff565b955093505050868210156125c2575f6125238389614493565b9050896001600160a01b0316826001600160a01b03160361254e576125498a828e613458565b6125c0565b60405163a9059cbb60e01b81526001600160a01b038d811660048301526024820183905283169063a9059cbb906044016020604051808303815f875af115801561259a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125be9190614c2c565b505b505b878311156125e4575f6125d58985614493565b90506125e28b828e613458565b505b5050505050505050505050565b6126256001600160a01b0387167f000000000000000000000000000000000000000000000000000000000000000086611e3e565b60405163573ade8160e01b81526001600160a01b038781166004830152602482018690526002604483015289811660648301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063573ade81906084016020604051808303815f875af11580156126a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126c891906142ba565b90506126d48187614493565b9150505f835f1461290e5760405163cff027d960e01b81526001600160a01b0386811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063cff027d990602401602060405180830381865afa158015612747573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276b91906142dc565b6040516370a0823160e01b81526001600160a01b038d81166004830152919250908216906370a0823190602401602060405180830381865afa1580156127b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127d791906142ba565b915061280d6001600160a01b0387167f000000000000000000000000000000000000000000000000000000000000000087611e3e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663617ba03787878e5f6040518563ffffffff1660e01b815260040161285f9493929190614bff565b5f604051808303815f87803b158015612876575f5ffd5b505af1158015612888573d5f5f3e3d5ffd5b50506040516370a0823160e01b81526001600160a01b038e81166004830152859350841691506370a0823190602401602060405180830381865afa1580156128d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128f691906142ba565b6129009190614493565b915061290c8b87611a22565b505b60405163a415bcad60e01b81526001600160a01b038a8116600483015260248201899052600260448301525f60648301528b811660848301527f0000000000000000000000000000000000000000000000000000000000000000169063a415bcad9060a4015f604051808303815f87803b15801561298a575f5ffd5b505af115801561299c573d5f5f3e3d5ffd5b505050505f845f14612c835760405163cff027d960e01b81526001600160a01b0387811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063cff027d990602401602060405180830381865afa158015612a10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a3491906142dc565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa158015612a7b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a9f91906142ba565b6040516323b872dd60e01b81526001600160a01b038f8116600483015230602483015260448201879052919250908316906323b872dd906064016020604051808303815f875af1158015612af5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b199190614c2c565b506040516370a0823160e01b81523060048201525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116916369328dec918c9186918816906370a0823190602401602060405180830381865afa158015612b8c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bb091906142ba565b612bba9190614493565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201523060448201526064016020604051808303815f875af1158015612c08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c2c91906142ba565b905087811015612c7f578b6001600160a01b0316896001600160a01b031614612c7257604051630f5521b760e01b815260048101829052602481018990526044016113c1565b612c7c8189614493565b93505b5050505b5f80612ca68c8c8c86612c968a8f614493565b612ca091906144a6565b8a6131ff565b909250905082612cb686836144a6565b612cc09190614493565b905089821015612cde57612cde8c612cd8848d614493565b8f6134fb565b88811115612cf457612cf48b612cd88b84614493565b50505050505050505050505050565b5f5f5f5f60205f8651602088015f8a5af192503d91505f5190508280156109cf57508115612d3457806001146109cf565b50505050506001600160a01b03163b151590565b606082612d5d57612d5882613881565b612da0565b8151158015612d7457506001600160a01b0384163b155b15612d9d57604051639996b31560e01b81526001600160a01b03851660048201526024016113c1565b50805b9392505050565b805160609081905f816001600160401b03811115612dc757612dc7613ad6565b604051908082528060200260200182016040528015612df0578160200160208202803683370190505b5090505f826001600160401b03811115612e0c57612e0c613ad6565b604051908082528060200260200182016040528015612e35578160200160208202803683370190505b5060405163eddf1b7960e01b81526001600160a01b0389811660048301529192505f917f0000000000000000000000000000000000000000000000000000000000000000169063eddf1b7990602401602060405180830381865afa158015612e9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec391906142ba565b6040805160a0810182525f80825260208201819052918101829052606080820183905260808201529192509060ff8316156130125760405163583b8edd60e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0771dba90602401602060405180830381865afa158015612f5d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f819190614c47565b604051636c6f6ae160e01b815260ff851660048201529092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636c6f6ae1906024015f60405180830381865afa158015612fe8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261300f9190810190614c60565b90505b5f5b868110156131ee575f8a828151811061302f5761302f6144b9565b60209081029190910101516040516335ea6a7560e01b81526001600160a01b0380831660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa1580156130a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c89190614890565b90505f5f6130fe835f01515161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b50505091509150805f0361311557505050506131e6565b5f60ff8916158015906131355750613135888560e0015161ffff166138aa565b9050821561318e57801561316e57865f015161ffff168b878151811061315d5761315d6144b9565b60200260200101818152505061318e565b828b8781518110613181576131816144b9565b6020026020010181815250505b80156131c057866020015161ffff168a87815181106131af576131af6144b9565b6020026020010181815250506131e0565b818a87815181106131d3576131d36144b9565b6020026020010181815250505b50505050505b600101613014565b509399929850919650505050505050565b6040516370a0823160e01b81523060048201525f90819081906001600160a01b038816906370a0823190602401602060405180830381865afa158015613247573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061326b91906142ba565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038a16906370a0823190602401602060405180830381865afa1580156132b2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132d691906142ba565b90506132e589898989896138e3565b6040516370a0823160e01b815230600482015282906001600160a01b038a16906370a0823190602401602060405180830381865afa158015613329573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061334d91906142ba565b6133579190614493565b9250858310156133845760405163126c3c7360e21b815260048101849052602481018790526044016113c1565b6040516370a0823160e01b81523060048201526001600160a01b038a16906370a0823190602401602060405180830381865afa1580156133c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133ea91906142ba565b6133f49082614493565b9350876001600160a01b0316896001600160a01b03167fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8686604051613444929190918252602082015260400190565b60405180910390a350509550959350505050565b60028211156134e7576134956001600160a01b0384167f000000000000000000000000000000000000000000000000000000000000000084611e3e565b60405163617ba03760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063617ba0379061202a908690869086905f90600401614bff565b6118e66001600160a01b0384168284611887565b6002821115613811576040516301b2848560e51b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063365090a090602401602060405180830381865afa15801561356c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061359091906142dc565b604051630ed1279f60e11b81526001600160a01b0384811660048301529192505f91831690631da24f3e90602401602060405180830381865afa1580156135d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135fd91906142ba565b9050805f036136765760405163a9059cbb60e01b81526001600160a01b0384811660048301526024820186905286169063a9059cbb906044016020604051808303815f875af1158015613652573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114839190614c2c565b6136aa6001600160a01b0386167f000000000000000000000000000000000000000000000000000000000000000086611e3e565b60405163573ade8160e01b81526001600160a01b038681166004830152602482018690526002604483015284811660648301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063573ade81906084016020604051808303815f875af1158015613729573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061374d91906142ba565b9050848110156114835761378b6001600160a01b0387167f00000000000000000000000000000000000000000000000000000000000000005f611e3e565b6001600160a01b03861663a9059cbb856137a58489614493565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156137ed573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120539190614c2c565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303815f875af115801561385d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be39190614c2c565b8051156138915780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f608082106138cc576040516385e98beb60e01b815260040160405180910390fd5b506001600160801b0391909116901c600116151590565b5f818060200190518101906138f89190614d26565b602081015160405163fb04e17b60e01b81526001600160a01b0391821660048201529192507f0000000000000000000000000000000000000000000000000000000000000000169063fb04e17b90602401602060405180830381865afa158015613964573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139889190614c2c565b6139b6576020810151604051630411b82d60e01b81526001600160a01b0390911660048201526024016113c1565b60208101516139d0906001600160a01b0388169086611e3e565b805180516139e090602090614493565b60641115815190613a075760405163080e19e960e41b81526004016113c191815260200190565b508460206064018201525f82602001516001600160a01b031682604051613a2e9190614bf4565b5f604051808303815f865af19150503d805f8114613a67576040519150601f19603f3d011682016040523d82523d5f602084013e613a6c565b606091505b5050905080613a7d573d5f5f3e3d5ffd5b6020830151611bde906001600160a01b038a16905f611e3e565b6001600160a01b03811681146103af575f5ffd5b8035613ab681613a97565b919050565b5f60208284031215613acb575f5ffd5b8135612da081613a97565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b0381118282101715613b0c57613b0c613ad6565b60405290565b60405161010081016001600160401b0381118282101715613b0c57613b0c613ad6565b6040516101e081016001600160401b0381118282101715613b0c57613b0c613ad6565b604080519081016001600160401b0381118282101715613b0c57613b0c613ad6565b60405160c081016001600160401b0381118282101715613b0c57613b0c613ad6565b604051601f8201601f191681016001600160401b0381118282101715613bc457613bc4613ad6565b604052919050565b60ff811681146103af575f5ffd5b5f5f82840360c0811215613bec575f5ffd5b8335613bf781613a97565b925060a0601f1982011215613c0a575f5ffd5b50613c13613aea565b60208481013582526040850135908201526060840135613c3281613bcc565b6040820152608084810135606083015260a090940135938101939093525092909150565b5f5f5f5f5f5f60c08789031215613c6b575f5ffd5b8635613c7681613a97565b95506020870135613c8681613a97565b9450604087013593506060870135613c9d81613a97565b92506080870135915060a0870135613cb481613a97565b809150509295509295509295565b5f5f83601f840112613cd2575f5ffd5b5081356001600160401b03811115613ce8575f5ffd5b6020830191508360208260051b850101111561219f575f5ffd5b5f5f83601f840112613d12575f5ffd5b5081356001600160401b03811115613d28575f5ffd5b60208301915083602082850101111561219f575f5ffd5b5f5f5f5f5f5f5f5f5f60a08a8c031215613d57575f5ffd5b89356001600160401b03811115613d6c575f5ffd5b613d788c828d01613cc2565b909a5098505060208a01356001600160401b03811115613d96575f5ffd5b613da28c828d01613cc2565b90985096505060408a01356001600160401b03811115613dc0575f5ffd5b613dcc8c828d01613cc2565b90965094505060608a0135613de081613a97565b925060808a01356001600160401b03811115613dfa575f5ffd5b613e068c828d01613d02565b915080935050809150509295985092959850929598565b5f6001600160401b03821115613e3557613e35613ad6565b50601f01601f191660200190565b5f82601f830112613e52575f5ffd5b8135613e65613e6082613e1d565b613b9c565b818152846020838601011115613e79575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215613ea5575f5ffd5b81356001600160401b03811115613eba575f5ffd5b82016101008185031215613ecc575f5ffd5b613ed4613b12565b613edd82613aab565b8152613eeb60208301613aab565b602082015260408281013590820152613f0660608301613aab565b606082015260808281013590820152613f2160a08301613aab565b60a082015260c0828101359082015260e08201356001600160401b03811115613f48575f5ffd5b613f5486828501613e43565b60e083015250949350505050565b5f5f60208385031215613f73575f5ffd5b82356001600160401b03811115613f88575f5ffd5b613f9485828601613cc2565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561402557603f19878603018452614010858351613fa0565b94506020938401939190910190600101613ff4565b50929695505050505050565b5f60208284031215614041575f5ffd5b8135612da081613bcc565b5f6001600160401b0382111561406457614064613ad6565b5060051b60200190565b5f82601f83011261407d575f5ffd5b813561408b613e608261404c565b8082825260208201915060208360051b8601019250858311156140ac575f5ffd5b602085015b838110156140c95780358352602092830192016140b1565b5095945050505050565b5f5f5f5f608085870312156140e6575f5ffd5b84356001600160401b038111156140fb575f5ffd5b8501601f8101871361410b575f5ffd5b8035614119613e608261404c565b8082825260208201915060208360051b85010192508983111561413a575f5ffd5b6020840193505b8284101561416557833561415481613a97565b825260209384019390910190614141565b965050505060208501356001600160401b03811115614182575f5ffd5b61418e8782880161406e565b93505060408501356001600160401b038111156141a9575f5ffd5b6141b58782880161406e565b92505060608501356001600160401b038111156141d0575f5ffd5b6141dc87828801613e43565b91505092959194509250565b80151581146103af575f5ffd5b8035613ab6816141e8565b5f60208284031215614210575f5ffd5b81356001600160401b03811115614225575f5ffd5b82016101008185031215614237575f5ffd5b61423f613b12565b61424882613aab565b8152614256602083016141f5565b602082015261426760408301613aab565b60408201526060828101359082015261428260808301613aab565b608082015260a0828101359082015261429d60c083016141f5565b60c082015260e08201356001600160401b03811115613f48575f5ffd5b5f602082840312156142ca575f5ffd5b5051919050565b8051613ab681613a97565b5f602082840312156142ec575f5ffd5b8151612da081613a97565b5f5f5f5f5f5f60c0878903121561430c575f5ffd5b50508451602086015160408701516060880151608089015160a090990151939a929950909790965094509092509050565b5f6020828403121561434d575f5ffd5b8151612da081613bcc565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156143a75780850481111561438b5761438b614358565b600184161561439957908102905b60019390931c928002614370565b935093915050565b5f826143bd57506001611325565b816143c957505f611325565b81600181146143df57600281146143e957614405565b6001915050611325565b60ff8411156143fa576143fa614358565b50506001821b611325565b5060208310610133831016604e8410600b8410161715614428575081810a611325565b6144345f19848461436c565b805f190482111561444757614447614358565b029392505050565b5f612da060ff8416836143af565b808202811582820484141761132557611325614358565b5f8261448e57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561132557611325614358565b8082018082111561132557611325614358565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6020815260018060a01b03825116602082015260018060a01b0360208301511660408201526040820151606082015260018060a01b036060830151166080820152608082015160a08201525f60a083015160c08084015261454560e0840182613fa0565b949350505050565b602081525f82516002811061457057634e487b7160e01b5f52602160045260245ffd5b8060208401525060208301516040808401526145456060840182613fa0565b5f8151808452602084019350602083015f5b828110156145c85781516001600160a01b03168652602095860195909101906001016145a1565b5093949350505050565b5f8151808452602084019350602083015f5b828110156145c85781518652602095860195909101906001016145e4565b6001600160a01b03851681526080602082018190525f906146259083018661458f565b828103604084015261463781866145d2565b9050828103606084015261464b8185613fa0565b979650505050505050565b6001600160a01b038816815260e0602082018190525f906146799083018961458f565b828103604084015261468b81896145d2565b9050828103606084015261469f81886145d2565b6001600160a01b038716608085015283810360a085015290506146c28186613fa0565b91505061ffff831660c083015298975050505050505050565b5f5f8335601e198436030181126146f0575f5ffd5b8301803591506001600160401b03821115614709575f5ffd5b60200191503681900382131561219f575f5ffd5b5f81518060208401855e5f93019283525090919050565b828482375f8382015f81526109cf818561471d565b602081525f612da06020830184613fa0565b6020815260018060a01b03825116602082015260018060a01b036020830151166040820152604082015160608201526060820151151560808201526080820151151560a08201525f60a083015160c08084015261454560e0840182613fa0565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b5f6020828403121561480c575f5ffd5b604051602081016001600160401b038111828210171561482e5761482e613ad6565b6040529151825250919050565b5f6020828403121561484b575f5ffd5b612da083836147fc565b80516001600160801b0381168114613ab6575f5ffd5b805164ffffffffff81168114613ab6575f5ffd5b805161ffff81168114613ab6575f5ffd5b5f6101e08284031280156148a2575f5ffd5b506148ab613b35565b6148b584846147fc565b81526148c360208401614855565b60208201526148d460408401614855565b60408201526148e560608401614855565b60608201526148f660808401614855565b608082015261490760a08401614855565b60a082015261491860c0840161486b565b60c082015261492960e0840161487f565b60e082015261493b61010084016142d1565b61010082015261494e61012084016142d1565b61012082015261496161014084016142d1565b61014082015261497461016084016142d1565b6101608201526149876101808401614855565b61018082015261499a6101a08401614855565b6101a08201526149ad6101c08401614855565b6101c08201529392505050565b5f6149c7613e6084613e1d565b90508281528383830111156149da575f5ffd5b8282602083015e5f602084830101529392505050565b5f82601f8301126149ff575f5ffd5b612da0838351602085016149ba565b5f60208284031215614a1e575f5ffd5b81516001600160401b03811115614a33575f5ffd5b820160408185031215614a44575f5ffd5b614a4c613b58565b815160028110614a5a575f5ffd5b815260208201516001600160401b03811115614a74575f5ffd5b614a80868285016149f0565b602083015250949350505050565b8051613ab6816141e8565b5f60208284031215614aa9575f5ffd5b81516001600160401b03811115614abe575f5ffd5b820160c08185031215614acf575f5ffd5b614ad7613b7a565b8151614ae281613a97565b81526020820151614af281613a97565b6020820152604082810151908201526060820151614b0f816141e8565b6060820152614b2060808301614a8e565b608082015260a08201516001600160401b03811115614b3d575f5ffd5b614b49868285016149f0565b60a083015250949350505050565b5f60208284031215614b67575f5ffd5b81516001600160401b03811115614b7c575f5ffd5b820160c08185031215614b8d575f5ffd5b614b95613b7a565b8151614ba081613a97565b81526020820151614bb081613a97565b6020820152604082810151908201526060820151614bcd81613a97565b60608201526080828101519082015260a08201516001600160401b03811115614b3d575f5ffd5b5f612da0828461471d565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b5f60208284031215614c3c575f5ffd5b8151612da0816141e8565b5f60208284031215614c57575f5ffd5b612da082614855565b5f60208284031215614c70575f5ffd5b81516001600160401b03811115614c85575f5ffd5b820160a08185031215614c96575f5ffd5b614c9e613aea565b614ca78261487f565b8152614cb56020830161487f565b6020820152614cc66040830161487f565b60408201526060820151614cd981613a97565b606082015260808201516001600160401b03811115614cf6575f5ffd5b80830192505084601f830112614d0a575f5ffd5b614d19858351602085016149ba565b6080820152949350505050565b5f60208284031215614d36575f5ffd5b81516001600160401b03811115614d4b575f5ffd5b820160408185031215614d5c575f5ffd5b614d64613b58565b81516001600160401b03811115614d79575f5ffd5b614d85868285016149f0565b82525060208201519150614d9882613a97565b6020810191909152939250505056fea164736f6c634300081b000a000000000000000000000000e20fcbdbffc4dd138ce8b2e6fbb6cb49777ad64d0000000000000000000000007e31b336f9e8ba52ba3c4ac861b033ba90900bb3000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c8000000000000000000000000de95ef02810c4da6411dba60252f46f35083eb31