0 txs
23k calls
constructor
constructor(address registry_, address nonFungiblePositionManager)
functions
ASSET_TYPE
viewfunction ASSET_TYPE() view returns (uint256)
assetToUnderlyingAssets
viewfunction assetToUnderlyingAssets(bytes32 assetKey, uint256) view returns (bytes32 underlyingAssetKeys)
getRiskFactors
viewfunction getRiskFactors(address creditor, address asset, uint256 assetId) view returns (uint16 collateralFactor, uint16 liquidationFactor)
getValue
viewfunction getValue(address creditor, address asset, uint256 assetId, uint256 assetAmount) view returns (uint256 valueInUsd, uint256 collateralFactor, uint256 liquidationFactor)
inAssetModule
viewfunction inAssetModule(address) view returns (bool)
isAllowed
viewfunction isAllowed(address asset, uint256 assetId) view returns (bool)
lastExposureAssetToUnderlyingAsset
viewfunction lastExposureAssetToUnderlyingAsset(address creditor, bytes32 assetKey, bytes32 underlyingAssetKey) view returns (uint256 exposure)
lastExposuresAsset
viewfunction lastExposuresAsset(address creditor, bytes32 assetKey) view returns (uint112 lastExposureAsset, uint112 lastUsdExposureAsset)
owner
viewfunction owner() view returns (address)
REGISTRY
viewfunction REGISTRY() view returns (address)
riskParams
viewfunction riskParams(address creditor) view returns (uint112 lastUsdExposureProtocol, uint112 maxUsdExposureProtocol, uint16 riskFactor)
processDirectDeposit
nonpayablefunction processDirectDeposit(address creditor, address asset, uint256 assetId, uint256 amount) returns (uint256 recursiveCalls)
processDirectWithdrawal
nonpayablefunction processDirectWithdrawal(address creditor, address asset, uint256 assetId, uint256 amount)
processIndirectDeposit
nonpayablefunction processIndirectDeposit(address creditor, address asset, uint256 assetId, uint256 exposureUpperAssetToAsset, int256 deltaExposureUpperAssetToAsset) returns (uint256 recursiveCalls, uint256 usdExposureUpperAssetToAsset)
processIndirectWithdrawal
nonpayablefunction processIndirectWithdrawal(address creditor, address asset, uint256 assetId, uint256 exposureUpperAssetToAsset, int256 deltaExposureUpperAssetToAsset) returns (uint256 usdExposureUpperAssetToAsset)
setProtocol
nonpayablefunction setProtocol()
setRiskParameters
nonpayablefunction setRiskParameters(address creditor, uint112 maxUsdExposureProtocol_, uint16 riskFactor)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
OwnershipTransferred
event OwnershipTransferred(address indexed user, address indexed newOwner)
errors
ExposureNotInLimits
error ExposureNotInLimits()
InvalidAmount
error InvalidAmount()
InvalidId
error InvalidId()
OnlyRegistry
error OnlyRegistry()
Overflow
error Overflow()
RiskFactorNotInLimits
error RiskFactorNotInLimits()
ZeroLiquidity
error ZeroLiquidity()
creation bytecode
0x61010060405234801562000011575f80fd5b506040516200374438038062003744833981016040819052620000349162000129565b5f80546001600160a01b03191633908117825560405184926002928492849282917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0391821660a052608052831660c08190526040805163c45a015560e01b8152905191935063c45a0155925060048082019260209290919082900301815f875af1158015620000d2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000f891906200015f565b6001600160a01b031660e05250620001829050565b80516001600160a01b038116811462000124575f80fd5b919050565b5f80604083850312156200013b575f80fd5b62000146836200010d565b915062000156602084016200010d565b90509250929050565b5f6020828403121562000170575f80fd5b6200017b826200010d565b9392505050565b60805160a05160c05160e0516134fb620002495f395f61267f01525f818161097601528181610ae101528181610b3501528181610ea301528181610ff8015281816110da01528181611fb80152818161205a015261213301525f818161012f0152818161057d01528181610839015281816109f701528181610bd101528181610c6601528181610d0301528181610d860152818161118e0152818161156f015281816117f701528181611a960152611d8201525f818161036901526109c001526134fb5ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c806353b85a501161009e5780638da5cb5b1161006e5780638da5cb5b1461038b578063ba9270ff1461039d578063f0793997146103b0578063f2fde38b146103b8578063f8350ed0146103cb575f80fd5b806353b85a501461028857806373aecb98146102f357806382d6b166146103065780638815eb3914610364575f80fd5b80631ba0408c116100e45780631ba0408c146101c15780632341eb86146101ef5780633a8fe5e7146102175780633c0ac4f61461024757806349bccc5d1461025a575f80fd5b8063024874c71461011557806306433b1b1461012a57806315ed93bc1461016e57806317235093146101a0575b5f80fd5b610128610123366004612c78565b6103de565b005b6101517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61019061017c366004612cbb565b60016020525f908152604090205460ff1681565b6040519015158152602001610165565b6101b36101ae366004612cd6565b610407565b604051908152602001610165565b6101d46101cf366004612d23565b610435565b6040805161ffff938416815292909116602083015201610165565b6102026101fd366004612cd6565b61074d565b60408051928352602083019190915201610165565b6101b3610225366004612d61565b600460209081525f938452604080852082529284528284209052825290205481565b6101b3610255366004612d93565b61079f565b61026d610268366004612c78565b6107ca565b60408051938452602084019290925290820152606001610165565b6102c9610296366004612cbb565b60026020525f90815260409020546001600160701b0380821691600160701b810490911690600160e01b900461ffff1683565b604080516001600160701b03948516815293909216602084015261ffff1690820152606001610165565b610128610301366004612dc2565b61082e565b610344610314366004612e15565b600360209081525f92835260408084209091529082529020546001600160701b0380821691600160701b90041682565b604080516001600160701b03938416815292909116602083015201610165565b6101b37f000000000000000000000000000000000000000000000000000000000000000081565b5f54610151906001600160a01b031681565b6101b36103ab366004612c78565b610901565b61012861091f565b6101286103c6366004612cbb565b610a4c565b6101906103d9366004612e15565b610ade565b6103ea84848484610cf8565b80600103610401575f828152600560205260408120555b50505050565b5f6104158686868686610d7a565b9050811961042c575f848152600560205260408120555b95945050505050565b5f805f61044c610447868660a01b1790565b610e21565b6040805160028082526060820183529293505f92909160208301908036833750506040805160028082526060820183529394505f93909250906020830190803683370190505090506104c5835f815181106104a9576104a9612e53565b60200260200101516001600160a01b0381169160a09190911c90565b835f815181106104d7576104d7612e53565b60200260200101835f815181106104f0576104f0612e53565b6020026020010182815250826001600160a01b03166001600160a01b03168152505050610529836001815181106104a9576104a9612e53565b8360018151811061053c5761053c612e53565b602002602001018360018151811061055657610556612e53565b6020026020010182815250826001600160a01b03166001600160a01b031681525050505f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630344bc4e8b86866040518463ffffffff1660e01b81526004016105cb93929190612ed9565b5f60405180830381865afa1580156105e5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261060c919081019061300a565b6001600160a01b038c165f908152600260205260409020548251929450909250600160e01b900461ffff16908390600190811061064b5761064b612e53565b602002602001015161ffff16835f8151811061066957610669612e53565b602002602001015161ffff16106106b4576106af8360018151811061069057610690612e53565b602002602001015161ffff1661271083610fb09092919063ffffffff16565b6106c9565b6106c9835f8151811061069057610690612e53565b9750816001815181106106de576106de612e53565b602002602001015161ffff16825f815181106106fc576106fc612e53565b602002602001015161ffff1610610728576107238260018151811061069057610690612e53565b61073d565b61073d825f8151811061069057610690612e53565b9650505050505050935093915050565b5f80826001036107655761076085610fcb565b610784565b82156107845760405163162908e360e11b815260040160405180910390fd5b6107918787878787611181565b909890975095505050505050565b6006602052815f5260405f2081815481106107b8575f80fd5b905f5260205f20015f91509150505481565b5f805f806107da878760a01b1790565b90505f6107e682610e21565b90505f806107f68b858a86611234565b9150915080515f0361080f5761080c8b846113e5565b90505b61081a8b83836115f6565b919d909c50909a5098505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610877576040516310f5403960e31b815260040160405180910390fd5b6127108161ffff16111561089e57604051630b1c8e2560e01b815260040160405180910390fd5b6001600160a01b039092165f908152600260205260409020805461ffff909316600160e01b0261ffff60e01b196001600160701b03909316600160701b02929092166fffffffffffffffffffffffffffffffff60701b1990931692909217179055565b5f816001036109135761091383610fcb565b61042c858585856117eb565b5f546001600160a01b0316331461096c5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081165f81815260016020819052604091829020805460ff191690911790555163f1751c7b60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160601b0316600482015260248101919091527f00000000000000000000000000000000000000000000000000000000000000009091169063f1751c7b906044015f604051808303815f87803b158015610a3a575f80fd5b505af1158015610401573d5f803e3d5ffd5b5f546001600160a01b03163314610a945760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610963565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614610b1f57505f610cf2565b60405163133f757160e31b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906399fbab889060240161018060405180830381865afa925050508015610ba1575060408051601f3d908101601f19168201909252610b9e918101906130ae565b60015b610bac57505f610cf2565b604051630f8350ed60e41b81526001600160a01b038b811660048301525f60248301527f0000000000000000000000000000000000000000000000000000000000000000169063f8350ed090604401602060405180830381865afa158015610c16573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3a9190613191565b8015610ccf5750604051630f8350ed60e41b81526001600160a01b038a811660048301525f60248301527f0000000000000000000000000000000000000000000000000000000000000000169063f8350ed090604401602060405180830381865afa158015610cab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ccf9190613191565b8015610ce357505f856001600160801b0316115b9c505050505050505050505050505b92915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d41576040516310f5403960e31b815260040160405180910390fd5b5f610d4e848460a01b1790565b90505f610d648683610d5f866131be565b61186e565b9050610d7186838361195f565b50505050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610dc4576040516310f5403960e31b815260040160405180910390fd5b5f610dd1868660a01b1790565b90505f610ddf88838661186e565b90505f610ded89848461195f565b9050811580610dfa575080155b15610e07575f9350610e15565b610e12818784610fb0565b93505b50505095945050505050565b5f81815260066020908152604091829020805483518184028101840190945280845260609392830182828015610e7457602002820191905f5260205f20905b815481526020019060010190808311610e60575b5050505050905080515f03610fab5760405163133f757160e31b815260a083901c60048201819052905f9081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906399fbab889060240161018060405180830381865afa158015610ef1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1591906130ae565b5050505050505050935093505050600267ffffffffffffffff811115610f3d57610f3d612e3f565b604051908082528060200260200182016040528015610f66578160200160208202803683370190505b50935081845f81518110610f7c57610f7c612e53565b60209081029190910101528084600181518110610f9b57610f9b612e53565b6020026020010181815250505050505b919050565b5f825f190484118302158202610fc4575f80fd5b5091020490565b6001600160601b03811115610ff357604051631bf4348160e31b815260040160405180910390fd5b5f805f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166399fbab88856040518263ffffffff1660e01b815260040161104491815260200190565b61018060405180830381865afa158015611060573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108491906130ae565b505050509750505050945094505050806001600160801b03165f036110bc57604051630200e8a960e31b815260040160405180910390fd5b5f8481526005602052604081206001600160801b03831690556111017f00000000000000000000000000000000000000000000000000000000000000008660a01b1790565b6040805160028082526060820183529293505f92909160208301908036833701905050905084815f8151811061113957611139612e53565b6020908102919091010152838160018151811061115857611158612e53565b6020908102919091018101919091525f83815260068252604090208251610d7192840190612c0d565b5f80336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111cc576040516310f5403960e31b815260040160405180910390fd5b5f6111d9878760a01b1790565b90505f6111e789838761186e565b90505f806111f6838c86611c47565b91509150825f1480611206575080155b15611213575f9450611221565b61121e818985610fb0565b94505b5060010199929850919650505050505050565b606080835f036112635760408051600280825260608201835290916020830190803683370190505091506113dc565b60a085901c5f8080808061127686611f7f565b604080516002808252606082018352969b5094995092975090955093505f929060208301908036833701905050905085815f815181106112b8576112b8612e53565b602090810291909101015284816001815181106112d7576112d7612e53565b6020026020010181815250506112ed8d826113e5565b97505f806113378686868d5f8151811061130957611309612e53565b60200260200101515f01518e60018151811061132757611327612e53565b60200260200101515f01516120eb565b915091505f806113468b612125565b915091508382116113575781611359565b835b9150828111611368578061136a565b825b6040805160028082526060820183529293509190602083019080368337019050509c508184018d5f815181106113a2576113a2612e53565b6020026020010181815250508083018d6001815181106113c4576113c4612e53565b60200260200101818152505050505050505050505050505b94509492505050565b80516060905f8167ffffffffffffffff81111561140457611404612e3f565b60405190808252806020026020018201604052801561142d578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561144a5761144a612e3f565b604051908082528060200260200182016040528015611473578160200160208202803683370190505b5090505f8367ffffffffffffffff81111561149057611490612e3f565b6040519080825280602002602001820160405280156114b9578160200160208202803683370190505b5090505f5b84811015611557576114db8782815181106104a9576104a9612e53565b8583815181106114ed576114ed612e53565b6020026020010185848151811061150657611506612e53565b6020026020010182815250826001600160a01b03166001600160a01b03168152505050670de0b6b3a764000082828151811061154457611544612e53565b60209081029190910101526001016114be565b5060405163cbdcbc3b60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbdcbc3b906115aa908a908790879087906004016131d8565b5f60405180830381865afa1580156115c4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115eb9190810190613221565b979650505050505050565b5f805f61164d8460018151811061160f5761160f612e53565b60200260200101515f0151670de0b6b3a76400008760018151811061163657611636612e53565b6020026020010151610fb09092919063ffffffff16565b611688855f8151811061166257611662612e53565b60200260200101515f0151670de0b6b3a7640000885f8151811061163657611636612e53565b61169291906132d8565b6001600160a01b0387165f908152600260205260409020548551919450600160e01b900461ffff1690859060019081106116ce576116ce612e53565b602002602001015160200151855f815181106116ec576116ec612e53565b60200260200101516020015110611737576117328560018151811061171357611713612e53565b60200260200101516020015161271083610fb09092919063ffffffff16565b61174c565b61174c855f8151811061171357611713612e53565b92508460018151811061176157611761612e53565b602002602001015160400151855f8151811061177f5761177f612e53565b602002602001015160400151106117ca576117c5856001815181106117a6576117a6612e53565b60200260200101516040015161271083610fb09092919063ffffffff16565b6117df565b6117df855f815181106117a6576117a6612e53565b91505093509350939050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611835576040516310f5403960e31b815260040160405180910390fd5b5f611842858560a01b1790565b90505f61185087838661186e565b90505f61185e828985611c47565b5060010198975050505050505050565b5f808213156118b5576001600160a01b0384165f9081526003602090815260408083208684529091529020546118ae9083906001600160701b03166132d8565b905061190d565b6001600160a01b0384165f9081526003602090815260408083208684529091529020546001600160701b03166118ea836131be565b81116118f6575f611909565b6118ff836131be565b61190990826132eb565b9150505b6119168161223e565b6001600160a01b03949094165f9081526003602090815260408083209583529490529290922080546001600160701b0319166001600160701b0390941693909317909255919050565b5f8061196a84610e21565b90505f61197986868685611234565b5090505f805f805b8551811015611b78576001600160a01b038a165f9081526004602090815260408083208c8452909152812087519091908890849081106119c3576119c3612e53565b602002602001015181526020019081526020015f20548582815181106119eb576119eb612e53565b60200260200101516119fd91906132fe565b9350848181518110611a1157611a11612e53565b602002602001015160045f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8b81526020019081526020015f205f888481518110611a5e57611a5e612e53565b602002602001015181526020019081526020015f2081905550611a8c8682815181106104a9576104a9612e53565b80935081945050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631e3b06628b8585898681518110611ad857611ad8612e53565b60209081029190910101516040516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152604483015260648201526084810187905260a4016020604051808303815f875af1158015611b40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b649190613324565b611b6e90886132d8565b9650600101611981565b506001600160a01b0389165f8181526003602090815260408083208c8452825280832080546001600160701b038c8116600160701b908102600160701b600160e01b031984161790935595855260029093529083205491048316921690828910611be757508188038101611bf8565b888303821115611bf8575087820381035b611c018161223e565b6001600160a01b039c909c165f90815260026020526040902080546001600160701b0319166001600160701b03909d169c909c17909b5550959998505050505050505050565b5f805f80611c5485610e21565b90505f611c6387878a85611234565b5090505f805f805f805b8751811015611e6c576001600160a01b038d165f9081526004602090815260408083208f8452909152812089519091908a9084908110611caf57611caf612e53565b602002602001015181526020019081526020015f2054878281518110611cd757611cd7612e53565b6020026020010151611ce991906132fe565b9550868181518110611cfd57611cfd612e53565b602002602001015160045f8f6001600160a01b03166001600160a01b031681526020019081526020015f205f8e81526020019081526020015f205f8a8481518110611d4a57611d4a612e53565b602002602001015181526020019081526020015f2081905550611d788882815181106104a9576104a9612e53565b80955081965050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636a6674a78e87878b8681518110611dc457611dc4612e53565b60209081029190910101516040516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152604483015260648201526084810189905260a40160408051808303815f875af1158015611e2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e4f919061333b565b9093509150611e5e828b6132d8565b9a83019a9950600101611c6d565b506001600160a01b038c165f8181526003602090815260408083208f8452825280832080546001600160701b038f8116600160701b908102600160701b600160e01b0319841617909355958552600290935292205491900482169116818b10611edb57818b0381019950611eed565b8a8203811115611eed578a8203810399505b6001600160a01b038e165f90815260026020526040902054600160701b90046001600160701b03168a10611f34576040516366b09a5960e01b815260040160405180910390fd5b5050506001600160a01b03909a165f90815260026020526040902080546001600160701b039097166001600160701b0319909716969096179095555094989397509295505050505050565b5f818152600560205260408120548190819081906001600160801b038116156120445760405163133f757160e31b8152600481018790527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906399fbab889060240161018060405180830381865afa158015612006573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061202a91906130ae565b50979e50959c50929a509098506120e29650505050505050565b60405163133f757160e31b8152600481018790527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906399fbab889060240161018060405180830381865afa1580156120a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120cc91906130ae565b50979e50959c50929a5090985096505050505050505b91939590929450565b5f805f6120f88585612252565b9050612116816121078a6122af565b6121108a6122af565b896125dd565b90999098509650505050505050565b5f805f805f805f805f805f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166399fbab888e6040518263ffffffff1660e01b815260040161217f91815260200190565b61018060405180830381865afa15801561219b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121bf91906130ae565b6001600160801b03169b506001600160801b03169b509b509b506001600160801b03169b509b509b509b509b509b5050505f806121ff8c8c8c8c8c612677565b915091508361221587840389600160801b61291e565b019d508261222a86830389600160801b61291e565b019c50505050505050505050505050915091565b5f600160701b821061224e575f80fd5b5090565b5f815f03612275575073fffd8963efd1fc6a506488495d951d5263988d26610cf2565b5f61228d846b204fce5e3e2502611000000085610fb0565b90505f612299826129ca565b905061042c655af3107a4000606083901b613371565b5f805f8360020b126122c4578260020b6122cb565b8260020b5f035b9050620d89e88111156123045760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610963565b5f816001165f0361231957600160801b61232b565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561235f576ffff97272373d413259a46990580e213a0260801c5b600482161561237e576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561239d576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156123bc576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156123db576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156123fa576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612419576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612439576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612459576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612479576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612499576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156124b9576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156124d9576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156124f9576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612519576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561253a576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561255a576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612579576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612596576b048a170391f7dc42444e8fa20260801c5b5f8460020b13156125b557805f19816125b1576125b161335d565b0490505b6401000000008106156125c95760016125cb565b5f5b60ff16602082901c0192505050919050565b5f80836001600160a01b0316856001600160a01b031611156125fd579293925b846001600160a01b0316866001600160a01b03161161262857612621858585612a6e565b91506113dc565b836001600160a01b0316866001600160a01b031610156126615761264d868585612a6e565b915061265a858785612adc565b90506113dc565b61266c858585612adc565b905094509492505050565b5f805f6126a67f0000000000000000000000000000000000000000000000000000000000000000898989612b26565b90505f816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156126e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127099190613390565b505060405163f30dba9360e01b815260028c900b60048201529395505f945084936001600160a01b038816935063f30dba939250602401905061010060405180830381865afa15801561275e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127829190613423565b505060405163f30dba9360e01b815260028e900b60048201529397509195505f9450849350506001600160a01b0388169163f30dba93915060240161010060405180830381865afa1580156127d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127fd9190613423565b505050509350935050508960020b8560020b1215612824578184039750808303965061290e565b8860020b8560020b1215612903578184876001600160a01b031663f30583996040518163ffffffff1660e01b8152600401602060405180830381865afa158015612870573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128949190613324565b030397508083876001600160a01b031663461413196040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128fa9190613324565b0303965061290e565b838203975082810396505b5050505050509550959350505050565b5f80805f19858709858702925082811083820303915050805f03612952575f8411612947575f80fd5b5082900490506129c3565b80841161295d575f80fd5b5f848688098519600190810187169687900496828603819004959092119093035f82900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b60b581600160881b81106129e35760409190911b9060801c5b690100000000000000000081106129ff5760209190911b9060401c5b650100000000008110612a175760109190911b9060201c5b63010000008110612a2d5760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b5f826001600160a01b0316846001600160a01b03161115612a8d579192915b836001600160a01b0316612ac6606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b031661291e565b81612ad357612ad361335d565b04949350505050565b5f826001600160a01b0316846001600160a01b03161115612afb579192915b612b1e826001600160801b03168585036001600160a01b0316600160601b61291e565b949350505050565b5f826001600160a01b0316846001600160a01b031610612b44575f80fd5b604080516001600160a01b03808716602083015285169181019190915262ffffff83166060820152859060800160408051601f19818403018152908290528051602091820120612bec939290917fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5491016001600160f81b0319815260609390931b6bffffffffffffffffffffffff191660018401526015830191909152603582015260550190565b60408051601f19818403018152919052805160209091012095945050505050565b828054828255905f5260205f20908101928215612c46579160200282015b82811115612c46578251825591602001919060010190612c2b565b5061224e9291505b8082111561224e575f8155600101612c4e565b6001600160a01b0381168114612c75575f80fd5b50565b5f805f8060808587031215612c8b575f80fd5b8435612c9681612c61565b93506020850135612ca681612c61565b93969395505050506040820135916060013590565b5f60208284031215612ccb575f80fd5b81356129c381612c61565b5f805f805f60a08688031215612cea575f80fd5b8535612cf581612c61565b94506020860135612d0581612c61565b94979496505050506040830135926060810135926080909101359150565b5f805f60608486031215612d35575f80fd5b8335612d4081612c61565b92506020840135612d5081612c61565b929592945050506040919091013590565b5f805f60608486031215612d73575f80fd5b8335612d7e81612c61565b95602085013595506040909401359392505050565b5f8060408385031215612da4575f80fd5b50508035926020909101359150565b61ffff81168114612c75575f80fd5b5f805f60608486031215612dd4575f80fd5b8335612ddf81612c61565b925060208401356001600160701b0381168114612dfa575f80fd5b91506040840135612e0a81612db3565b809150509250925092565b5f8060408385031215612e26575f80fd5b8235612e3181612c61565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f815180845260208085019450602084015f5b83811015612e9f5781516001600160a01b031687529582019590820190600101612e7a565b509495945050505050565b5f815180845260208085019450602084015f5b83811015612e9f57815187529582019590820190600101612ebd565b6001600160a01b03841681526060602082018190525f90612efc90830185612e67565b8281036040840152612f0e8185612eaa565b9695505050505050565b6040516060810167ffffffffffffffff81118282101715612f3b57612f3b612e3f565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612f6a57612f6a612e3f565b604052919050565b5f67ffffffffffffffff821115612f8b57612f8b612e3f565b5060051b60200190565b5f82601f830112612fa4575f80fd5b81516020612fb9612fb483612f72565b612f41565b8083825260208201915060208460051b870101935086841115612fda575f80fd5b602086015b84811015612fff578051612ff281612db3565b8352918301918301612fdf565b509695505050505050565b5f806040838503121561301b575f80fd5b825167ffffffffffffffff80821115613032575f80fd5b61303e86838701612f95565b93506020850151915080821115613053575f80fd5b5061306085828601612f95565b9150509250929050565b8051610fab81612c61565b805162ffffff81168114610fab575f80fd5b8051600281900b8114610fab575f80fd5b80516001600160801b0381168114610fab575f80fd5b5f805f805f805f805f805f806101808d8f0312156130ca575f80fd5b8c516001600160601b03811681146130e0575f80fd5b9b506130ee60208e0161306a565b9a506130fc60408e0161306a565b995061310a60608e0161306a565b985061311860808e01613075565b975061312660a08e01613087565b965061313460c08e01613087565b955061314260e08e01613098565b94506101008d015193506101208d015192506131616101408e01613098565b91506131706101608e01613098565b90509295989b509295989b509295989b565b80518015158114610fab575f80fd5b5f602082840312156131a1575f80fd5b6129c382613182565b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016131d2576131d26131aa565b505f0390565b6001600160a01b03851681526080602082018190525f906131fb90830186612e67565b828103604084015261320d8186612eaa565b905082810360608401526115eb8185612eaa565b5f6020808385031215613232575f80fd5b825167ffffffffffffffff811115613248575f80fd5b8301601f81018513613258575f80fd5b8051613266612fb482612f72565b81815260609182028301840191848201919088841115613284575f80fd5b938501935b838510156132cc5780858a03121561329f575f80fd5b6132a7612f18565b8551815286860151878201526040808701519082015283529384019391850191613289565b50979650505050505050565b80820180821115610cf257610cf26131aa565b81810381811115610cf257610cf26131aa565b8181035f83128015838313168383128216171561331d5761331d6131aa565b5092915050565b5f60208284031215613334575f80fd5b5051919050565b5f806040838503121561334c575f80fd5b505080516020909101519092909150565b634e487b7160e01b5f52601260045260245ffd5b5f8261338b57634e487b7160e01b5f52601260045260245ffd5b500490565b5f805f805f805f60e0888a0312156133a6575f80fd5b87516133b181612c61565b96506133bf60208901613087565b955060408801516133cf81612db3565b60608901519095506133e081612db3565b60808901519094506133f181612db3565b60a089015190935060ff81168114613407575f80fd5b915061341560c08901613182565b905092959891949750929550565b5f805f805f805f80610100898b03121561343b575f80fd5b61344489613098565b9750602089015180600f0b8114613459575f80fd5b80975050604089015195506060890151945060808901518060060b811461347e575f80fd5b60a08a015190945061348f81612c61565b60c08a015190935063ffffffff811681146134a8575f80fd5b91506134b660e08a01613182565b9050929598509295989093965056fea2646970667358221220c60e8a398129a402b930c1344b52784b687e7de2f12ad811bbedbbc9724dd39f64736f6c63430008160033000000000000000000000000d0690557600eb8be8391d1d97346e2aab5300d5f00000000000000000000000003a520b32c04bf3beef7beb72e919cf822ed34f1