6 txs
138 calls
constructor
constructor(address _initialOwner, address __supplyToken, address __borrowToken, address _morphoAddress, address _morphoMarketOracle, address _morphoMarketIrm, uint96 _morphoMarketLltv, uint256 _maxSafeLtv)
functions
availableToBorrow
viewfunction availableToBorrow() view returns (uint256)
availableToSupply
purefunction availableToSupply() pure returns (uint256 supplyCap, uint256 available)
availableToWithdraw
viewfunction availableToWithdraw() view returns (uint256)
borrowToken
viewfunction borrowToken() view returns (address)
debtAccountData
viewfunction debtAccountData() view returns (uint256 collateral, uint256 collateralPrice, uint256 borrowed, uint256 maxBorrow, uint256 currentLtv, uint256 healthFactor)
debtBalance
viewfunction debtBalance() view returns (uint256)
explicitFunctionAccess
viewfunction explicitFunctionAccess(address, bytes4) view returns (bool)
getMarketParams
viewfunction getMarketParams() view returns (tuple)
isSafeAlRatio
viewfunction isSafeAlRatio(uint256 alRatio) view returns (bool)
marketId
viewfunction marketId() view returns (bytes32)
maxSafeLtv
viewfunction maxSafeLtv() view returns (uint256)
morpho
viewfunction morpho() view returns (address)
morphoMarketIrm
viewfunction morphoMarketIrm() view returns (address)
morphoMarketLltv
viewfunction morphoMarketLltv() view returns (uint96)
morphoMarketOracle
viewfunction morphoMarketOracle() view returns (address)
owner
viewfunction owner() view returns (address)
positionOwner
viewfunction positionOwner() view returns (address)
suppliedBalance
viewfunction suppliedBalance() view returns (uint256)
supplyToken
viewfunction supplyToken() view returns (address)
swapper
viewfunction swapper() view returns (address)
acceptOwner
nonpayablefunction acceptOwner()
borrow
nonpayablefunction borrow(uint256 borrowAmount, address recipient)
decreaseLeverage
nonpayablefunction decreaseLeverage(uint256 repayAmount, uint256 withdrawCollateralAmount, bytes swapData, uint256 repaySurplusThreshold) returns (uint256 debtRepaidAmount, uint256 surplusDebtRepaid)
increaseLeverage
nonpayablefunction increaseLeverage(uint256 supplyAmount, uint256 borrowAmount, bytes swapData, uint256 supplyCollateralSurplusThreshold) returns (uint256 totalCollateralSupplied)
onMorphoRepay
nonpayablefunction onMorphoRepay(uint256 repayAmount, bytes data)
onMorphoSupplyCollateral
nonpayablefunction onMorphoSupplyCollateral(uint256 supplyAmount, bytes data)
proposeNewOwner
nonpayablefunction proposeNewOwner(address account)
recoverToken
nonpayablefunction recoverToken(address token, address to, uint256 amount)
repay
nonpayablefunction repay(uint256 repayAmount) returns (uint256 debtRepaidAmount)
repayAndWithdraw
nonpayablefunction repayAndWithdraw(uint256 repayAmount, uint256 withdrawAmount, address recipient) returns (uint256 debtRepaidAmount, uint256 withdrawnAmount)
revokeOwnership
nonpayablefunction revokeOwnership()
setExplicitAccess
nonpayablefunction setExplicitAccess(address allowedCaller, tuple[] access)
setMaxSafeLtv
nonpayablefunction setMaxSafeLtv(uint256 _maxSafeLtv)
setPositionOwner
nonpayablefunction setPositionOwner(address account)
setSwapper
nonpayablefunction setSwapper(address _swapper)
supply
nonpayablefunction supply(uint256 supplyAmount)
supplyAndBorrow
nonpayablefunction supplyAndBorrow(uint256 supplyAmount, uint256 borrowAmount, address recipient)
withdraw
nonpayablefunction withdraw(uint256 withdrawAmount, address recipient) returns (uint256 amountWithdrawn)
events
ExplicitAccessSet
event ExplicitAccessSet(address indexed account, bytes4 indexed fnSelector, bool indexed value)
MaxSafeLtvSet
event MaxSafeLtvSet(uint256 _maxSafeLtv)
NewOwnerAccepted
event NewOwnerAccepted(address indexed oldOwner, address indexed newOwner)
NewOwnerProposed
event NewOwnerProposed(address indexed oldOwner, address indexed oldProposedOwner, address indexed newProposedOwner)
PositionOwnerSet
event PositionOwnerSet(address indexed account)
SurplusDebtReclaimed
event SurplusDebtReclaimed(uint256 amount, address indexed recipient)
SwapperSet
event SwapperSet(address indexed swapper)
TokenRecovered
event TokenRecovered(address indexed to, address indexed token, uint256 amount)
errors
InvalidAccess
error InvalidAccess()
InvalidAddress
error InvalidAddress(address addr)
InvalidAmount
error InvalidAmount(address token, uint256 amount)
InvalidParam
error InvalidParam()
InvalidToken
error InvalidToken(address token)
PRBMath_MulDiv_Overflow
error PRBMath_MulDiv_Overflow(uint256 x, uint256 y, uint256 denominator)
Slippage
error Slippage(uint256 minAmountExpected, uint256 actualAmount)
creation bytecode
0x61016060405234801562000011575f80fd5b506040516200565638038062005656833981016040819052620000349162000794565b876200004081620001bc565b506001600160a01b0380881660a05286811660c05285811660805284811660e0528316610100526001600160601b03821661012081905281106200009757604051633494a40d60e21b815260040160405180910390fd5b60048190556200013a620001336040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a0016040528060c0516001600160a01b0316815260200160a0516001600160a01b0316815260200160e0516001600160a01b03168152602001610100516001600160a01b03168152602001610120516001600160601b0316815250905090565b60a0902090565b6101408190526080516200015a916001600160a01b039091169062000236565b5f036200017a57604051633494a40d60e21b815260040160405180910390fd5b60a05162000194906001600160a01b0316865f19620002f3565b60c051620001ae906001600160a01b0316865f19620002f3565b505050505050505062000a2b565b5f546001600160a01b031615620001e657604051633006171960e21b815260040160405180910390fd5b6001600160a01b0381166200021557604051634726455360e11b81525f60048201526024015b60405180910390fd5b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f806200024d6200024784620003c8565b6200040d565b604051637784c68560e01b81529091506001600160a01b03851690637784c685906200027e9084906004016200083d565b5f60405180830381865afa15801562000299573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620002c2919081019062000896565b5f81518110620002d657620002d66200095a565b60200260200101515f1c6001600160801b03169150505b92915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526200034d90859083906200045916565b620003c2576040516001600160a01b03841660248201525f6044820152620003b690859063095ea7b360e01b9060640160408051808303601f190181529190526020810180516001600160e01b0319939093166001600160e01b03938416179052906200050316565b620003c2848262000503565b50505050565b5f6002826003604051602001620003e9929190918252602082015260400190565b604051602081830303815290604052805190602001205f1c620002ed91906200096e565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f815181106200044857620004486200095a565b602090810291909101015292915050565b5f805f846001600160a01b031684604051620004769190620009b2565b5f604051808303815f865af19150503d805f8114620004b1576040519150601f19603f3d011682016040523d82523d5f602084013e620004b6565b606091505b5091509150818015620004e4575080511580620004e4575080806020019051810190620004e49190620009cf565b8015620004fa57506001600160a01b0385163b15155b95945050505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201525f9062000551906001600160a01b038516908490620005da565b905080515f148062000574575080806020019051810190620005749190620009cf565b620005d55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016200020c565b505050565b6060620005ea84845f85620005f2565b949350505050565b606082471015620006555760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016200020c565b5f80866001600160a01b03168587604051620006729190620009b2565b5f6040518083038185875af1925050503d805f8114620006ae576040519150601f19603f3d011682016040523d82523d5f602084013e620006b3565b606091505b509092509050620006c787838387620006d2565b979650505050505050565b60608315620007455782515f036200073d576001600160a01b0385163b6200073d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200020c565b5081620005ea565b620005ea83838151156200075c5781518083602001fd5b8060405162461bcd60e51b81526004016200020c9190620009f7565b80516001600160a01b03811681146200078f575f80fd5b919050565b5f805f805f805f80610100898b031215620007ad575f80fd5b620007b88962000778565b9750620007c860208a0162000778565b9650620007d860408a0162000778565b9550620007e860608a0162000778565b9450620007f860808a0162000778565b93506200080860a08a0162000778565b60c08a01519093506001600160601b038116811462000825575f80fd5b8092505060e089015190509295985092959890939650565b602080825282518282018190525f9190848201906040850190845b81811015620008765783518352928401929184019160010162000858565b50909695505050505050565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215620008a8575f80fd5b82516001600160401b0380821115620008bf575f80fd5b818501915085601f830112620008d3575f80fd5b815181811115620008e857620008e862000882565b8060051b604051601f19603f8301168101818110858211171562000910576200091062000882565b6040529182528482019250838101850191888311156200092e575f80fd5b938501935b828510156200094e5784518452938501939285019262000933565b98975050505050505050565b634e487b7160e01b5f52603260045260245ffd5b80820180821115620002ed57634e487b7160e01b5f52601160045260245ffd5b5f5b83811015620009aa57818101518382015260200162000990565b50505f910152565b5f8251620009c58184602087016200098e565b9190910192915050565b5f60208284031215620009e0575f80fd5b81518015158114620009f0575f80fd5b9392505050565b602081525f825180602084015262000a178160408501602087016200098e565b601f01601f19169190910160400192915050565b60805160a05160c05160e05161010051610120516101405161494e62000d085f395f8181610459015281816121250152818161291c015281816129720152612c5f01525f81816105830152818161066a015281816108af01528181610a3f01528181610e73015281816110170152818161115a01528181611329015281816114ba0152818161174e01528181611b5801528181611ec5015281816122a10152818161245e01526127a101525f8181610305015281816105540152818161088001528181610a1001528181610e4401528181610fe8015281816112fa0152818161148b01528181611b2901528181611e96015281816122720152818161242f015261277201525f81816102c60152818161052501528181610851015281816109e101528181610e1501528181610fb90152818161109f015281816112cb0152818161145c01528181611afa01528181611e670152818161224301528181612400015261274301525f81816103cb015281816104c7015281816107f30152818161098301528181610b6701528181610db701528181610f5b0152818161126d015281816113fe015281816116030152818161166c0152818161192d01528181611a9c01528181611be501528181611e09015281816121e5015281816123a2015281816126e5015281816128510152612f3701525f818161041d015281816104f601528181610822015281816109b201528181610ac201528181610b4401528181610de601528181610f8a0152818161129c0152818161142d015281816115cf01528181611637015281816118f201528181611acb01528181611c0801528181611e3801528181612214015281816123d101528181612506015261271401525f81816106ae015281816108fb01528181611a1401528181611f0401528181612103015281816128fa0152818161295001528181612a6601528181612b0501528181612bb301528181612c8d01528181612d180152612e81015261494e5ff3fe608060405234801561000f575f80fd5b5060043610610282575f3560e01c80639c82f2a411610157578063cbda3f69116100d2578063e5331e9111610088578063ebbc49651161006e578063ebbc496514610733578063eedc07131461073b578063f8fd31001461074e575f80fd5b8063e5331e911461070d578063e9e11f1014610720575f80fd5b8063daeccc79116100b8578063daeccc79146106d0578063e322ad2b146106fd578063e4e8895414610705575f80fd5b8063cbda3f6914610665578063d8fbc833146106a9575f80fd5b8063b1022fdf11610127578063bf1eb64a1161010d578063bf1eb64a14610637578063bfccf0ec1461063f578063cb2af14b14610652575f80fd5b8063b1022fdf14610611578063b1f8100d14610624575f80fd5b80639c82f2a4146105c55780639e784426146105d8578063a4fb4120146105eb578063a7229fd9146105fe575f80fd5b806340a647e21161020157806352059756116101b75780636ed71ede1161019d5780636ed71ede146104545780638da5cb5b1461047b57806390c9427c1461048d575f80fd5b8063520597561461041b57806362625c3f14610441575f80fd5b8063456dc17a116101e7578063456dc17a146103c95780634b3fd148146103ef5780634eb75f4014610402575f80fd5b806340a647e21461038b57806342e4a4ac146103c0575f80fd5b80632b3297f911610256578063354030231161023c5780633540302314610342578063371fd8e6146103555780633d33809d14610368575f80fd5b80632b3297f9146103275780632b9689581461033a575f80fd5b8062f714ce1461028657806305b4591c146102ac578063070881d1146102c15780631e99f22414610300575b5f80fd5b610299610294366004613db8565b610756565b6040519081526020015b60405180910390f35b6102bf6102ba366004613de2565b6108f0565b005b6102e87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102a3565b6102e87f000000000000000000000000000000000000000000000000000000000000000081565b6005546102e8906001600160a01b031681565b6102bf610c1e565b6102bf610350366004613e57565b610d1d565b610299610363366004613e57565b610ebf565b61037b610376366004613e57565b611066565b60405190151581526020016102a3565b61039361108d565b604080519687526020870195909552938501929092526060840152608083015260a082015260c0016102a3565b61029960045481565b7f00000000000000000000000000000000000000000000000000000000000000006102e8565b6102bf6103fd366004613db8565b6111d2565b5f19805b604080519283526020830191909152016102a3565b7f00000000000000000000000000000000000000000000000000000000000000006102e8565b6102bf61044f366004613e6e565b611367565b6102997f000000000000000000000000000000000000000000000000000000000000000081565b5f546102e8906001600160a01b031681565b6105b86040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b6040516102a39190613ea0565b6102bf6105d3366004613eea565b61151b565b6102bf6105e6366004613e57565b611702565b6102bf6105f9366004613eea565b6117ee565b6102bf61060c366004613f03565b611899565b6102bf61061f366004613de2565b611a09565b6102bf610632366004613eea565b611cbe565b610299611dcb565b6102bf61064d366004613f3c565b611f30565b6003546102e8906001600160a01b031681565b61068c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516bffffffffffffffffffffffff90911681526020016102a3565b6102e87f000000000000000000000000000000000000000000000000000000000000000081565b61037b6106de366004613fd7565b600160209081525f928352604080842090915290825290205460ff1681565b6102996120f0565b6102996120f5565b61040661071b366004613e6e565b61214a565b61029961072e3660046140f2565b612309565b6102bf6125b1565b6104066107493660046140f2565b61264a565b6102996128eb565b6003545f906001600160a01b031633146107b457610797335f357fffffffff00000000000000000000000000000000000000000000000000000000166129b6565b6107b457604051633006171960e21b815260040160405180910390fd5b6108e983836108e46040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b612a1c565b9392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461093957604051633006171960e21b815260040160405180910390fd5b5f61094682840184614195565b90505f610a746040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b90505f610a85835f01513084612a1c565b83519091508114610afc5782516040517fb2b3b53b0000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260248101919091526044015b60405180910390fd5b600554835160208501516040517fee534a3f0000000000000000000000000000000000000000000000000000000081525f936001600160a01b03169263ee534a3f92610b8f927f000000000000000000000000000000000000000000000000000000000000000092917f000000000000000000000000000000000000000000000000000000000000000091600401614214565b6020604051808303815f875af1158015610bab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bcf9190614245565b905086811015610c15576040517f2746152a0000000000000000000000000000000000000000000000000000000081526004810188905260248101829052604401610af3565b50505050505050565b610c4b335f357fffffffff00000000000000000000000000000000000000000000000000000000166129b6565b610c6857604051633006171960e21b815260040160405180910390fd5b6002546001600160a01b031661dead14610cbd576002546040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610af3565b5f80546040516001600160a01b03909116907f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d554908390a35f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6003546001600160a01b03163314610d7957610d5c335f357fffffffff00000000000000000000000000000000000000000000000000000000166129b6565b610d7957604051633006171960e21b815260040160405180910390fd5b610ebc81610ea86040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b60405180602001604052805f815250612ad5565b50565b6003545f906001600160a01b03163314610f1d57610f00335f357fffffffff00000000000000000000000000000000000000000000000000000000166129b6565b610f1d57604051633006171960e21b815260040160405180910390fd5b6110608261104c6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b60405180602001604052805f815250612b69565b92915050565b5f6004546ec097ce7bc90715b34b9f100000000061108491906142b6565b90911015919050565b5f805f805f8061109b6120f5565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111d9190614245565b9450611127611dcb565b93505f61114587876ec097ce7bc90715b34b9f100000000084612db6565b9050611189816bffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016670de0b6b3a76400005f612db6565b9350845f0361119b575f1991506111c9565b6111b085670de0b6b3a7640000836001612db6565b92506111c684670de0b6b3a7640000875f612db6565b91505b50909192939495565b6003546001600160a01b0316331461122e57611211335f357fffffffff00000000000000000000000000000000000000000000000000000000166129b6565b61122e57604051633006171960e21b815260040160405180910390fd5b611363828261135e6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b612e4f565b5050565b6003546001600160a01b031633146113c3576113a6335f357fffffffff00000000000000000000000000000000000000000000000000000000166129b6565b6113c357604051633006171960e21b815260040160405180910390fd5b5f6114ef6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b905061150a848260405180602001604052805f815250612ad5565b611515838383612e4f565b50505050565b611548335f357fffffffff00000000000000000000000000000000000000000000000000000000166129b6565b61156557604051633006171960e21b815260040160405180910390fd5b6001600160a01b0381166115b0576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610af3565b6005546001600160a01b0316801561162a576115f66001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016825f612f6b565b61162a6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016825f612f6b565b61165f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016835f19612f6b565b6116946001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016835f19612f6b565b6040516001600160a01b038316907f673779832598d6a388768ee342f8de96fdd5c39a468a6955377cf1405b9652b9905f90a250600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61172f335f357fffffffff00000000000000000000000000000000000000000000000000000000166129b6565b61174c57604051633006171960e21b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff1681106117b3576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60048190556040518181527f994e009790ba0b9928d4b193d3ba06a943b02485bae67e9c3af2e1955e065cf29060200160405180910390a150565b61181b335f357fffffffff00000000000000000000000000000000000000000000000000000000166129b6565b61183857604051633006171960e21b815260040160405180910390fd5b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f014e5e53fac070a4a01cf0bc7ae3d30d5ee46aed56c4029a5b6f8e0ad21f8a58905f90a250565b6118c6335f357fffffffff00000000000000000000000000000000000000000000000000000000166129b6565b6118e357604051633006171960e21b815260040160405180910390fd5b6118eb611dcb565b156119a3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148061196157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b156119a3576040517f961c9a4f0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610af3565b826001600160a01b0316826001600160a01b03167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096836040516119e891815260200190565b60405180910390a3611a046001600160a01b03841683836130a0565b505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a5257604051633006171960e21b815260040160405180910390fd5b5f611a5f82840184614195565b90505f611b8d6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b9050611b9d825f01513083612e4f565b600554825160208401516040517fee534a3f0000000000000000000000000000000000000000000000000000000081525f936001600160a01b03169263ee534a3f92611c30927f000000000000000000000000000000000000000000000000000000000000000092917f000000000000000000000000000000000000000000000000000000000000000091600401614214565b6020604051808303815f875af1158015611c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c709190614245565b905085811015611cb6576040517f2746152a0000000000000000000000000000000000000000000000000000000081526004810187905260248101829052604401610af3565b505050505050565b611ceb335f357fffffffff00000000000000000000000000000000000000000000000000000000166129b6565b611d0857604051633006171960e21b815260040160405180910390fd5b6001600160a01b038116611d53576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610af3565b6002545f80546040516001600160a01b03808616948116939216917f64420d4a41c6ed4de2bccbf33192eea18e576c5b23c79c3a722d4e9534c2e8d891a4600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b5f611f2b611efa6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690306130e9565b905090565b611f5d335f357fffffffff00000000000000000000000000000000000000000000000000000000166129b6565b611f7a57604051633006171960e21b815260040160405180910390fd5b6001600160a01b038316611fc5576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610af3565b604080518082019091525f80825260208201525f5b828110156120e957838382818110611ff457611ff46142ee565b90506040020180360381019061200a9190614328565b915081602001511515825f01517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b03167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a46020828101516001600160a01b0387165f9081526001808452604080832087517fffffffff0000000000000000000000000000000000000000000000000000000016845290945292902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905501611fda565b5050505050565b5f611f2b5b5f611f2b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000003061313b565b6003545f9081906001600160a01b031633146121aa5761218d335f357fffffffff00000000000000000000000000000000000000000000000000000000166129b6565b6121aa57604051633006171960e21b815260040160405180910390fd5b5f6122d66040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b90506122f1868260405180602001604052805f815250612b69565b92506122fe858583612a1c565b915050935093915050565b6003545f906001600160a01b031633146123675761234a335f357fffffffff00000000000000000000000000000000000000000000000000000000166129b6565b61236757604051633006171960e21b815260040160405180910390fd5b5f6124936040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b90506124d386826040518060400160405280898152602001888152506040516020016124bf9190614383565b604051602081830303815290604052612ad5565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528692505f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612553573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125779190614245565b9050838111156125a75761259a818360405180602001604052805f815250612ad5565b6125a48184614395565b92505b5050949350505050565b6002546001600160a01b031633146125dc57604051633006171960e21b815260040160405180910390fd5b5f805460405133926001600160a01b03909216917f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d55491a35f80547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600280549091169055565b6003545f9081906001600160a01b031633146126aa5761268d335f357fffffffff00000000000000000000000000000000000000000000000000000000166129b6565b6126aa57604051633006171960e21b815260040160405180910390fd5b5f6127d66040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b9050612816878260405180604001604052808a8152602001898152506040516020016128029190614383565b604051602081830303815290604052612b69565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529093505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015612896573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128ba9190614245565b9050848111156128e0576128dd818360405180602001604052805f815250612b69565b92505b505094509492505050565b5f806129406001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006131e7565b90505f6129966001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000006132b4565b90508082116129a5575f6129af565b6129af81836143a8565b9250505090565b5f80546001600160a01b03848116911614806108e95750506001600160a01b0382165f9081526001602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915290205460ff1692915050565b5f5f198414612a2b5783612a33565b612a336120f5565b6040517f8720316d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638720316d90612aa19085908590309089906004016143bb565b5f604051808303815f87803b158015612ab8575f80fd5b505af1158015612aca573d5f803e3d5ffd5b505050509392505050565b6040517f238d65790000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063238d657990612b4090859087903090879060040161442b565b5f604051808303815f87803b158015612b57575f80fd5b505af1158015610c15573d5f803e3d5ffd5b5f80612b73611dcb565b90508015612dae5780851015612c37576040517f20b76e810000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906320b76e8190612bf090879089905f9030908a906004016144a7565b60408051808303815f875af1158015612c0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c2f919061451f565b509150612dae565b6040517f93c520620000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201523060248201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906393c5206290604401606060405180830381865afa158015612cda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cfe9190614560565b602001516fffffffffffffffffffffffffffffffff1690507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166320b76e81865f8430896040518663ffffffff1660e01b8152600401612d6a9594939291906144a7565b60408051808303815f875af1158015612d85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612da9919061451f565b509250505b509392505050565b5f612dc28585856132c2565b90506001826001811115612dd857612dd86145c3565b03612e47578280612deb57612deb61425c565b84860915612e47575f19811015612e0457600101612e47565b6040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018690526024810185905260448101849052606401610af3565b949350505050565b6040517f50d8cd4b0000000000000000000000000000000000000000000000000000000081525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906350d8cd4b90612ebe9085908890869030908a906004016145f0565b60408051808303815f875af1158015612ed9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612efd919061451f565b509050838114611515576040517fb2b3b53b0000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260248101829052604401610af3565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052612fea84826133aa565b611515576040516001600160a01b03841660248201525f60448201526130969085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261344b565b611515848261344b565b6040516001600160a01b038316602482015260448101829052611a049084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613032565b5f806130f68460a0902090565b90505f61310d6001600160a01b038716838661354b565b90505f8061311b888861361a565b909450925061312f91508490508383613921565b98975050505050505050565b5f8061314f61314a8585613945565b6139b8565b90506080856001600160a01b0316637784c685836040518263ffffffff1660e01b815260040161317f9190614668565b5f60405180830381865afa158015613199573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526131c091908101906146ab565b5f815181106131d1576131d16142ee565b6020026020010151901c5f1c9150509392505050565b5f806131f561314a84613a01565b6040517f7784c6850000000000000000000000000000000000000000000000000000000081529091506001600160a01b03851690637784c6859061323d908490600401614668565b5f60405180830381865afa158015613257573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261327e91908101906146ab565b5f8151811061328f5761328f6142ee565b60200260200101515f1c6fffffffffffffffffffffffffffffffff1691505092915050565b5f806131f561314a84613a42565b5f80805f19858709858702925082811083820303915050805f036132f9578382816132ef576132ef61425c565b04925050506108e9565b838110613343576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610af3565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f805f846001600160a01b0316846040516133c59190614740565b5f604051808303815f865af19150503d805f81146133fe576040519150601f19603f3d011682016040523d82523d5f602084013e613403565b606091505b509150915081801561342d57508051158061342d57508080602001905181019061342d919061475b565b801561344257506001600160a01b0385163b15155b95945050505050565b5f61349f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a629092919063ffffffff16565b905080515f14806134bf5750808060200190518101906134bf919061475b565b611a04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610af3565b5f8061355a61314a8585613945565b6040517f7784c6850000000000000000000000000000000000000000000000000000000081529091506001600160a01b03861690637784c685906135a2908490600401614668565b5f60405180830381865afa1580156135bc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526135e391908101906146ab565b5f815181106135f4576135f46142ee565b60200260200101515f1c6fffffffffffffffffffffffffffffffff169150509392505050565b5f805f805f61362a8660a0902090565b6040517f5c60e39a000000000000000000000000000000000000000000000000000000008152600481018290529091505f906001600160a01b03891690635c60e39a9060240160c060405180830381865afa15801561368b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136af9190614776565b90505f81608001516fffffffffffffffffffffffffffffffff16426136d491906143a8565b905080158015906136fa575060408201516fffffffffffffffffffffffffffffffff1615155b8015613712575060608801516001600160a01b031615155b156138e45760608801516040517f8c00bf6b0000000000000000000000000000000000000000000000000000000081525f916001600160a01b031690638c00bf6b90613764908c908790600401614813565b602060405180830381865afa15801561377f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137a39190614245565b90505f6137d06137b38385613a70565b60408601516fffffffffffffffffffffffffffffffff1690613ad8565b90506137db81613aec565b846040018181516137ec91906148bf565b6fffffffffffffffffffffffffffffffff1690525061380a81613aec565b845185906138199083906148bf565b6fffffffffffffffffffffffffffffffff90811690915260a0860151161590506138e1575f6138678560a001516fffffffffffffffffffffffffffffffff1683613ad890919063ffffffff16565b90505f6138ad82875f01516fffffffffffffffffffffffffffffffff1661388e91906143a8565b60208801518491906fffffffffffffffffffffffffffffffff16613b74565b90506138b881613aec565b866020018181516138c991906148bf565b6fffffffffffffffffffffffffffffffff1690525050505b50505b508051602082015160408301516060909301516fffffffffffffffffffffffffffffffff9283169b9183169a509282169850911695509350505050565b5f612e47613930600185614395565b61393d620f424085614395565b869190613b98565b5f600182846002604051602001613966929190918252602082015260400190565b60408051601f1981840301815282825280516020918201206001600160a01b0390941690830152810191909152606001604051602081830303815290604052805190602001205f1c6108e99190614395565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f815181106139f0576139f06142ee565b602090810291909101015292915050565b5f80826003604051602001613a20929190918252602082015260400190565b604051602081830303815290604052805190602001205f1c6110609190614395565b5f6001826003604051602001613a20929190918252602082015260400190565b6060612e4784845f85613bc3565b5f80613a7c83856148ef565b90505f613a9c8280613a97670de0b6b3a764000060026148ef565b613cc0565b90505f613ab78284613a97670de0b6b3a764000060036148ef565b905080613ac48385614395565b613ace9190614395565b9695505050505050565b5f6108e98383670de0b6b3a7640000613cc0565b60408051808201909152601481527f6d61782075696e7431323820657863656564656400000000000000000000000060208201525f906fffffffffffffffffffffffffffffffff831115613b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af39190614906565b5090919050565b5f612e47613b85620f424084614395565b613b90600186614395565b869190613cc0565b5f81613ba56001826143a8565b613baf85876148ef565b613bb99190614395565b612e4791906142b6565b606082471015613c55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610af3565b5f80866001600160a01b03168587604051613c709190614740565b5f6040518083038185875af1925050503d805f8114613caa576040519150601f19603f3d011682016040523d82523d5f602084013e613caf565b606091505b50915091506125a487838387613ccc565b5f81613bb984866148ef565b60608315613d545782515f03613d4d576001600160a01b0385163b613d4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610af3565b5081612e47565b612e478383815115613d695781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af39190614906565b80356001600160a01b0381168114613db3575f80fd5b919050565b5f8060408385031215613dc9575f80fd5b82359150613dd960208401613d9d565b90509250929050565b5f805f60408486031215613df4575f80fd5b83359250602084013567ffffffffffffffff80821115613e12575f80fd5b818601915086601f830112613e25575f80fd5b813581811115613e33575f80fd5b876020828501011115613e44575f80fd5b6020830194508093505050509250925092565b5f60208284031215613e67575f80fd5b5035919050565b5f805f60608486031215613e80575f80fd5b8335925060208401359150613e9760408501613d9d565b90509250925092565b60a0810161106082846001600160a01b0380825116835280602083015116602084015280604083015116604084015280606083015116606084015250608081015160808301525050565b5f60208284031215613efa575f80fd5b6108e982613d9d565b5f805f60608486031215613f15575f80fd5b613f1e84613d9d565b9250613f2c60208501613d9d565b9150604084013590509250925092565b5f805f60408486031215613f4e575f80fd5b613f5784613d9d565b9250602084013567ffffffffffffffff80821115613f73575f80fd5b818601915086601f830112613f86575f80fd5b813581811115613f94575f80fd5b8760208260061b8501011115613e44575f80fd5b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114613db3575f80fd5b5f8060408385031215613fe8575f80fd5b613ff183613d9d565b9150613dd960208401613fa8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff8111828210171561404f5761404f613fff565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561407e5761407e613fff565b604052919050565b5f82601f830112614095575f80fd5b813567ffffffffffffffff8111156140af576140af613fff565b6140c26020601f19601f84011601614055565b8181528460208386010111156140d6575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215614105575f80fd5b8435935060208501359250604085013567ffffffffffffffff811115614129575f80fd5b61413587828801614086565b949793965093946060013593505050565b5f60408284031215614156575f80fd5b61415e61402c565b905081358152602082013567ffffffffffffffff81111561417d575f80fd5b61418984828501614086565b60208301525092915050565b5f602082840312156141a5575f80fd5b813567ffffffffffffffff8111156141bb575f80fd5b612e4784828501614146565b5f5b838110156141e15781810151838201526020016141c9565b50505f910152565b5f81518084526142008160208601602086016141c7565b601f01601f19169290920160200192915050565b5f6001600160a01b03808716835285602084015280851660408401525060806060830152613ace60808301846141e9565b5f60208284031215614255575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f826142e9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8015158114610ebc575f80fd5b5f60408284031215614338575f80fd5b61434061402c565b61434983613fa8565b815260208301356143598161431b565b60208201529392505050565b805182525f602082015160406020850152612e4760408501826141e9565b602081525f6108e96020830184614365565b8082018082111561106057611060614289565b8181038181111561106057611060614289565b610100810161440682876001600160a01b0380825116835280602083015116602084015280604083015116604084015280606083015116606084015250608081015160808301525050565b60a08201949094526001600160a01b0392831660c0820152911660e090910152919050565b5f61010061447583886001600160a01b0380825116835280602083015116602084015280604083015116604084015280606083015116606084015250608081015160808301525050565b8560a08401526001600160a01b03851660c08401528060e084015261449c818401856141e9565b979650505050505050565b5f6101206144f183896001600160a01b0380825116835280602083015116602084015280604083015116604084015280606083015116606084015250608081015160808301525050565b8660a08401528560c08401526001600160a01b03851660e08401528061010084015261312f818401856141e9565b5f8060408385031215614530575f80fd5b505080516020909101519092909150565b80516fffffffffffffffffffffffffffffffff81168114613db3575f80fd5b5f60608284031215614570575f80fd5b6040516060810181811067ffffffffffffffff8211171561459357614593613fff565b604052825181526145a660208401614541565b60208201526145b760408401614541565b60408201529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b610120810161463b82886001600160a01b0380825116835280602083015116602084015280604083015116604084015280606083015116606084015250608081015160808301525050565b60a082019590955260c08101939093526001600160a01b0391821660e08401521661010090910152919050565b602080825282518282018190525f9190848201906040850190845b8181101561469f57835183529284019291840191600101614683565b50909695505050505050565b5f60208083850312156146bc575f80fd5b825167ffffffffffffffff808211156146d3575f80fd5b818501915085601f8301126146e6575f80fd5b8151818111156146f8576146f8613fff565b8060051b9150614709848301614055565b8181529183018401918481019088841115614722575f80fd5b938501935b8385101561312f57845182529385019390850190614727565b5f82516147518184602087016141c7565b9190910192915050565b5f6020828403121561476b575f80fd5b81516108e98161431b565b5f60c08284031215614786575f80fd5b60405160c0810181811067ffffffffffffffff821117156147a9576147a9613fff565b6040526147b583614541565b81526147c360208401614541565b60208201526147d460408401614541565b60408201526147e560608401614541565b60608201526147f660808401614541565b608082015261480760a08401614541565b60a08201529392505050565b610160810161485e82856001600160a01b0380825116835280602083015116602084015280604083015116604084015280606083015116606084015250608081015160808301525050565b6fffffffffffffffffffffffffffffffff8084511660a08401528060208501511660c08401528060408501511660e084015280606085015116610100840152806080850151166101208401528060a085015116610140840152509392505050565b6fffffffffffffffffffffffffffffffff8181168382160190808211156148e8576148e8614289565b5092915050565b808202811582820484141761106057611060614289565b602081525f6108e960208301846141e956fea2646970667358221220aff05d46d9d6016820d7d4abb213de922dc1524c5bc4eb67164e5fde6045111464736f6c63430008160033000000000000000000000000b20aae0fe007519b7ce6f090a2ab8353b3da5d80000000000000000000000000ec5a52c685cc3ad79a6a347abace330d69e0b1ed0000000000000000000000008236a87084f8b84306f72007f36f2618a5634494000000000000000000000000bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb0000000000000000000000005283b67fadc6bb299c0dc90f97191132ace413a5000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000000000000000000000000000000cb2bba6f17b80000000000000000000000000000000000000000000000000000c7d713b49da0000