UNPKG

@ensuro/vaults

Version:

ERC4626s for asset management, used by the Ensuro Protocol

399 lines (398 loc) 40.7 kB
{ "_format": "hh-sol-artifact-1", "contractName": "SwapStableAaveV3InvestStrategy", "sourceName": "contracts/strategies/SwapStableAaveV3InvestStrategy.sol", "abi": [ { "inputs": [ { "internalType": "contract IERC20Metadata", "name": "asset_", "type": "address" }, { "internalType": "contract IERC20Metadata", "name": "investAsset_", "type": "address" }, { "internalType": "uint256", "name": "price_", "type": "uint256" }, { "internalType": "contract IPool", "name": "aave_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "CanBeCalledOnlyThroughDelegateCall", "type": "error" }, { "inputs": [], "name": "CannotDisconnectWithAssets", "type": "error" }, { "inputs": [], "name": "InvalidAsset", "type": "error" }, { "inputs": [], "name": "NoExtraDataAllowed", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "ResupplyFailed", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "enum SwapLibrary.SwapProtocol", "name": "protocol", "type": "uint8" }, { "internalType": "uint256", "name": "maxSlippage", "type": "uint256" }, { "internalType": "bytes", "name": "customParams", "type": "bytes" } ], "indexed": false, "internalType": "struct SwapLibrary.SwapConfig", "name": "oldConfig", "type": "tuple" }, { "components": [ { "internalType": "enum SwapLibrary.SwapProtocol", "name": "protocol", "type": "uint8" }, { "internalType": "uint256", "name": "maxSlippage", "type": "uint256" }, { "internalType": "bytes", "name": "customParams", "type": "bytes" } ], "indexed": false, "internalType": "struct SwapLibrary.SwapConfig", "name": "newConfig", "type": "tuple" } ], "name": "SwapConfigChanged", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "asset", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "initData", "type": "bytes" } ], "name": "connect", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "force", "type": "bool" } ], "name": "disconnect", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "method", "type": "uint8" }, { "internalType": "bytes", "name": "params", "type": "bytes" } ], "name": "forwardEntryPoint", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contract_", "type": "address" } ], "name": "getSwapConfig", "outputs": [ { "components": [ { "internalType": "enum SwapLibrary.SwapProtocol", "name": "protocol", "type": "uint8" }, { "internalType": "uint256", "name": "maxSlippage", "type": "uint256" }, { "internalType": "bytes", "name": "customParams", "type": "bytes" } ], "internalType": "struct SwapLibrary.SwapConfig", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "investAsset", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "investAssetPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contract_", "type": "address" } ], "name": "maxWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "storageSlot", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contract_", "type": "address" } ], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x3060808181526040610160818152601e6101a0527f636f2e656e7375726f2e496e766573745374726174656779436c69656e7400006101c052610180939093526101408290526101e09052902060a05234801561005a575f5ffd5b50604051612158380380612158833981016040819052610079916101fc565b83838382826012826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100bc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e0919061024e565b60ff16111561010257604051636448d6e960e11b815260040160405180910390fd5b6012816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610140573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610164919061024e565b60ff16111561018657604051636448d6e960e11b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316036101b857604051636448d6e960e11b815260040160405180910390fd5b6001600160a01b0391821660c052811660e052610100919091529290921661012052506102759350505050565b6001600160a01b03811681146101f9575f5ffd5b50565b5f5f5f5f6080858703121561020f575f5ffd5b845161021a816101e5565b602086015190945061022b816101e5565b604086015160608701519194509250610243816101e5565b939692955090935050565b5f6020828403121561025e575f5ffd5b815160ff8116811461026e575f5ffd5b9392505050565b60805160a05160c05160e0516101005161012051611dbd61039b5f395f81816103ad01528181610ceb01528181610ddd01528181610ebc0152610fd501525f818160fa01528181611111015281816111dd015261131a01525f818161023f015281816103780152818161043a0152818161070301528181610aa801528181610b5001528181610c7601528181610d1a01528181610da201528181610e8101528181610fad015281816110ed01526111ad01525f81816101bb01528181610b7201528181610c98015281816110cb015261117e01525f81816101880152818161086a015281816109f2015261125101525f81816102800152818161031c0152818161053801528181610625015281816106a201528181610a2b015261104e0152611dbd5ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80635b9a4c3511610088578063b6b55f2511610063578063b6b55f2514610208578063ce96cb771461021b578063de846ae41461022e578063f3e0ffbf14610261575f5ffd5b80635b9a4c35146101835780639c4667a2146101aa5780639cd47128146101f5575f5ffd5b80630981b1c2146100cf5780631418983b146100f85780632e1a7d4d14610128578063402d267d1461013d57806342b054f0146101505780635a11745614610170575b5f5ffd5b6100e26100dd3660046115ab565b610274565b6040516100ef9190611626565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040519081526020016100ef565b61013b610136366004611638565b610312565b005b61011a61014b366004611663565b6104b5565b61016361015e366004611663565b61050a565b6040516100ef91906116e0565b61013b61017e3660046116ff565b61052e565b61011a7f000000000000000000000000000000000000000000000000000000000000000081565b6101dd6101b8366004611663565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ef565b61013b61020336600461171a565b61061b565b61013b610216366004611638565b610698565b61011a610229366004611663565b61077a565b6101dd61023c366004611663565b507f000000000000000000000000000000000000000000000000000000000000000090565b61011a61026f366004611663565b6107c0565b60606001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102bf57604051632abf118b60e21b815260040160405180910390fd5b5f60ff841680156102d2576102d261167e565b90505f8180156102e4576102e461167e565b036100cb576102fb6102f530610840565b846108fb565b505060408051602081019091525f81525b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361035b57604051632abf118b60e21b815260040160405180910390fd5b80156104b257604051631a4ca37b60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec906064016020604051808303815f875af11580156103f3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610417919061174c565b5061042181610a21565b6040516370a0823160e01b81523060048201526104b2907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610487573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ab919061174c565b6001610cc9565b50565b5f5f6104bf610f17565b805151909150600160381b1615806104de57508051516001603c1b1615155b806104f457508051516702000000000000001615155b1561050157505f92915050565b505f1992915050565b60408051606080820183525f80835260208301529181019190915261030c82610840565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361057757604051632abf118b60e21b815260040160405180910390fd5b5f610580610f17565b61010001519050811580156105f957506040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa1580156105d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f6919061174c565b15155b15610617576040516342a176d160e11b815260040160405180910390fd5b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361066457604051632abf118b60e21b815260040160405180910390fd5b60408051606081019091526104b290805f81526020015f815260200160405180602001604052805f815250815250826108fb565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106e157604051632abf118b60e21b815260040160405180910390fd5b6106ea81611044565b6040516370a0823160e01b81523060048201526104b2907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610750573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610774919061174c565b5f610cc9565b5f5f610784610f17565b805151909150600160381b1615806107a357508051516001603c1b1615155b156107b057505f92915050565b6107b9836107c0565b9392505050565b5f61030c6107cc610f17565b61010001516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa158015610816573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083a919061174c565b83611178565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa1580156108be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108e591908101906117b0565b9050808060200190518101906107b991906117e2565b5f8180602001905181019061091091906117e2565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c9061094a9084906004016116e0565b5f6040518083038186803b158015610960575f5ffd5b505af4158015610972573d5f5f3e3d5ffd5b5050505081518160405160200161098991906116e0565b60405160208183030381529060405251146109b7576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f883826040516109e892919061186e565b60405180910390a17f0000000000000000000000000000000000000000000000000000000000000000610a1b838261191e565b50505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a6a57604051632abf118b60e21b815260040160405180910390fd5b80156104b2575f610a79611234565b90505f610a8461130a565b6040516370a0823160e01b8152306004820152909150610b17906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610aed573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b11919061174c565b30611178565b8310610c45576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610bc1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be5919061174c565b866040518663ffffffff1660e01b8152600401610c069594939291906119d9565b602060405180830381865af4158015610c21573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1b919061174c565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d90610c069085907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090899088906004016119d9565b505050565b815f03610cd4575050565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610d60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d849190611a18565b508015610e6a5760405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b158015610e1e575f5ffd5b505af1925050508015610e2f575060015b610617576040518281527f323f803ab99bd4b7b37bba0e83169793239f293cc8b9d11837997563c5902eac9060200160405180910390a15050565b60405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b158015610efd575f5ffd5b505af1158015610f0f573d5f5f3e3d5ffd5b505050505050565b60408051610200810182525f6101e08201818152825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091526040516335ea6a7560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa15801561101b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103f9190611ac7565b905090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361108d57604051632abf118b60e21b815260040160405180910390fd5b80156104b25761109b611234565b604051637756691560e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9163775669159161113991907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009087907f0000000000000000000000000000000000000000000000000000000000000000906004016119d9565b602060405180830381865af4158015611154573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610617919061174c565b5f6111a27f000000000000000000000000000000000000000000000000000000000000000061133e565b61122a61120b6111d17f000000000000000000000000000000000000000000000000000000000000000061133e565b6111db9087611c05565b7f00000000000000000000000000000000000000000000000000000000000000005b670de0b6b3a76400006113b5565b61121485610840565b602001516111fd90670de0b6b3a7640000611c1c565b6107b99190611c43565b60408051606080820183525f8083526020830152918101919091527f0000000000000000000000000000000000000000000000000000000000000000805461127b9061189b565b80601f01602080910402602001604051908101604052809291908181526020018280546112a79061189b565b80156112f25780601f106112c9576101008083540402835291602001916112f2565b820191905f5260205f20905b8154815290600101906020018083116112d557829003601f168201915b505050505080602001905181019061103f91906117e2565b5f61103f670de0b6b3a7640000807f00000000000000000000000000000000000000000000000000000000000000006113b5565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561137b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139f9190611c62565b6113aa906012611c7d565b61030c90600a611d79565b5f5f5f6113c28686611465565b91509150815f036113e6578381816113dc576113dc611c2f565b04925050506107b9565b8184116113fd576113fd6003851502601118611481565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b60ff811681146104b2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114d7576114d76114a0565b60405290565b6040516101e0810167ffffffffffffffff811182821017156114d7576114d76114a0565b604051601f8201601f1916810167ffffffffffffffff8111828210171561152a5761152a6114a0565b604052919050565b5f67ffffffffffffffff82111561154b5761154b6114a0565b50601f01601f191660200190565b5f82601f830112611568575f5ffd5b813561157b61157682611532565b611501565b81815284602083860101111561158f575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156115bc575f5ffd5b82356115c781611492565b9150602083013567ffffffffffffffff8111156115e2575f5ffd5b6115ee85828601611559565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6107b960208301846115f8565b5f60208284031215611648575f5ffd5b5035919050565b6001600160a01b03811681146104b2575f5ffd5b5f60208284031215611673575f5ffd5b81356107b98161164f565b634e487b7160e01b5f52602160045260245ffd5b5f8151600381106116b157634e487b7160e01b5f52602160045260245ffd5b80845250602082015160208401526040820151606060408501526116d860608501826115f8565b949350505050565b602081525f6107b96020830184611692565b80151581146104b2575f5ffd5b5f6020828403121561170f575f5ffd5b81356107b9816116f2565b5f6020828403121561172a575f5ffd5b813567ffffffffffffffff811115611740575f5ffd5b6116d884828501611559565b5f6020828403121561175c575f5ffd5b5051919050565b5f82601f830112611772575f5ffd5b815161178061157682611532565b818152846020838601011115611794575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f602082840312156117c0575f5ffd5b815167ffffffffffffffff8111156117d6575f5ffd5b6116d884828501611763565b5f602082840312156117f2575f5ffd5b815167ffffffffffffffff811115611808575f5ffd5b820160608185031215611819575f5ffd5b6118216114b4565b81516003811061182f575f5ffd5b815260208281015190820152604082015167ffffffffffffffff811115611854575f5ffd5b61186086828501611763565b604083015250949350505050565b604081525f6118806040830185611692565b82810360208401526118928185611692565b95945050505050565b600181811c908216806118af57607f821691505b6020821081036118cd57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610cc457805f5260205f20601f840160051c810160208510156118f85750805b601f840160051c820191505b81811015611917575f8155600101611904565b5050505050565b815167ffffffffffffffff811115611938576119386114a0565b61194c81611946845461189b565b846118d3565b6020601f82116001811461197e575f83156119675750848201515b5f19600385901b1c1916600184901b178455611917565b5f84815260208120601f198516915b828110156119ad578785015182556020948501946001909201910161198d565b50848210156119ca57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f6119eb60a0830188611692565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f60208284031215611a28575f5ffd5b81516107b9816116f2565b5f60208284031215611a43575f5ffd5b6040516020810167ffffffffffffffff81118282101715611a6657611a666114a0565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114611a92575f5ffd5b919050565b805164ffffffffff81168114611a92575f5ffd5b805161ffff81168114611a92575f5ffd5b8051611a928161164f565b5f6101e0828403128015611ad9575f5ffd5b50611ae26114dd565b611aec8484611a33565b8152611afa60208401611a73565b6020820152611b0b60408401611a73565b6040820152611b1c60608401611a73565b6060820152611b2d60808401611a73565b6080820152611b3e60a08401611a73565b60a0820152611b4f60c08401611a97565b60c0820152611b6060e08401611aab565b60e0820152611b726101008401611abc565b610100820152611b856101208401611abc565b610120820152611b986101408401611abc565b610140820152611bab6101608401611abc565b610160820152611bbe6101808401611a73565b610180820152611bd16101a08401611a73565b6101a0820152611be46101c08401611a73565b6101c08201529392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761030c5761030c611bf1565b8181038181111561030c5761030c611bf1565b634e487b7160e01b5f52601260045260245ffd5b5f82611c5d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611c72575f5ffd5b81516107b981611492565b60ff828116828216039081111561030c5761030c611bf1565b6001815b6001841115611cd157808504811115611cb557611cb5611bf1565b6001841615611cc357908102905b60019390931c928002611c9a565b935093915050565b5f82611ce75750600161030c565b81611cf357505f61030c565b8160018114611d095760028114611d1357611d2f565b600191505061030c565b60ff841115611d2457611d24611bf1565b50506001821b61030c565b5060208310610133831016604e8410600b8410161715611d52575081810a61030c565b611d5e5f198484611c96565b805f1904821115611d7157611d71611bf1565b029392505050565b5f6107b960ff841683611cd956fea26469706673582212200486cae3c8362248f1f209d3ecb8c8f0b2bc0d1f37ef0231456377b0a69c227b64736f6c634300081e0033", "deployedBytecode": "0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80635b9a4c3511610088578063b6b55f2511610063578063b6b55f2514610208578063ce96cb771461021b578063de846ae41461022e578063f3e0ffbf14610261575f5ffd5b80635b9a4c35146101835780639c4667a2146101aa5780639cd47128146101f5575f5ffd5b80630981b1c2146100cf5780631418983b146100f85780632e1a7d4d14610128578063402d267d1461013d57806342b054f0146101505780635a11745614610170575b5f5ffd5b6100e26100dd3660046115ab565b610274565b6040516100ef9190611626565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040519081526020016100ef565b61013b610136366004611638565b610312565b005b61011a61014b366004611663565b6104b5565b61016361015e366004611663565b61050a565b6040516100ef91906116e0565b61013b61017e3660046116ff565b61052e565b61011a7f000000000000000000000000000000000000000000000000000000000000000081565b6101dd6101b8366004611663565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ef565b61013b61020336600461171a565b61061b565b61013b610216366004611638565b610698565b61011a610229366004611663565b61077a565b6101dd61023c366004611663565b507f000000000000000000000000000000000000000000000000000000000000000090565b61011a61026f366004611663565b6107c0565b60606001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102bf57604051632abf118b60e21b815260040160405180910390fd5b5f60ff841680156102d2576102d261167e565b90505f8180156102e4576102e461167e565b036100cb576102fb6102f530610840565b846108fb565b505060408051602081019091525f81525b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361035b57604051632abf118b60e21b815260040160405180910390fd5b80156104b257604051631a4ca37b60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec906064016020604051808303815f875af11580156103f3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610417919061174c565b5061042181610a21565b6040516370a0823160e01b81523060048201526104b2907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610487573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ab919061174c565b6001610cc9565b50565b5f5f6104bf610f17565b805151909150600160381b1615806104de57508051516001603c1b1615155b806104f457508051516702000000000000001615155b1561050157505f92915050565b505f1992915050565b60408051606080820183525f80835260208301529181019190915261030c82610840565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361057757604051632abf118b60e21b815260040160405180910390fd5b5f610580610f17565b61010001519050811580156105f957506040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa1580156105d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f6919061174c565b15155b15610617576040516342a176d160e11b815260040160405180910390fd5b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361066457604051632abf118b60e21b815260040160405180910390fd5b60408051606081019091526104b290805f81526020015f815260200160405180602001604052805f815250815250826108fb565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106e157604051632abf118b60e21b815260040160405180910390fd5b6106ea81611044565b6040516370a0823160e01b81523060048201526104b2907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610750573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610774919061174c565b5f610cc9565b5f5f610784610f17565b805151909150600160381b1615806107a357508051516001603c1b1615155b156107b057505f92915050565b6107b9836107c0565b9392505050565b5f61030c6107cc610f17565b61010001516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa158015610816573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083a919061174c565b83611178565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa1580156108be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108e591908101906117b0565b9050808060200190518101906107b991906117e2565b5f8180602001905181019061091091906117e2565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c9061094a9084906004016116e0565b5f6040518083038186803b158015610960575f5ffd5b505af4158015610972573d5f5f3e3d5ffd5b5050505081518160405160200161098991906116e0565b60405160208183030381529060405251146109b7576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f883826040516109e892919061186e565b60405180910390a17f0000000000000000000000000000000000000000000000000000000000000000610a1b838261191e565b50505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a6a57604051632abf118b60e21b815260040160405180910390fd5b80156104b2575f610a79611234565b90505f610a8461130a565b6040516370a0823160e01b8152306004820152909150610b17906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610aed573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b11919061174c565b30611178565b8310610c45576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610bc1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be5919061174c565b866040518663ffffffff1660e01b8152600401610c069594939291906119d9565b602060405180830381865af4158015610c21573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1b919061174c565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d90610c069085907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090899088906004016119d9565b505050565b815f03610cd4575050565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610d60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d849190611a18565b508015610e6a5760405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b158015610e1e575f5ffd5b505af1925050508015610e2f575060015b610617576040518281527f323f803ab99bd4b7b37bba0e83169793239f293cc8b9d11837997563c5902eac9060200160405180910390a15050565b60405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b158015610efd575f5ffd5b505af1158015610f0f573d5f5f3e3d5ffd5b505050505050565b60408051610200810182525f6101e08201818152825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091526040516335ea6a7560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa15801561101b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103f9190611ac7565b905090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361108d57604051632abf118b60e21b815260040160405180910390fd5b80156104b25761109b611234565b604051637756691560e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9163775669159161113991907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009087907f0000000000000000000000000000000000000000000000000000000000000000906004016119d9565b602060405180830381865af4158015611154573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610617919061174c565b5f6111a27f000000000000000000000000000000000000000000000000000000000000000061133e565b61122a61120b6111d17f000000000000000000000000000000000000000000000000000000000000000061133e565b6111db9087611c05565b7f00000000000000000000000000000000000000000000000000000000000000005b670de0b6b3a76400006113b5565b61121485610840565b602001516111fd90670de0b6b3a7640000611c1c565b6107b99190611c43565b60408051606080820183525f8083526020830152918101919091527f0000000000000000000000000000000000000000000000000000000000000000805461127b9061189b565b80601f01602080910402602001604051908101604052809291908181526020018280546112a79061189b565b80156112f25780601f106112c9576101008083540402835291602001916112f2565b820191905f5260205f20905b8154815290600101906020018083116112d557829003601f168201915b505050505080602001905181019061103f91906117e2565b5f61103f670de0b6b3a7640000807f00000000000000000000000000000000000000000000000000000000000000006113b5565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561137b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139f9190611c62565b6113aa906012611c7d565b61030c90600a611d79565b5f5f5f6113c28686611465565b91509150815f036113e6578381816113dc576113dc611c2f565b04925050506107b9565b8184116113fd576113fd6003851502601118611481565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b60ff811681146104b2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114d7576114d76114a0565b60405290565b6040516101e0810167ffffffffffffffff811182821017156114d7576114d76114a0565b604051601f8201601f1916810167ffffffffffffffff8111828210171561152a5761152a6114a0565b604052919050565b5f67ffffffffffffffff82111561154b5761154b6114a0565b50601f01601f191660200190565b5f82601f830112611568575f5ffd5b813561157b61157682611532565b611501565b81815284602083860101111561158f575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156115bc575f5ffd5b82356115c781611492565b9150602083013567ffffffffffffffff8111156115e2575f5ffd5b6115ee85828601611559565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6107b960208301846115f8565b5f60208284031215611648575f5ffd5b5035919050565b6001600160a01b03811681146104b2575f5ffd5b5f60208284031215611673575f5ffd5b81356107b98161164f565b634e487b7160e01b5f52602160045260245ffd5b5f8151600381106116b157634e487b7160e01b5f52602160045260245ffd5b80845250602082015160208401526040820151606060408501526116d860608501826115f8565b949350505050565b602081525f6107b96020830184611692565b80151581146104b2575f5ffd5b5f6020828403121561170f575f5ffd5b81356107b9816116f2565b5f6020828403121561172a575f5ffd5b813567ffffffffffffffff811115611740575f5ffd5b6116d884828501611559565b5f6020828403121561175c575f5ffd5b5051919050565b5f82601f830112611772575f5ffd5b815161178061157682611532565b818152846020838601011115611794575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f602082840312156117c0575f5ffd5b815167ffffffffffffffff8111156117d6575f5ffd5b6116d884828501611763565b5f602082840312156117f2575f5ffd5b815167ffffffffffffffff811115611808575f5ffd5b820160608185031215611819575f5ffd5b6118216114b4565b81516003811061182f575f5ffd5b815260208281015190820152604082015167ffffffffffffffff811115611854575f5ffd5b61186086828501611763565b604083015250949350505050565b604081525f6118806040830185611692565b82810360208401526118928185611692565b95945050505050565b600181811c908216806118af57607f821691505b6020821081036118cd57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610cc457805f5260205f20601f840160051c810160208510156118f85750805b601f840160051c820191505b81811015611917575f8155600101611904565b5050505050565b815167ffffffffffffffff811115611938576119386114a0565b61194c81611946845461189b565b846118d3565b6020601f82116001811461197e575f83156119675750848201515b5f19600385901b1c1916600184901b178455611917565b5f84815260208120601f198516915b828110156119ad578785015182556020948501946001909201910161198d565b50848210156119ca57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f6119eb60a0830188611692565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f60208284031215611a28575f5ffd5b81516107b9816116f2565b5f60208284031215611a43575f5ffd5b6040516020810167ffffffffffffffff81118282101715611a6657611a666114a0565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114611a92575f5ffd5b919050565b805164ffffffffff81168114611a92575f5ffd5b805161ffff81168114611a92575f5ffd5b8051611a928161164f565b5f6101e0828403128015611ad9575f5ffd5b50611ae26114dd565b611aec8484611a33565b8152611afa60208401611a73565b6020820152611b0b60408401611a73565b6040820152611b1c60608401611a73565b6060820152611b2d60808401611a73565b6080820152611b3e60a08401611a73565b60a0820152611b4f60c08401611a97565b60c0820152611b6060e08401611aab565b60e0820152611b726101008401611abc565b610100820152611b856101208401611abc565b610120820152611b986101408401611abc565b610140820152611bab6101608401611abc565b610160820152611bbe6101808401611a73565b610180820152611bd16101a08401611a73565b6101a0820152611be46101c08401611a73565b6101c08201529392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761030c5761030c611bf1565b8181038181111561030c5761030c611bf1565b634e487b7160e01b5f52601260045260245ffd5b5f82611c5d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611c72575f5ffd5b81516107b981611492565b60ff828116828216039081111561030c5761030c611bf1565b6001815b6001841115611cd157808504811115611cb557611cb5611bf1565b6001841615611cc357908102905b60019390931c928002611c9a565b935093915050565b5f82611ce75750600161030c565b81611cf357505f61030c565b8160018114611d095760028114611d1357611d2f565b600191505061030c565b60ff841115611d2457611d24611bf1565b50506001821b61030c565b5060208310610133831016604e8410600b8410161715611d52575081810a61030c565b611d5e5f198484611c96565b805f1904821115611d7157611d71611bf1565b029392505050565b5f6107b960ff841683611cd956fea26469706673582212200486cae3c8362248f1f209d3ecb8c8f0b2bc0d1f37ef0231456377b0a69c227b64736f6c634300081e0033", "linkReferences": { "@ensuro/swaplibrary/contracts/SwapLibrary.sol": { "SwapLibrary": [ { "length": 20, "start": 3261 }, { "length": 20, "start": 3789 }, { "length": 20, "start": 4079 }, { "length": 20, "start": 5189 } ] } }, "deployedLinkReferences": { "@ensuro/swaplibrary/contracts/SwapLibrary.sol": { "SwapLibrary": [ { "length": 20, "start": 2338 }, { "length": 20, "start": 2866 }, { "length": 20, "start": 3156 }, { "length": 20, "start": 4266 } ] } } }