0 txs
1 call
constructor
No constructor.
functions
convertIBTToYTSpot
viewfunction convertIBTToYTSpot(uint256 _inputIBTAmount, address _curvePool) view returns (uint256)
convertIBTToYTSpotSNG
viewfunction convertIBTToYTSpotSNG(uint256 _inputIBTAmount, address _curvePool) view returns (uint256)
getPTUnderlyingUnit
viewfunction getPTUnderlyingUnit(address _pt) view returns (uint256)
getUnit
viewfunction getUnit(address _token) view returns (uint256)
previewAddLiquidity
viewfunction previewAddLiquidity(address _curvePool, uint256[2] _amounts) view returns (uint256 minMintAmount)
previewAddLiquiditySNG
viewfunction previewAddLiquiditySNG(address _curvePool, uint256[] _amounts) view returns (uint256 minMintAmount)
previewAddLiquidityWithAsset
viewfunction previewAddLiquidityWithAsset(address _curvePool, uint256 _assets) view returns (uint256 minMintAmount)
previewAddLiquidityWithAssetSNG
viewfunction previewAddLiquidityWithAssetSNG(address _curvePool, uint256 _assets) view returns (uint256 minMintAmount)
previewAddLiquidityWithIBT
viewfunction previewAddLiquidityWithIBT(address _curvePool, uint256 _ibts) view returns (uint256 minMintAmount)
previewAddLiquidityWithIBTSNG
viewfunction previewAddLiquidityWithIBTSNG(address _curvePool, uint256 _ibts) view returns (uint256 minMintAmount)
previewFlashSwapExactIBTToYT
viewfunction previewFlashSwapExactIBTToYT(address _curvePool, uint256 _inputIBTAmount) view returns (uint256 ytAmount, uint256 borrowedIBTAmount)
previewFlashSwapExactIBTToYTSNG
viewfunction previewFlashSwapExactIBTToYTSNG(address _curvePool, uint256 _inputIBTAmount) view returns (uint256 ytAmount, uint256 borrowedIBTAmount)
previewFlashSwapExactYTToIBT
viewfunction previewFlashSwapExactYTToIBT(address _curvePool, uint256 inputYTAmount) view returns (uint256, uint256)
previewFlashSwapExactYTToIBTSNG
viewfunction previewFlashSwapExactYTToIBTSNG(address _curvePool, uint256 inputYTAmount) view returns (uint256, uint256)
previewFlashSwapIBTToExactYT
viewfunction previewFlashSwapIBTToExactYT(address _curvePool, uint256 _outputYTAmount) view returns (uint256 inputIBTAmount, uint256 borrowedIBTAmount)
previewFlashSwapIBTToExactYTSNG
viewfunction previewFlashSwapIBTToExactYTSNG(address _curvePool, uint256 _outputYTAmount) view returns (uint256 inputIBTAmount, uint256 borrowedIBTAmount)
previewNGAddLiquidity
viewfunction previewNGAddLiquidity(address _curvePool, uint256[2] _amounts) view returns (uint256 minMintAmount)
previewNGAddLiquidityWithAsset
viewfunction previewNGAddLiquidityWithAsset(address _curvePool, uint256 _assets) view returns (uint256 minMintAmount)
previewNGAddLiquidityWithIBT
viewfunction previewNGAddLiquidityWithIBT(address _curvePool, uint256 _ibts) view returns (uint256 minMintAmount)
previewNGFlashSwapExactIBTToYT
viewfunction previewNGFlashSwapExactIBTToYT(address _curvePool, uint256 _inputIBTAmount) view returns (uint256 ytAmount, uint256 borrowedIBTAmount)
previewNGFlashSwapExactYTToIBT
viewfunction previewNGFlashSwapExactYTToIBT(address _curvePool, uint256 inputYTAmount) view returns (uint256, uint256)
previewNGFlashSwapIBTToExactYT
viewfunction previewNGFlashSwapIBTToExactYT(address _curvePool, uint256 _outputYTAmount) view returns (uint256 inputIBTAmount, uint256 borrowedIBTAmount)
previewNGRemoveLiquidity
viewfunction previewNGRemoveLiquidity(address _curvePool, uint256 _lpAmount) view returns (uint256[2] minAmounts)
previewNGRemoveLiquidityForAsset
viewfunction previewNGRemoveLiquidityForAsset(address _curvePool, uint256 _lpAmount) view returns (uint256 assets)
previewNGRemoveLiquidityForIBT
viewfunction previewNGRemoveLiquidityForIBT(address _curvePool, uint256 _lpAmount) view returns (uint256 ibts)
previewNGRemoveLiquidityOneCoin
viewfunction previewNGRemoveLiquidityOneCoin(address _curvePool, uint256 _lpAmount, uint256 _i) view returns (uint256 minAmount)
previewRemoveLiquidity
viewfunction previewRemoveLiquidity(address _curvePool, uint256 _lpAmount) view returns (uint256[2] minAmounts)
previewRemoveLiquidityForAsset
viewfunction previewRemoveLiquidityForAsset(address _curvePool, uint256 _lpAmount) view returns (uint256 assets)
previewRemoveLiquidityForAssetSNG
viewfunction previewRemoveLiquidityForAssetSNG(address _curvePool, uint256 _lpAmount) view returns (uint256 assets)
previewRemoveLiquidityForIBT
viewfunction previewRemoveLiquidityForIBT(address _curvePool, uint256 _lpAmount) view returns (uint256 ibts)
previewRemoveLiquidityForIBTSNG
viewfunction previewRemoveLiquidityForIBTSNG(address _curvePool, uint256 _lpAmount) view returns (uint256 ibts)
previewRemoveLiquidityOneCoin
viewfunction previewRemoveLiquidityOneCoin(address _curvePool, uint256 _lpAmount, uint256 _i) view returns (uint256 minAmount)
previewRemoveLiquidityOneCoinSNG
viewfunction previewRemoveLiquidityOneCoinSNG(address _curvePool, uint256 _lpAmount, int128 _i) view returns (uint256 minAmount)
previewRemoveLiquiditySNG
viewfunction previewRemoveLiquiditySNG(address _curvePool, uint256 _lpAmount) view returns (uint256[] minAmounts)
spotExchangeRate
viewfunction spotExchangeRate(address _curvePool, uint256 _i, uint256 _j) view returns (uint256)
spotExchangeRateSNG
viewfunction spotExchangeRateSNG(address _curvePool, int128 _i, int128 _j) view returns (uint256)
events
No events.
errors
InvalidTokenIndex
error InvalidTokenIndex(uint256 i, uint256 j)
MathOverflowedMulDiv
error MathOverflowedMulDiv()
PoolLiquidityError
error PoolLiquidityError()
ResultNotFound
error ResultNotFound()
SafeCastOverflowedIntToUint
error SafeCastOverflowedIntToUint(int256 value)
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
UnsufficientAmountForFlashFee
error UnsufficientAmountForFlashFee()
creation bytecode
0x608060405234801561000f575f80fd5b506139768061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610213575f3560e01c8063794b40441161011f578063a0f3b821116100a9578063b688026d11610079578063b688026d146104a6578063b775c261146104b9578063d0a3fcb4146104cc578063f829c8f7146104df578063f8fc815c146104f2575f80fd5b8063a0f3b8211461045a578063a3284ec81461046d578063a9982ee814610480578063b03ae38114610493575f80fd5b806386b3b868116100ef57806386b3b868146103fb57806388a312e21461040e57806394e5ef67146104215780639b88c6db146104345780639c8d5a5b14610447575f80fd5b8063794b4044146103af5780637c3bdb28146103c2578063800738e9146103d557806384943214146103e8575f80fd5b80635e16f1e9116101a05780636b0426cb116101705780636b0426cb146103435780636c5b196a14610356578063719fbb27146103765780637441de6a1461038957806378c090931461039c575f80fd5b80635e16f1e9146102ea5780635fa5a497146102fd578063625aefd2146103105780636525e5f114610323575f80fd5b80632271e1f8116101e65780632271e1f8146102765780632fee2f091461028957806331922b4b1461029c5780634346b24f146102c457806344cee8f7146102d7575f80fd5b80630d029aa5146102175780630f9c83281461023d578063102c05e51461025057806314633b6814610263575b5f80fd5b61022a610225366004613207565b610505565b6040519081526020015b60405180910390f35b61022a61024b36600461329f565b610740565b61022a61025e36600461329f565b6107c1565b61022a610271366004613325565b6107fc565b61022a610284366004613367565b6109f2565b61022a610297366004613399565b610b1f565b6102af6102aa366004613207565b610cb5565b60408051928352602083019190915201610234565b61022a6102d23660046133ea565b610fe0565b61022a6102e5366004613207565b61101b565b6102af6102f8366004613207565b611224565b61022a61030b366004613490565b6114c5565b6102af61031e366004613207565b611531565b610336610331366004613207565b611836565b60405161023491906134ab565b61022a610351366004613207565b6118b5565b610369610364366004613207565b6119a1565b60405161023491906134db565b6102af610384366004613207565b611a1e565b6102af610397366004613207565b611a35565b61022a6103aa366004613399565b611c3a565b61022a6103bd366004613367565b611d87565b6102af6103d0366004613207565b611e12565b61022a6103e3366004613367565b611e1e565b61022a6103f6366004613207565b611e6e565b61022a610409366004613207565b61204e565b61022a61041c366004613207565b6121de565b61033661042f366004613207565b6122c1565b61022a610442366004613207565b612302565b61022a61045536600461351e565b61233d565b61022a610468366004613207565b612390565b61022a61047b366004613207565b612473565b6102af61048e366004613207565b6125d5565b6102af6104a1366004613207565b6127aa565b61022a6104b4366004613207565b6129ed565b6102af6104c7366004613207565b612c05565b61022a6104da366004613207565b612dda565b61022a6104ed366004613207565b612f6c565b61022a610500366004613490565b612fa7565b5f8073662deb224ce02060688701fcc8ce156bbca4bdd5636525e5f185856040518363ffffffff1660e01b8152600401610540929190613550565b6040805180830381865af415801561055a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061057e9190613569565b60405163c661065760e01b8152600160048201529091506001600160a01b0385169063c661065790602401602060405180830381865afa1580156105c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e891906135c5565b6001600160a01b0316634cdad50682600160200201516040518263ffffffff1660e01b815260040161061c91815260200190565b602060405180830381865afa158015610637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065b91906135f4565b60405163c661065760e01b81525f60048201526001600160a01b0386169063c661065790602401602060405180830381865afa15801561069d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c191906135c5565b825160405163266d6a8360e11b815260048101919091526001600160a01b039190911690634cdad506906024015b602060405180830381865afa15801561070a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072e91906135f4565b610738919061361f565b949350505050565b6040516301f3906560e31b81525f9073662deb224ce02060688701fcc8ce156bbca4bdd590630f9c83289061077b9086908690600401613632565b602060405180830381865af4158015610796573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ba91906135f4565b9392505050565b6040516370b3fe7560e01b81525f9073662deb224ce02060688701fcc8ce156bbca4bdd5906370b3fe759061077b9086908690600401613632565b604051631c98d5a960e11b81525f600482018190529081906001600160a01b03861690633931ab5290602401602060405180830381865afa158015610843573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086791906135f4565b90505f856001600160a01b031663fd0684b16040518163ffffffff1660e01b81526004015f60405180830381865afa1580156108a5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108cc9190810190613672565b905084600f0b5f1480156108e3575083600f0b6001145b156109565761094c670de0b6b3a764000083610945670de0b6b3a764000085600181518110610914576109146135e0565b6020026020010151865f8151811061092e5761092e6135e0565b6020026020010151612fe79092919063ffffffff16565b9190612fe7565b92506107ba915050565b84600f0b600114801561096b575083600f0b5f145b156109b85761094c81600181518110610986576109866135e0565b6020026020010151825f815181106109a0576109a06135e0565b602002602001015184612fe79092919063ffffffff16565b60405163175ebd2b60e11b81526fffffffffffffffffffffffffffffffff8087166004830152851660248201526044015b60405180910390fd5b5f82158015610a015750816001145b15610a8957610a82670de0b6b3a7640000856001600160a01b031663c146bf946040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7291906135f4565b670de0b6b3a76400009190612fe7565b90506107ba565b826001148015610a97575081155b15610afc57836001600160a01b031663c146bf946040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ad8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a8291906135f4565b60405163175ebd2b60e11b815260048101849052602481018390526044016109e9565b60405163c661065760e01b8152600160048201525f9081906001600160a01b0384169063c661065790602401602060405180830381865afa158015610b66573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8a91906135c5565b90505f816001600160a01b031663efd98dc26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bc9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bed91906135f4565b90505f826001600160a01b031663a1c5b3e16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c5091906135f4565b90505f610c6c83670de0b6b3a76400006109458960015f6109f2565b905081811115610c8f5760405163202f312b60e21b815260040160405180910390fd5b5f610c9a82846136f3565b9050610ca7888583612fe7565b955050505050505b92915050565b60405163c661065760e01b8152600160048201525f90819081906001600160a01b0386169063c661065790602401602060405180830381865afa158015610cfe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2291906135c5565b6040516302f6fa9560e11b8152600481018690529091505f906001600160a01b038316906305edf52a90602401602060405180830381865afa158015610d6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8e91906135f4565b90505f610d9b8688611c3a565b60405163c661065760e01b81525f60048201819052919250610e0b906001600160a01b038a169063c6610657906024015b602060405180830381865afa158015610de7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030b91906135c5565b90505f5b60ff811015610f1c57610e246103e88361371a565b610e3c83610e3287876130a6565b61094588886130bb565b10610f1c575f610e4c8a866125d5565b5090505f610e5a8b866125d5565b5090505f610e678b6130dc565b610e70846130dc565b610e7a919061372d565b90505f610e868c6130dc565b610e8f846130dc565b610e99919061372d565b9050808203610eab5750505050610f1c565b5f610f01610eb9848461372d565b610ec28b6130dc565b610ecb8b6130dc565b610ed5919061372d565b610edf9085613753565b610ee99190613782565b610ef28a6130dc565b610efc919061372d565b61310c565b979850610f1594508593506137ae92505050565b9050610e0f565b50610f278383613131565b95505f610f3489886125d5565b9650905087811115610f9057620f42405f5b60ff811015610f8d57610f65610f5d6001846136f3565b8a9084612fe7565b9850610f718b8a6125d5565b9850925089831115610f8d57610f86816137ae565b9050610f46565b50505b87811180610fb65750610fa56103e88361371a565b610fb4838a6109458c866130bb565b115b15610fd457604051635aae0c9960e11b815260040160405180910390fd5b50505050509250929050565b604051634346b24f60e01b81525f9073662deb224ce02060688701fcc8ce156bbca4bdd590634346b24f9061077b90869086906004016137c6565b60405163c661065760e01b8152600160048201525f9081906001600160a01b0385169063c661065790602401602060405180830381865afa158015611062573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108691906135c5565b60405163fbfc779760e01b8152600481018590526001600160a01b038087166024830152821660448201529091505f9073662deb224ce02060688701fcc8ce156bbca4bdd59063fbfc779790606401602060405180830381865af41580156110f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111491906135f4565b90505f61112182866136f3565b6040516302f6fa9560e11b8152600481018490529091505f906001600160a01b038516906305edf52a90602401602060405180830381865afa158015611169573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118d91906135f4565b6040805180820182528481526020810183905290516370b3fe7560e01b815291925073662deb224ce02060688701fcc8ce156bbca4bdd5916370b3fe75916111da918b9190600401613632565b602060405180830381865af41580156111f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061121991906135f4565b979650505050505050565b60405163c661065760e01b8152600160048201525f90819081906001600160a01b0386169063c661065790602401602060405180830381865afa15801561126d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129191906135c5565b90505f816001600160a01b031663c644fe946040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f491906135c5565b90505f826001600160a01b031663efd98dc26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611333573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135791906135f4565b90505f836001600160a01b031663a1c5b3e16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611396573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ba91906135f4565b604051631bf69d3d60e11b81525f6004820181905260016024830152604482018a90529192506001600160a01b038a16906337ed3a7a906064015b602060405180830381865afa158015611410573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061143491906135f4565b90505f611442898486612fe7565b90505f61145087878561313f565b9050818311156114735760405163202f312b60e21b815260040160405180910390fd5b8161147e828561361f565b111561149d57604051638a7ceb6f60e01b815260040160405180910390fd5b5f816114a985856136f3565b6114b391906136f3565b9c939b50929950505050505050505050565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611502573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611526919061381b565b610caf90600a61391b565b60405163c661065760e01b8152600160048201525f90819081906001600160a01b0386169063c661065790602401602060405180830381865afa15801561157a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159e91906135c5565b90505f816001600160a01b031663c644fe946040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160191906135c5565b90505f826001600160a01b031663efd98dc26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611640573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166491906135f4565b90505f836001600160a01b031663a1c5b3e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c791906135f4565b60405163556d6e9f60e01b8152600160048201525f60248201819052604482018a90529192506001600160a01b038a169063556d6e9f906064015b602060405180830381865afa15801561171d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061174191906135f4565b90506117e5856001600160a01b031663abfa94466040518163ffffffff1660e01b8152600401602060405180830381865afa158015611782573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a691906135f4565b6117b890670de0b6b3a76400006136f3565b6117c29085613929565b670de0b6b3a76400006117d5858c613929565b6117df9190613929565b9061318a565b9550858111156118085760405163202f312b60e21b815260040160405180910390fd5b8061181486868961313f565b61181e908861361f565b61182891906136f3565b965050505050509250929050565b61183e6131d2565b604051636525e5f160e01b815273662deb224ce02060688701fcc8ce156bbca4bdd590636525e5f1906118779086908690600401613550565b6040805180830381865af4158015611891573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ba9190613569565b60405163c661065760e01b81525f600482018190529081906001600160a01b0385169063c661065790602401602060405180830381865afa1580156118fc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192091906135c5565b60405163ef8b30f760e01b8152600481018590529091505f906001600160a01b0383169063ef8b30f790602401602060405180830381865afa158015611968573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198c91906135f4565b90506119988582612dda565b95945050505050565b60405163362d8cb560e11b815260609073662deb224ce02060688701fcc8ce156bbca4bdd590636c5b196a906119dd9086908690600401613550565b5f60405180830381865af41580156119f7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107ba9190810190613672565b5f80611a2a8484611531565b915091509250929050565b60405163c661065760e01b8152600160048201525f90819081906001600160a01b0386169063c661065790602401602060405180830381865afa158015611a7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa291906135c5565b90505f816001600160a01b031663c644fe946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0591906135c5565b90505f826001600160a01b031663efd98dc26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6891906135f4565b90505f836001600160a01b031663a1c5b3e16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ba7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bcb91906135f4565b604051631990812560e31b81526001600160a01b038a1660048201525f6024820181905260016044830152606482018a905291925073662deb224ce02060688701fcc8ce156bbca4bdd59063cc84092890608401602060405180830381865af4158015611410573d5f803e3d5ffd5b60405163c661065760e01b8152600160048201525f9081906001600160a01b0384169063c661065790602401602060405180830381865afa158015611c81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ca591906135c5565b90505f816001600160a01b031663efd98dc26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0891906135f4565b90505f826001600160a01b031663a1c5b3e16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d6b91906135f4565b90505f610c6c83670de0b6b3a76400006109458960015f6107fc565b604051631e52d01160e21b81526001600160a01b038416600482015260248101839052604481018290525f9073662deb224ce02060688701fcc8ce156bbca4bdd59063794b4044906064015b602060405180830381865af4158015611dee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073891906135f4565b5f80611a2a84846127aa565b604051630de51c1b60e21b81526001600160a01b038416600482015260248101839052604481018290525f9073662deb224ce02060688701fcc8ce156bbca4bdd590633794706c90606401611dd3565b60405163c661065760e01b8152600160048201525f9081906001600160a01b0385169063c661065790602401602060405180830381865afa158015611eb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ed991906135c5565b60405163fbfc779760e01b8152600481018590526001600160a01b038087166024830152821660448201529091505f9073662deb224ce02060688701fcc8ce156bbca4bdd59063fbfc779790606401602060405180830381865af4158015611f43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f6791906135f4565b90505f611f7482866136f3565b6040516302f6fa9560e11b8152600481018490529091505f906001600160a01b038516906305edf52a90602401602060405180830381865afa158015611fbc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fe091906135f4565b6040805160028082526060820183529293505f92909160208301908036833701905050905082815f81518110612018576120186135e0565b6020026020010181815250508181600181518110612038576120386135e0565b602002602001018181525050610ca78882610fe0565b5f8073662deb224ce02060688701fcc8ce156bbca4bdd5636c5b196a85856040518363ffffffff1660e01b8152600401612089929190613550565b5f60405180830381865af41580156120a3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526120ca9190810190613672565b60405163c661065760e01b8152600160048201529091506001600160a01b0385169063c661065790602401602060405180830381865afa158015612110573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061213491906135c5565b6001600160a01b03166368c1f7f682600181518110612155576121556135e0565b60200260200101516040518263ffffffff1660e01b815260040161217b91815260200190565b602060405180830381865afa158015612196573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ba91906135f4565b815f815181106121cc576121cc6135e0565b6020026020010151610738919061361f565b60405163c661065760e01b81525f600482018190529081906001600160a01b0385169063c661065790602401602060405180830381865afa158015612225573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061224991906135c5565b60405163ef8b30f760e01b8152600481018590529091505f906001600160a01b0383169063ef8b30f790602401602060405180830381865afa158015612291573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122b591906135f4565b9050611998858261101b565b6122c96131d2565b604051631be1eaad60e31b815273662deb224ce02060688701fcc8ce156bbca4bdd59063df0f5568906118779086908690600401613550565b5f8073662deb224ce02060688701fcc8ce156bbca4bdd563df0f556885856040518363ffffffff1660e01b8152600401610540929190613550565b604051639c8d5a5b60e01b81526001600160a01b038416600482015260248101839052600f82900b60448201525f9073662deb224ce02060688701fcc8ce156bbca4bdd590639c8d5a5b90606401611dd3565b60405163c661065760e01b81525f600482018190529081906001600160a01b0385169063c661065790602401602060405180830381865afa1580156123d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123fb91906135c5565b60405163ef8b30f760e01b8152600481018590529091505f906001600160a01b0383169063ef8b30f790602401602060405180830381865afa158015612443573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061246791906135f4565b90506119988582611e6e565b5f8073662deb224ce02060688701fcc8ce156bbca4bdd5636525e5f185856040518363ffffffff1660e01b81526004016124ae929190613550565b6040805180830381865af41580156124c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ec9190613569565b60405163c661065760e01b8152600160048201529091506001600160a01b0385169063c661065790602401602060405180830381865afa158015612532573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061255691906135c5565b6001600160a01b03166368c1f7f682600160200201516040518263ffffffff1660e01b815260040161258a91815260200190565b602060405180830381865afa1580156125a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c991906135f4565b8151610738919061361f565b60405163c661065760e01b8152600160048201525f90819081906001600160a01b0386169063c661065790602401602060405180830381865afa15801561261e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061264291906135c5565b90505f816001600160a01b031663c644fe946040518163ffffffff1660e01b8152600401602060405180830381865afa158015612681573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126a591906135c5565b90505f826001600160a01b031663efd98dc26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061270891906135f4565b90505f836001600160a01b031663a1c5b3e16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612747573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276b91906135f4565b604051635e0d443f60e01b8152600160048201525f60248201819052604482018a90529192506001600160a01b038a1690635e0d443f90606401611702565b60405163c661065760e01b8152600160048201525f90819081906001600160a01b0386169063c661065790602401602060405180830381865afa1580156127f3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061281791906135c5565b6040516302f6fa9560e11b8152600481018690529091505f906001600160a01b038316906305edf52a90602401602060405180830381865afa15801561285f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061288391906135f4565b90505f6128908688610b1f565b60405163c661065760e01b81525f600482018190529192506128c5906001600160a01b038a169063c661065790602401610dcc565b90505f5b60ff811015612984576128de6103e88361371a565b6128ec83610e3287876130a6565b10612984575f6128fc8a86611531565b5090505f61290a8b86611531565b5090505f6129178b6130dc565b612920846130dc565b61292a919061372d565b90505f6129368c6130dc565b61293f846130dc565b612949919061372d565b905080820361295b5750505050612984565b5f612969610eb9848461372d565b97985061297d94508593506137ae92505050565b90506128c9565b5061298f8383613131565b95505f61299c8988611531565b9650905087811115610f9057620f42405f5b60ff811015610f8d576129c5610f5d6001846136f3565b98506129d18b8a611531565b9850925089831115610f8d576129e6816137ae565b90506129ae565b5f8073662deb224ce02060688701fcc8ce156bbca4bdd5636c5b196a85856040518363ffffffff1660e01b8152600401612a28929190613550565b5f60405180830381865af4158015612a42573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612a699190810190613672565b60405163c661065760e01b8152600160048201529091506001600160a01b0385169063c661065790602401602060405180830381865afa158015612aaf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ad391906135c5565b6001600160a01b0316634cdad50682600181518110612af457612af46135e0565b60200260200101516040518263ffffffff1660e01b8152600401612b1a91815260200190565b602060405180830381865afa158015612b35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b5991906135f4565b60405163c661065760e01b81525f60048201526001600160a01b0386169063c661065790602401602060405180830381865afa158015612b9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bbf91906135c5565b6001600160a01b0316634cdad506835f81518110612bdf57612bdf6135e0565b60200260200101516040518263ffffffff1660e01b81526004016106ef91815260200190565b60405163c661065760e01b8152600160048201525f90819081906001600160a01b0386169063c661065790602401602060405180830381865afa158015612c4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c7291906135c5565b90505f816001600160a01b031663c644fe946040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cd591906135c5565b90505f826001600160a01b031663efd98dc26040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d14573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d3891906135f4565b90505f836001600160a01b031663a1c5b3e16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d9b91906135f4565b6040516333ef816560e11b81525f6004820181905260016024830152604482018a90529192506001600160a01b038a16906367df02ca906064016113f5565b60405163c661065760e01b8152600160048201525f9081906001600160a01b0385169063c661065790602401602060405180830381865afa158015612e21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e4591906135c5565b60405163fbfc779760e01b8152600481018590526001600160a01b038087166024830152821660448201529091505f9073662deb224ce02060688701fcc8ce156bbca4bdd59063fbfc779790606401602060405180830381865af4158015612eaf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ed391906135f4565b90505f612ee082866136f3565b6040516302f6fa9560e11b8152600481018490529091505f906001600160a01b038516906305edf52a90602401602060405180830381865afa158015612f28573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f4c91906135f4565b905061121987604051806040016040528085815260200184815250610740565b5f8073662deb224ce02060688701fcc8ce156bbca4bdd563df0f556885856040518363ffffffff1660e01b81526004016124ae929190613550565b5f610caf826001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610de7573d5f803e3d5ffd5b5f838302815f1985870982811083820303915050805f0361301b5783828161301157613011613706565b04925050506107ba565b80841161303b5760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f8183116130b457816107ba565b5090919050565b5f8183116130d2576130cd83836136f3565b6107ba565b6107ba82846136f3565b5f6001600160ff1b038211156131085760405163123baf0360e11b8152600481018390526024016109e9565b5090565b5f8082121561310857604051635467221960e11b8152600481018390526024016109e9565b5f8183106130b457816107ba565b604051633676633960e21b81525f906001600160a01b0385169063d9d98ce49061316f9086908690600401613550565b602060405180830381865afa158015611dee573d5f803e3d5ffd5b5f815f036131a35761319c828461371a565b9050610caf565b82156131ca57816131b56001856136f3565b6131bf919061371a565b6130cd90600161361f565b505f92915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b0381168114613204575f80fd5b50565b5f8060408385031215613218575f80fd5b8235613223816131f0565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff8111828210171561326857613268613231565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561329757613297613231565b604052919050565b5f80606083850312156132b0575f80fd5b82356132bb816131f0565b91506020603f840185136132cd575f80fd5b6132d5613245565b8060608601878111156132e6575f80fd5b8387015b8181101561330157803584529284019284016132ea565b509497909650945050505050565b8035600f81900b8114613320575f80fd5b919050565b5f805f60608486031215613337575f80fd5b8335613342816131f0565b92506133506020850161330f565b915061335e6040850161330f565b90509250925092565b5f805f60608486031215613379575f80fd5b8335613384816131f0565b95602085013595506040909401359392505050565b5f80604083850312156133aa575f80fd5b8235915060208301356133bc816131f0565b809150509250929050565b5f67ffffffffffffffff8211156133e0576133e0613231565b5060051b60200190565b5f80604083850312156133fb575f80fd5b8235613406816131f0565b915060208381013567ffffffffffffffff811115613422575f80fd5b8401601f81018613613432575f80fd5b8035613445613440826133c7565b61326e565b81815260059190911b82018301908381019088831115613463575f80fd5b928401925b8284101561348157833582529284019290840190613468565b80955050505050509250929050565b5f602082840312156134a0575f80fd5b81356107ba816131f0565b6040810181835f5b60028110156134d25781518352602092830192909101906001016134b3565b50505092915050565b602080825282518282018190525f9190848201906040850190845b81811015613512578351835292840192918401916001016134f6565b50909695505050505050565b5f805f60608486031215613530575f80fd5b833561353b816131f0565b92506020840135915061335e6040850161330f565b6001600160a01b03929092168252602082015260400190565b5f60408284031215613579575f80fd5b82601f830112613587575f80fd5b61358f613245565b8060408401858111156135a0575f80fd5b845b818110156135ba5780518452602093840193016135a2565b509095945050505050565b5f602082840312156135d5575f80fd5b81516107ba816131f0565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613604575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610caf57610caf61360b565b6001600160a01b0383168152606081016020808301845f5b60028110156136675781518352918301919083019060010161364a565b505050509392505050565b5f6020808385031215613683575f80fd5b825167ffffffffffffffff811115613699575f80fd5b8301601f810185136136a9575f80fd5b80516136b7613440826133c7565b81815260059190911b820183019083810190878311156136d5575f80fd5b928401925b82841015611219578351825292840192908401906136da565b81810381811115610caf57610caf61360b565b634e487b7160e01b5f52601260045260245ffd5b5f8261372857613728613706565b500490565b8181035f83128015838313168383128216171561374c5761374c61360b565b5092915050565b8082025f8212600160ff1b8414161561376e5761376e61360b565b8181058314821517610caf57610caf61360b565b5f8261379057613790613706565b600160ff1b82145f19841416156137a9576137a961360b565b500590565b5f600182016137bf576137bf61360b565b5060010190565b6001600160a01b03831681526040602080830182905283519183018290525f9184820191906060850190845b8181101561380e578451835293830193918301916001016137f2565b5090979650505050505050565b5f6020828403121561382b575f80fd5b815160ff811681146107ba575f80fd5b600181815b8085111561387557815f190482111561385b5761385b61360b565b8085161561386857918102915b93841c9390800290613840565b509250929050565b5f8261388b57506001610caf565b8161389757505f610caf565b81600181146138ad57600281146138b7576138d3565b6001915050610caf565b60ff8411156138c8576138c861360b565b50506001821b610caf565b5060208310610133831016604e8410600b84101617156138f6575081810a610caf565b613900838361383b565b805f19048211156139135761391361360b565b029392505050565b5f6107ba60ff84168361387d565b8082028115828204841417610caf57610caf61360b56fea2646970667358221220416f5ba62890cf4e2b42d60c18baf2e8ec6218d2e2eb29ae51d2bd57972eea9864736f6c63430008140033