UNPKG

@ensuro/vaults

Version:

ERC4626s for asset management, used by the Ensuro Protocol

381 lines (380 loc) 31.2 kB
{ "_format": "hh-sol-artifact-1", "contractName": "SwapStableInvestStrategy", "sourceName": "contracts/strategies/SwapStableInvestStrategy.sol", "abi": [ { "inputs": [ { "internalType": "contract IERC20Metadata", "name": "asset_", "type": "address" }, { "internalType": "contract IERC20Metadata", "name": "investAsset_", "type": "address" }, { "internalType": "uint256", "name": "price_", "type": "uint256" } ], "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": [ { "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": "0x3060808181526040610140818152601e610180527f636f2e656e7375726f2e496e766573745374726174656779436c69656e7400006101a052610160939093526101208290526101c09052902060a05234801561005a575f5ffd5b50604051611825380380611825833981016040819052610079916101ee565b82826012826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100dd9190610227565b60ff1611156100ff57604051636448d6e960e11b815260040160405180910390fd5b6012816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561013d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101619190610227565b60ff16111561018357604051636448d6e960e11b815260040160405180910390fd5b806001600160a01b0316826001600160a01b0316036101b557604051636448d6e960e11b815260040160405180910390fd5b6001600160a01b0391821660c0521660e052610100525061024e9050565b80516001600160a01b03811681146101e9575f5ffd5b919050565b5f5f5f60608486031215610200575f5ffd5b610209846101d3565b9250610217602085016101d3565b9150604084015190509250925092565b5f60208284031215610237575f5ffd5b815160ff81168114610247575f5ffd5b9392505050565b60805160a05160c05160e0516101005161150f6103165f395f818160fa015281816107ed01528181610bbf0152610c4801525f81816102400152818161039a015281816104420152818161056e015281816107c9015281816108830152610c1801525f81816101bc0152818161046401528181610590015281816107a70152610be901525f81816101890152818161091c01528181610aab0152610af101525f81816102810152818161031d01528181610631015281816106ad015261072a015261150f5ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80635b9a4c3511610088578063b6b55f2511610063578063b6b55f2514610209578063ce96cb771461021c578063de846ae41461022f578063f3e0ffbf14610262575f5ffd5b80635b9a4c35146101845780639c4667a2146101ab5780639cd47128146101f6575f5ffd5b80630981b1c2146100cf5780631418983b146100f85780632e1a7d4d14610128578063402d267d1461013d57806342b054f0146101515780635a11745614610171575b5f5ffd5b6100e26100dd366004610ee8565b610275565b6040516100ef9190610f63565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040519081526020016100ef565b61013b610136366004610f75565b610313565b005b61011a61014b366004610f8c565b505f1990565b61016461015f366004610f8c565b610603565b6040516100ef9190611014565b61013b61017f366004611026565b610627565b61011a7f000000000000000000000000000000000000000000000000000000000000000081565b6101de6101b9366004610f8c565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ef565b61013b610204366004611045565b6106a3565b61013b610217366004610f75565b610720565b61011a61022a366004610f8c565b610858565b6101de61023d366004610f8c565b507f000000000000000000000000000000000000000000000000000000000000000090565b61011a610270366004610f8c565b61085e565b60606001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102c057604051632abf118b60e21b815260040160405180910390fd5b5f60ff841680156102d3576102d3610fb2565b90505f8180156102e5576102e5610fb2565b036100cb576102fc6102f6306108f2565b846109b4565b505060408051602081019091525f81525b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361035c57604051632abf118b60e21b815260040160405180910390fd5b8015610600575f61036b610ad4565b90505f610376610baf565b6040516370a0823160e01b8152306004820152909150610409906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156103df573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104039190611077565b30610be3565b831061053d576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156104b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d79190611077565b866040518663ffffffff1660e01b81526004016104f895949392919061108e565b602060405180830381865af4158015610513573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105379190611077565b506105fd565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d906105bc9085907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000908990889060040161108e565b602060405180830381865af41580156105d7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fb9190611077565b505b50505b50565b60408051606080820183525f80835260208301529181019190915261030d826108f2565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361067057604051632abf118b60e21b815260040160405180910390fd5b8015801561068557506106823061085e565b15155b15610600576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ec57604051632abf118b60e21b815260040160405180910390fd5b604080516060810190915261060090805f81526020015f815260200160405180602001604052805f815250815250826109b4565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361076957604051632abf118b60e21b815260040160405180910390fd5b801561060057610777610ad4565b604051637756691560e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9163775669159161081591907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009087907f00000000000000000000000000000000000000000000000000000000000000009060040161108e565b602060405180830381865af4158015610830573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108549190611077565b5050565b5f61030d825b6040516370a0823160e01b81526001600160a01b0382811660048301525f9161030d917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156108c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ec9190611077565b83610be3565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015610970573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610997919081019061111a565b9050808060200190518101906109ad919061114c565b9392505050565b5f818060200190518101906109c9919061114c565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c90610a03908490600401611014565b5f6040518083038186803b158015610a19575f5ffd5b505af4158015610a2b573d5f5f3e3d5ffd5b50505050815181604051602001610a429190611014565b6040516020818303038152906040525114610a70576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f88382604051610aa19291906111d8565b60405180910390a17f00000000000000000000000000000000000000000000000000000000000000006105fb8382611288565b60408051606080820183525f8083526020830152918101919091527f00000000000000000000000000000000000000000000000000000000000000008054610b1b90611205565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4790611205565b8015610b925780601f10610b6957610100808354040283529160200191610b92565b820191905f5260205f20905b815481529060010190602001808311610b7557829003601f168201915b5050505050806020019051810190610baa919061114c565b905090565b5f610baa670de0b6b3a7640000807f0000000000000000000000000000000000000000000000000000000000000000610c9f565b5f610c0d7f0000000000000000000000000000000000000000000000000000000000000000610d4f565b610c95610c76610c3c7f0000000000000000000000000000000000000000000000000000000000000000610d4f565b610c469087611357565b7f00000000000000000000000000000000000000000000000000000000000000005b670de0b6b3a7640000610c9f565b610c7f856108f2565b60200151610c6890670de0b6b3a764000061136e565b6109ad9190611395565b5f5f5f610cac8686610dc6565b91509150815f03610cd057838181610cc657610cc6611381565b04925050506109ad565b818411610ce757610ce76003851502601118610de2565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d8c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db091906113b4565b610dbb9060126113cf565b61030d90600a6114cb565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b60ff81168114610600575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610e3857610e38610e01565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e6757610e67610e01565b604052919050565b5f67ffffffffffffffff821115610e8857610e88610e01565b50601f01601f191660200190565b5f82601f830112610ea5575f5ffd5b8135610eb8610eb382610e6f565b610e3e565b818152846020838601011115610ecc575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610ef9575f5ffd5b8235610f0481610df3565b9150602083013567ffffffffffffffff811115610f1f575f5ffd5b610f2b85828601610e96565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6109ad6020830184610f35565b5f60208284031215610f85575f5ffd5b5035919050565b5f60208284031215610f9c575f5ffd5b81356001600160a01b03811681146109ad575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b5f815160038110610fe557634e487b7160e01b5f52602160045260245ffd5b808452506020820151602084015260408201516060604085015261100c6060850182610f35565b949350505050565b602081525f6109ad6020830184610fc6565b5f60208284031215611036575f5ffd5b813580151581146109ad575f5ffd5b5f60208284031215611055575f5ffd5b813567ffffffffffffffff81111561106b575f5ffd5b61100c84828501610e96565b5f60208284031215611087575f5ffd5b5051919050565b60a081525f6110a060a0830188610fc6565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f82601f8301126110dc575f5ffd5b81516110ea610eb382610e6f565b8181528460208386010111156110fe575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561112a575f5ffd5b815167ffffffffffffffff811115611140575f5ffd5b61100c848285016110cd565b5f6020828403121561115c575f5ffd5b815167ffffffffffffffff811115611172575f5ffd5b820160608185031215611183575f5ffd5b61118b610e15565b815160038110611199575f5ffd5b815260208281015190820152604082015167ffffffffffffffff8111156111be575f5ffd5b6111ca868285016110cd565b604083015250949350505050565b604081525f6111ea6040830185610fc6565b82810360208401526111fc8185610fc6565b95945050505050565b600181811c9082168061121957607f821691505b60208210810361123757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156105fd57805f5260205f20601f840160051c810160208510156112625750805b601f840160051c820191505b81811015611281575f815560010161126e565b5050505050565b815167ffffffffffffffff8111156112a2576112a2610e01565b6112b6816112b08454611205565b8461123d565b6020601f8211600181146112e8575f83156112d15750848201515b5f19600385901b1c1916600184901b178455611281565b5f84815260208120601f198516915b8281101561131757878501518255602094850194600190920191016112f7565b508482101561133457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761030d5761030d611343565b8181038181111561030d5761030d611343565b634e487b7160e01b5f52601260045260245ffd5b5f826113af57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156113c4575f5ffd5b81516109ad81610df3565b60ff828116828216039081111561030d5761030d611343565b6001815b60018411156114235780850481111561140757611407611343565b600184161561141557908102905b60019390931c9280026113ec565b935093915050565b5f826114395750600161030d565b8161144557505f61030d565b816001811461145b576002811461146557611481565b600191505061030d565b60ff84111561147657611476611343565b50506001821b61030d565b5060208310610133831016604e8410600b84101617156114a4575081810a61030d565b6114b05f1984846113e8565b805f19048211156114c3576114c3611343565b029392505050565b5f6109ad60ff84168361142b56fea2646970667358221220a0a23d761b87053be335ea25d765fe4df78c1379ebb0ef6ed139360180fadd2d64736f6c634300081e0033", "deployedBytecode": "0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80635b9a4c3511610088578063b6b55f2511610063578063b6b55f2514610209578063ce96cb771461021c578063de846ae41461022f578063f3e0ffbf14610262575f5ffd5b80635b9a4c35146101845780639c4667a2146101ab5780639cd47128146101f6575f5ffd5b80630981b1c2146100cf5780631418983b146100f85780632e1a7d4d14610128578063402d267d1461013d57806342b054f0146101515780635a11745614610171575b5f5ffd5b6100e26100dd366004610ee8565b610275565b6040516100ef9190610f63565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040519081526020016100ef565b61013b610136366004610f75565b610313565b005b61011a61014b366004610f8c565b505f1990565b61016461015f366004610f8c565b610603565b6040516100ef9190611014565b61013b61017f366004611026565b610627565b61011a7f000000000000000000000000000000000000000000000000000000000000000081565b6101de6101b9366004610f8c565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ef565b61013b610204366004611045565b6106a3565b61013b610217366004610f75565b610720565b61011a61022a366004610f8c565b610858565b6101de61023d366004610f8c565b507f000000000000000000000000000000000000000000000000000000000000000090565b61011a610270366004610f8c565b61085e565b60606001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102c057604051632abf118b60e21b815260040160405180910390fd5b5f60ff841680156102d3576102d3610fb2565b90505f8180156102e5576102e5610fb2565b036100cb576102fc6102f6306108f2565b846109b4565b505060408051602081019091525f81525b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361035c57604051632abf118b60e21b815260040160405180910390fd5b8015610600575f61036b610ad4565b90505f610376610baf565b6040516370a0823160e01b8152306004820152909150610409906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156103df573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104039190611077565b30610be3565b831061053d576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156104b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d79190611077565b866040518663ffffffff1660e01b81526004016104f895949392919061108e565b602060405180830381865af4158015610513573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105379190611077565b506105fd565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d906105bc9085907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000908990889060040161108e565b602060405180830381865af41580156105d7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fb9190611077565b505b50505b50565b60408051606080820183525f80835260208301529181019190915261030d826108f2565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361067057604051632abf118b60e21b815260040160405180910390fd5b8015801561068557506106823061085e565b15155b15610600576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ec57604051632abf118b60e21b815260040160405180910390fd5b604080516060810190915261060090805f81526020015f815260200160405180602001604052805f815250815250826109b4565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361076957604051632abf118b60e21b815260040160405180910390fd5b801561060057610777610ad4565b604051637756691560e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9163775669159161081591907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009087907f00000000000000000000000000000000000000000000000000000000000000009060040161108e565b602060405180830381865af4158015610830573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108549190611077565b5050565b5f61030d825b6040516370a0823160e01b81526001600160a01b0382811660048301525f9161030d917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156108c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ec9190611077565b83610be3565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015610970573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610997919081019061111a565b9050808060200190518101906109ad919061114c565b9392505050565b5f818060200190518101906109c9919061114c565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c90610a03908490600401611014565b5f6040518083038186803b158015610a19575f5ffd5b505af4158015610a2b573d5f5f3e3d5ffd5b50505050815181604051602001610a429190611014565b6040516020818303038152906040525114610a70576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f88382604051610aa19291906111d8565b60405180910390a17f00000000000000000000000000000000000000000000000000000000000000006105fb8382611288565b60408051606080820183525f8083526020830152918101919091527f00000000000000000000000000000000000000000000000000000000000000008054610b1b90611205565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4790611205565b8015610b925780601f10610b6957610100808354040283529160200191610b92565b820191905f5260205f20905b815481529060010190602001808311610b7557829003601f168201915b5050505050806020019051810190610baa919061114c565b905090565b5f610baa670de0b6b3a7640000807f0000000000000000000000000000000000000000000000000000000000000000610c9f565b5f610c0d7f0000000000000000000000000000000000000000000000000000000000000000610d4f565b610c95610c76610c3c7f0000000000000000000000000000000000000000000000000000000000000000610d4f565b610c469087611357565b7f00000000000000000000000000000000000000000000000000000000000000005b670de0b6b3a7640000610c9f565b610c7f856108f2565b60200151610c6890670de0b6b3a764000061136e565b6109ad9190611395565b5f5f5f610cac8686610dc6565b91509150815f03610cd057838181610cc657610cc6611381565b04925050506109ad565b818411610ce757610ce76003851502601118610de2565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d8c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db091906113b4565b610dbb9060126113cf565b61030d90600a6114cb565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b60ff81168114610600575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610e3857610e38610e01565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e6757610e67610e01565b604052919050565b5f67ffffffffffffffff821115610e8857610e88610e01565b50601f01601f191660200190565b5f82601f830112610ea5575f5ffd5b8135610eb8610eb382610e6f565b610e3e565b818152846020838601011115610ecc575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610ef9575f5ffd5b8235610f0481610df3565b9150602083013567ffffffffffffffff811115610f1f575f5ffd5b610f2b85828601610e96565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6109ad6020830184610f35565b5f60208284031215610f85575f5ffd5b5035919050565b5f60208284031215610f9c575f5ffd5b81356001600160a01b03811681146109ad575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b5f815160038110610fe557634e487b7160e01b5f52602160045260245ffd5b808452506020820151602084015260408201516060604085015261100c6060850182610f35565b949350505050565b602081525f6109ad6020830184610fc6565b5f60208284031215611036575f5ffd5b813580151581146109ad575f5ffd5b5f60208284031215611055575f5ffd5b813567ffffffffffffffff81111561106b575f5ffd5b61100c84828501610e96565b5f60208284031215611087575f5ffd5b5051919050565b60a081525f6110a060a0830188610fc6565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f82601f8301126110dc575f5ffd5b81516110ea610eb382610e6f565b8181528460208386010111156110fe575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561112a575f5ffd5b815167ffffffffffffffff811115611140575f5ffd5b61100c848285016110cd565b5f6020828403121561115c575f5ffd5b815167ffffffffffffffff811115611172575f5ffd5b820160608185031215611183575f5ffd5b61118b610e15565b815160038110611199575f5ffd5b815260208281015190820152604082015167ffffffffffffffff8111156111be575f5ffd5b6111ca868285016110cd565b604083015250949350505050565b604081525f6111ea6040830185610fc6565b82810360208401526111fc8185610fc6565b95945050505050565b600181811c9082168061121957607f821691505b60208210810361123757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156105fd57805f5260205f20601f840160051c810160208510156112625750805b601f840160051c820191505b81811015611281575f815560010161126e565b5050505050565b815167ffffffffffffffff8111156112a2576112a2610e01565b6112b6816112b08454611205565b8461123d565b6020601f8211600181146112e8575f83156112d15750848201515b5f19600385901b1c1916600184901b178455611281565b5f84815260208120601f198516915b8281101561131757878501518255602094850194600190920191016112f7565b508482101561133457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761030d5761030d611343565b8181038181111561030d5761030d611343565b634e487b7160e01b5f52601260045260245ffd5b5f826113af57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156113c4575f5ffd5b81516109ad81610df3565b60ff828116828216039081111561030d5761030d611343565b6001815b60018411156114235780850481111561140757611407611343565b600184161561141557908102905b60019390931c9280026113ec565b935093915050565b5f826114395750600161030d565b8161144557505f61030d565b816001811461145b576002811461146557611481565b600191505061030d565b60ff84111561147657611476611343565b50506001821b61030d565b5060208310610133831016604e8410600b84101617156114a4575081810a61030d565b6114b05f1984846113e8565b805f19048211156114c3576114c3611343565b029392505050565b5f6109ad60ff84168361142b56fea2646970667358221220a0a23d761b87053be335ea25d765fe4df78c1379ebb0ef6ed139360180fadd2d64736f6c634300081e0033", "linkReferences": { "@ensuro/swaplibrary/contracts/SwapLibrary.sol": { "SwapLibrary": [ { "length": 20, "start": 1850 }, { "length": 20, "start": 2146 }, { "length": 20, "start": 2716 }, { "length": 20, "start": 3313 } ] } }, "deployedLinkReferences": { "@ensuro/swaplibrary/contracts/SwapLibrary.sol": { "SwapLibrary": [ { "length": 20, "start": 1060 }, { "length": 20, "start": 1356 }, { "length": 20, "start": 1926 }, { "length": 20, "start": 2523 } ] } } }