0 txs
1 call
constructor
No constructor.
functions
getLastDelegationTime
viewfunction getLastDelegationTime(uint128 accountId, uint128 poolId, address collateralType) view returns (uint256 lastDelegationTime)
getPositionCollateral
viewfunction getPositionCollateral(uint128 accountId, uint128 poolId, address collateralType) view returns (uint256 amount)
getVaultCollateral
viewfunction getVaultCollateral(uint128 poolId, address collateralType) view returns (uint256 amount, uint256 value)
delegateCollateral
nonpayablefunction delegateCollateral(uint128 accountId, uint128 poolId, address collateralType, uint256 newCollateralAmountD18, uint256 leverage)
getPosition
nonpayablefunction getPosition(uint128 accountId, uint128 poolId, address collateralType) returns (uint256 collateralAmount, uint256 collateralValue, int256 debt, uint256 collateralizationRatio)
getPositionCollateralRatio
nonpayablefunction getPositionCollateralRatio(uint128 accountId, uint128 poolId, address collateralType) returns (uint256)
getPositionDebt
nonpayablefunction getPositionDebt(uint128 accountId, uint128 poolId, address collateralType) returns (int256 debt)
getVaultCollateralRatio
nonpayablefunction getVaultCollateralRatio(uint128 poolId, address collateralType) returns (uint256)
getVaultDebt
nonpayablefunction getVaultDebt(uint128 poolId, address collateralType) returns (int256)
migrateDelegation
nonpayablefunction migrateDelegation(uint128 accountId, uint128 oldPoolId, address collateralType, uint128 newPoolId)
events
DelegationUpdated
event DelegationUpdated(uint128 indexed accountId, uint128 indexed poolId, address collateralType, uint256 amount, uint256 leverage, address indexed sender)
errors
CapacityLocked
error CapacityLocked(uint256 marketId)
CollateralDepositDisabled
error CollateralDepositDisabled(address collateralType)
EmptyDistribution
error EmptyDistribution()
EmptyRevertReason
error EmptyRevertReason()
Errors
error Errors(bytes[] errors)
FeatureUnavailable
error FeatureUnavailable(bytes32 which)
InsufficientAccountCollateral
error InsufficientAccountCollateral(uint256 amount)
InsufficientAvailableCollateral
error InsufficientAvailableCollateral(uint256 amountAvailableForDelegationD18, uint256 amountD18)
InsufficientCollateralRatio
error InsufficientCollateralRatio(uint256 collateralValue, uint256 debt, uint256 ratio, uint256 minRatio)
InsufficientDelegation
error InsufficientDelegation(uint256 minDelegation)
InsufficientVaultCollateralRatio
error InsufficientVaultCollateralRatio(uint128 poolId, address collateralType)
InvalidCollateralAmount
error InvalidCollateralAmount()
InvalidLeverage
error InvalidLeverage(uint256 leverage)
InvalidParameter
error InvalidParameter(string parameter, string reason)
MarketNotFound
error MarketNotFound(uint128 marketId)
MinDelegationTimeoutPending
error MinDelegationTimeoutPending(uint128 poolId, uint32 timeRemaining)
OverflowInt128ToUint128
error OverflowInt128ToUint128()
OverflowInt256ToInt128
error OverflowInt256ToInt128()
OverflowInt256ToUint256
error OverflowInt256ToUint256()
OverflowUint128ToInt128
error OverflowUint128ToInt128()
OverflowUint256ToInt256
error OverflowUint256ToInt256()
OverflowUint256ToUint128
error OverflowUint256ToUint128()
OverflowUint256ToUint32
error OverflowUint256ToUint32()
OverflowUint32ToInt32
error OverflowUint32ToInt32()
OverflowUint64ToInt64
error OverflowUint64ToInt64()
PermissionDenied
error PermissionDenied(uint128 accountId, bytes32 permission, address target)
PoolCollateralLimitExceeded
error PoolCollateralLimitExceeded(uint128 poolId, address collateralType, uint256 currentCollateral, uint256 maxCollateral)
PoolNotFound
error PoolNotFound(uint128 poolId)
PositionOutOfBounds
error PositionOutOfBounds()
ValueAlreadyInSet
error ValueAlreadyInSet()
ValueNotInSet
error ValueNotInSet()
creation bytecode
0x608060405234801561001057600080fd5b5061549d806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80637b0532a4116100665780637b0532a41461012a578063b7e3e68c1461013f578063dc0a538414610152578063f544d66e14610165578063fd93aa761461019857600080fd5b8063078145a8146100a35780632fb8ff24146100d057806333cc422b146100f15780633593bbd21461010457806360248c5514610117575b600080fd5b6100b66100b1366004614cc1565b6101ab565b604080519283526020830191909152015b60405180910390f35b6100e36100de366004614cc1565b6101cd565b6040519081526020016100c7565b6100e36100ff366004614cf4565b6101eb565b6100e3610112366004614cf4565b610226565b6100e3610125366004614cc1565b610252565b61013d610138366004614d37565b610267565b005b61013d61014d366004614d8c565b610565565b6100e3610160366004614cf4565b610a26565b610178610173366004614cf4565b610a3d565b6040805194855260208501939093529183015260608201526080016100c7565b6100e36101a6366004614cf4565b610a8d565b6000806101c1836101bb86610af8565b90610b54565b915091505b9250929050565b60006101e2826101dc85610af8565b90610bb4565b90505b92915050565b600061021c846101fa85610bed565b6001600160a01b03851660009081526008919091016020526040902090610c63565b90505b9392505050565b60008061023284610af8565b905061023f818487610c7f565b915061024a81610cb0565b509392505050565b60006101e28261026185610bed565b90610dfa565b6102857119195b1959d85d1950dbdb1b185d195c985b60721b610e43565b61029a856744454c454741544560c01b610e77565b5081156102ab576102ab8383610f06565b670de0b6b3a764000081146102db576040516369bb335560e01b8152600481018290526024015b60405180910390fd5b60006102e685610af8565b6001600160a01b038516600090815260089190910160205260408120915061030e8288610c63565b90508084036103305760405163fbd85bc360e01b815260040160405180910390fd5b808411156103785761034185610f53565b61035587866103508488614df6565b610f88565b610373856103638387614df6565b61036c89610af8565b9190610fd6565b6103c1565b8154600090815260038301602090815260408083206001600160801b038b1684526006019091529020546103c19088906001600160401b03166103ba89610af8565b919061109f565b6104096040518060600160405280896001600160801b03168152602001886001600160801b03168152602001876001600160a01b031681525061040388610bed565b9061124d565b505050600061041c888888888689611827565b905061042887876118fd565b818510156104b2578254600090815260038401602090815260408083206001600160801b038c1684526005019091528120549061046489610af8565b6001600160a01b0389166000908152600a91909101602052604090206001015490506104a682610494898661198c565b8361049e8c6119ab565b929190611a19565b6104af89611ab0565b50505b8254600090815260038401602090815260408083206001600160801b038c1684526006019091529020805467ffffffffffffffff1916426001600160401b03161790556104fd611b02565b604080516001600160a01b038981168252602082018990529181018790529116906001600160801b03808a1691908b16907f7b12dd38f18c0ff77ae702f6da13fbbcb28f53f807ecc7d39ee8d8b1ea8295ad9060600160405180910390a45050505050505050565b806001600160801b0316836001600160801b03160361059757604051634bab873760e11b81526004016102d290614e09565b6105b47036b4b3b930ba32a232b632b3b0ba34b7b760791b610e43565b6105c9846744454c454741544560c01b610e77565b5060006105d584610af8565b6001600160a01b03841660009081526008919091016020526040812091506105fc83610af8565b6001600160a01b03851660009081526008919091016020526040812091506106248388610c63565b905060006106328389610c63565b111561065157604051634bab873760e11b81526004016102d290614e6e565b806000036106b45760408051634bab873760e11b8152600481019190915260096044820152681bdb19141bdbdb125960ba1b606482015260806024820152600d60848201526c1b9bdd0819195b1959d85d1959609a1b60a482015260c4016102d2565b60006106cb86896106c48a610bed565b9190610c7f565b905061071a886106eb868054600090815260039091016020526040902090565b6001600160801b038b16600090815260069190910160205260409020546001600160401b03166103ba8a610af8565b610728868361036c88610af8565b61076a60405180606001604052808a6001600160801b03168152602001896001600160801b03168152602001886001600160a01b031681525061040389610bed565b5050506107af60405180606001604052808a6001600160801b03168152602001876001600160801b03168152602001886001600160a01b031681525061040387610bed565b5050506107d28689836107c190614ec7565b6107ca8b610bed565b929190611b3f565b6107e086896106c488610bed565b506107ee8888886000611bc3565b6107fb8886886001611bc3565b835460009081526003850160205260408120610826918a91670de0b6b3a7640000905b929190611c55565b61084e8883670de0b6b3a764000061081e878054600090815260039091016020526040902090565b6108618661085b89610bed565b90611ca5565b5060006108718761085b88610bed565b905061087c88611ab0565b61089a8261088a858461198c565b6108938a6119ab565b9190611d1e565b6108a9878a846107ca8a610bed565b845460009081526003808701602090815260408084206001600160801b038e168086526006918201845282862080546001600160401b03421667ffffffffffffffff1991821681179092558b548852958b01855283872091875291019092529092208054909116909117905561091f88886118fd565b61092986886118fd565b610931611b02565b604080516001600160a01b038a8116825260006020830152670de0b6b3a764000082840152915192909116916001600160801b038b811692908d16917f7b12dd38f18c0ff77ae702f6da13fbbcb28f53f807ecc7d39ee8d8b1ea8295ad9181900360600190a461099f611b02565b6001600160a01b0316866001600160801b03168a6001600160801b03167f7b12dd38f18c0ff77ae702f6da13fbbcb28f53f807ecc7d39ee8d8b1ea8295ad8a87670de0b6b3a7640000604051610a13939291906001600160a01b039390931683526020830191909152604082015260600190565b60405180910390a4505050505050505050565b600061021c8285610a3686610bed565b9190611d67565b6000806000806000610a4e87610bed565b9050610a5b81878a610c7f565b9250610a6681610cb0565b610a7181878a611db9565b9095509350610a8181878a611d67565b91505093509350935093565b6000610ac9610a9b84610af8565b6001600160a01b03841660009081526008919091016020908152604080832080548452600301909152902090565b6001600160801b038516600090815260069190910160205260409020546001600160401b031690509392505050565b600080610b0483610bed565b90506001600160801b03831615801590610b2b575080546001600160801b03848116911614155b156101e5576040516332b961eb60e01b81526001600160801b03841660048201526024016102d2565b6001600160a01b038116600090815260088301602052604081208190610b7990611e14565b9150600080610b926000610b8c876119ab565b90611e32565b91509150610b9f81611fc3565b610ba9828561198c565b925050509250929050565b6000610bc08383611fd3565b50610bca83610cb0565b6001600160a01b038216600090815260088401602052604090206101e29061213f565b60008082604051602001610c4491906040808252601b908201527f696f2e73796e7468657469782e73796e7468657469782e506f6f6c000000000060608201526001600160801b0391909116602082015260800190565b60408051601f1981840301815291905280516020909101209392505050565b8154600090815260038301602052604081206101e2908361215a565b6000610c8b8484611fd3565b506001600160a01b0383166000908152600885016020526040902061021c9083612172565b60048101546001600160801b03166000819003610ccb575050565b600080610cd78461218e565b915091506000610ce56121da565b54905060005b6005860154811015610df2576000866005018281548110610d0e57610d0e614ee3565b60009182526020822060029091020180549092506001600160801b03600160801b909104169087610d3f8389614ef9565b610d499190614f26565b8354909150600090610d63906001600160801b0316612253565b9050600080826010015411610d785786610d7e565b81601001545b8254909150600090610d9e906001600160801b031683600f8c900b6122aa565b6001870154909150600f0b808212610db65780610db8565b815b87548e54919350610dd7916001600160801b039182169116848861231c565b50505050505050508080610dea90614f3a565b915050610ceb565b505050505050565b600080610e078484610bb4565b90506000610e158585610b54565b91505060008213610e27576000610e3a565b610e3a610e338361236d565b8290612394565b95945050505050565b610e5481610e4f611b02565b6123a9565b610e7457604051637e023fb760e01b8152600481018290526024016102d2565b50565b6000610e82836123f7565b9050610e9b82610e90611b02565b60018401919061244e565b610ee3578282610ea9611b02565b60405162ef2a9160e11b81526001600160801b03909316600484015260248301919091526001600160a01b031660448201526064016102d2565b60058101805467ffffffffffffffff1916426001600160401b03161790556101e5565b6000610f11836119ab565b60068101549091506000819003610f29575060038101545b80831015610f4d57604051634918e8e360e11b8152600481018290526024016102d2565b50505050565b610f5c816119ab565b5460ff16610e74576040516318213f3d60e31b81526001600160a01b03821660048201526024016102d2565b80610f92846123f7565b6001600160a01b038416600090815260069190910160205260409020541015610fd1576040516313232e7760e21b8152600481018290526024016102d2565b505050565b6001600160a01b0382166000908152600a8401602090815260408083205460088701909252822090919061100990611e14565b600b86015490915060ff16801561101e575081155b8061103c575060008211801561103c57508161103a8483614f53565b115b156110985784546001600160801b0316846110578584614f53565b604051631903c6d560e11b81526001600160801b0390931660048401526001600160a01b0390911660248301526044820152606481018390526084016102d2565b5050505050565b60006110aa8461248b565b90506110bc63ffffffff821683614f66565b6001600160401b03164210801561115e57508354604080517f6163636f756e744f766572726964654d696e44656c656761746554696d65000060208201526001600160801b03808716928201929092529116606082015260019061113e906080015b6040516020818303038152906040528051906020012063bbf81e0061252e565b611151906001600160401b038516614f53565b61115b9190614df6565b42105b80156111e9575060016111c97f73656e6465724f766572726964654d696e44656c656761746554696d65000000611193611b02565b87546040805160208101949094526001600160a01b03909216918301919091526001600160801b0316606082015260800161111e565b6111dc906001600160401b038516614f53565b6111e69190614df6565b42105b15610f4d5783546001600160801b03164261120a63ffffffff841685614f66565b6001600160401b031661121d9190614df6565b604051637ec5c33560e11b81526001600160801b03909216600483015263ffffffff1660248201526044016102d2565b60608060008061125e86600c015490565b6001600160401b0381111561127557611275614f86565b60405190808252806020026020018201604052801561129e578160200160208202803683370190505b5060408681015160068901546001600160a01b03909116600081815260078b0160205292832054939450926001600160801b03918216929116905b600c8a01548110156115be5760006112ff6112f5836001614f53565b600c8d019061253a565b6000818152600e8d01602052604090208054919250906001600160a01b03166113295750506115ac565b61134361133e611339838861259f565b61236d565b61291a565b600182018054601090611367908490600160801b90046001600160801b0316614f9c565b82546101009290920a6001600160801b03818102199093169183160217909155600088815260028401602052604081205460018501549193506113c9926113b99291811691600160801b900416614fbc565b86906001600160801b031661198c565b905060006114118e60080160008f604001516001600160a01b03166001600160a01b031681526020019081526020016000208054600090815260039091016020526040902090565b6001908101549084015460008a8152600286016020526040902080546001600160801b03600160801b90930483166001600160801b03199091161790558a519116915084908a908790811061146857611468614ee3565b602090810291909101015281158061147e575080155b1561148c57505050506115ac565b8260000160009054906101000a90046001600160a01b03168e60080160008f604001516001600160a01b03166001600160a01b03168152602001908152602001600020600401600086815260200190815260200160002060000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061152061133e828461239490919063ffffffff16565b8e60080160008f604001516001600160a01b03166001600160a01b03168152602001908152602001600020600401600086815260200190815260200160002060010160108282829054906101000a90046001600160801b03166115839190614f9c565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550505050505b806115b681614f3a565b9150506112d9565b505050506040858101516001600160a01b031660009081526008880160205290812081906115ed908885612944565b915091506000806116518961162e8c60080160008d604001516001600160a01b03166001600160a01b0316815260200190815260200160002060050161299d565b6040808d01516001600160a01b0316600090815260088f01602052209190612944565b91509150815184516116639190614f53565b6001600160401b0381111561167a5761167a614f86565b6040519080825280602002602001820160405280156116a3578160200160208202803683370190505b509750805183516116b49190614f53565b6001600160401b038111156116cb576116cb614f86565b6040519080825280602002602001820160405280156116f4578160200160208202803683370190505b50965060005b8851811015611780578451811061173657828551826117199190614df6565b8151811061172957611729614ee3565b6020026020010151611751565b84818151811061174857611748614ee3565b60200260200101515b89828151811061176357611763614ee3565b60209081029190910101528061177881614f3a565b9150506116fa565b5060005b875181101561181757835181106117c057818451826117a39190614df6565b815181106117b3576117b3614ee3565b60200260200101516117db565b8381815181106117d2576117d2614ee3565b60200260200101515b8882815181106117ed576117ed614ee3565b6001600160a01b03909216602092830291909101909101528061180f81614f3a565b915050611784565b5050915193505050509250925092565b60008061183387610bed565b905061184081878a610c7f565b50600061184c896123f7565b6001600160a01b03881660009081526006919091016020526040902090508486111561188b5761188661187f8688614df6565b82906129f9565b61189f565b61189f6118988787614df6565b8290612a45565b6118ae89898960008a11611bc3565b6001600160a01b038716600090815260088301602090815260408083208054845260030190915290206118e6908a908890879061081e565b6118f08288611ca5565b9998505050505050505050565b600061190883610bed565b905060006119168284610bb4565b905060006119248385610b54565b915050600082138015611954575061193b846119ab565b6002015461195261194b8461236d565b8390612394565b105b156110985760405163f1b31b2760e01b81526001600160801b03861660048201526001600160a01b03851660248201526044016102d2565b6000670de0b6b3a76400006119a18385614ef9565b6101e29190614f26565b60008082604051602001610c4491906040808252602e908201527f696f2e73796e7468657469782e73796e7468657469782e436f6c6c617465726160608201526d3621b7b73334b3bab930ba34b7b760911b60808201526001600160a01b0391909116602082015260a00190565b600081856001015411611a2c5781611a32565b84600101545b9050600084138015611a5d5750821580611a5d575080611a5b611a548661236d565b8590612394565b105b156110985782611a6c8561236d565b611a7f611a788761236d565b8690612394565b604051636119eca760e01b8152600481019390935260248301919091526044820152606481018290526084016102d2565b6000611abb82610bed565b90506000611ac882612a59565b80549091506001600160801b031615610fd15780546040516391b9419f60e01b81526001600160801b0390911660048201526024016102d2565b600073e2c5658cc5c448b48141168f3e475df8f65a1e3e33148015611b28575060143610155b15611b3a575060131936013560601c90565b503390565b611b4881612ab8565b6004850154611b619190600160801b9004600f0b614fdc565b6004850180546001600160801b03928316600160801b0292169190911790556001600160a01b038316600090815260088501602052604090206110989083908390611bbc908054600090815260039091016020526040902090565b9190612af4565b6000611bce856123f7565b6001600160a01b0384166000908152600691909101602052604081209150611c02600183016001600160801b038716612b7c565b9050828015611c0f575080155b15611c2f57611c2a600183016001600160801b038716612b94565b610df2565b82158015611c3a5750805b15610df257610df2600183016001600160801b038716612ba2565b6001600160801b038316611c698585612bac565b50611c78600386018285612c20565b506000818152600486016020526040902054610df2908290611c9a908561198c565b600188019190612cae565b6000806000611cbf670de0b6b3a7640000610b8c866119ab565b91509150611ccc81611fc3565b6001600160a01b03841660009081526008860160205260408120611cf09084612d39565b509050611d0a600687016001600160a01b03871683612cae565b50611d1486610cb0565b5090949350505050565b6002830154600083138015611d4c5750811580611d4c575080611d4a611d438561236d565b8490612394565b105b15610f4d5781611d5b8461236d565b611a7f611a548661236d565b600080611d75858585610c7f565b9050611d8085610cb0565b60008113611d935760001991505061021f565b6000611da0868686611db9565b915050611daf610e338361236d565b9695505050505050565b6001600160a01b038216600090815260088401602052604081208190611ddf9084610c63565b9150600080611df184610b8c886119ab565b91509150611dfe81611fc3565b611e08828561198c565b92505050935093915050565b8054600090815260038201602052604081206101e590600301612d78565b600060606000611e40612dc3565b6040805160208101825291546001600160a01b03168252805160018082528183019092529192506000919081602001602082028036833750506040805160018082528183019092529293506000929150602080830190803683370190505090506373697a6560e01b82600081518110611ebb57611ebb614ee3565b6020026020010181815250508560001b81600081518110611ede57611ede614ee3565b60209081029190910101528251600480890154604051636d51285f60e11b81526001600160a01b039093169263daa250be92611f1f92918791879101615044565b608060405180830381865afa925050508015611f58575060408051601f3d908101601f19168201909252611f559181019061506f565b60015b611f9b573d808015611f86576040519150601f19603f3d011682016040523d82523d6000602084013e611f8b565b606091505b506000955093506101c692505050565b8051611fa69061236d565b6040518060200160405280600081525095509550505050506101c6565b805115610e7457610e7481612e14565b815460058301546000916001600160801b03169082906001600160401b0381111561200057612000614f86565b60405190808252806020026020018201604052801561203357816020015b606081526020019060019003908161201e5790505b50905060005b60058601548110156120d857600061207e87600501838154811061205f5761205f614ee3565b60009182526020909120600290910201546001600160801b0316612253565b905061208f816402540be3ff612e3f565b90508383815181106120a3576120a3614ee3565b60209081029190910101526120b88185612f18565b6120c290866150e2565b94505080806120d090614f3a565b915050612039565b506120e281612f9d565b6120ec85846130e6565b6001600160a01b03841615612137576001600160a01b0384166121356121156006880183613134565b6001600160a01b038716600090815260088901602052604090209061315c565b505b505092915050565b8054600090815260038201602052604081206101e590613178565b60006101e2600384016001600160801b03841661319e565b8154600090815260038301602052604081206101e29083612bac565b60068101546001600160801b03166000816121aa5760006121d3565b6121d36121ce6121b9846131ec565b6004860154600160801b9004600f0b90613216565b612ab8565b9050915091565b600080604051602001612235906020808252602e908201527f696f2e73796e7468657469782e73796e7468657469782e53797374656d506f6f60408201526d3621b7b73334b3bab930ba34b7b760911b606082015260800190565b60408051601f19818403018152919052805160209091012092915050565b60008082604051602001610c4491906040808252601d908201527f696f2e73796e7468657469782e73796e7468657469782e4d61726b657400000060608201526001600160801b0391909116602082015260800190565b6000806122b685612253565b905060006122c682600a01613235565b9050600085156122e7576122e2670de0b6b3a764000087612394565b6122f1565b670de0b6b3a76400005b9050846122fd826131ec565b61230790846150e2565b6123119190615102565b979650505050505050565b60008061232886612253565b60018101549091506001600160a01b03166123615760405163784060f560e11b81526001600160801b03871660048201526024016102d2565b611daf8186858761324f565b6000808212156123905760405163029f024d60e31b815260040160405180910390fd5b5090565b6000816119a1670de0b6b3a764000085614ef9565b6000806123b58461348e565b6001810154909150610100900460ff16156123d45760009150506101e5565b600181015460ff16806123ef57506123ef60028201846134e7565b949350505050565b60008082604051602001610c4491906040808252601e908201527f696f2e73796e7468657469782e73796e7468657469782e4163636f756e74000060608201526001600160801b0391909116602082015260800190565b82546000906001600160a01b038381169116148061247a575061247a846420a226a4a760d91b84613509565b8061021c575061021c848484613509565b6000805b60058301548110156124e35760006124b584600501838154811061205f5761205f614ee3565b600f015463ffffffff908116915083168111156124d0578092505b50806124db81614f3a565b91505061248f565b5060006125137f7365744d61726b65744d696e44656c656761746554696d655f6d61780000000062278d0061252e565b90508163ffffffff168163ffffffff16106101e55750919050565b60006101e2838361354e565b60008115806125495750825482115b156125675760405163eb9bc44760e01b815260040160405180910390fd5b6000612574600184614df6565b905083600001818154811061258b5761258b614ee3565b906000526020600020015491505092915050565b6003820154600090600f0b15806125b4575081155b156125c1575060006101e5565b60038301544290600090600160801b90046001600160401b03168210156125ed576000925050506101e5565b6003850154600160c01b900463ffffffff1615801561262c57506003850154600160801b81046001600160401b0316600160e01b90910463ffffffff16105b156126535761264c61263d856131ec565b6003870154600f0b5b90613216565b9050612822565b600385015461267f90600160c01b810463ffffffff1690600160801b90046001600160401b0316614f66565b6001600160401b031685600301601c9054906101000a900463ffffffff1663ffffffff161015612822576003850154600090600160801b81046001600160401b0316600160e01b90910463ffffffff16106127545760038601546126ef90600160c01b900463ffffffff166135a4565b60038781015491900b906127329061272490600160801b81046001600160401b031690600160e01b900463ffffffff16615122565b6001600160401b03166135d1565b60038801546127479160070b90600f0b615142565b6127519190615172565b90505b6003860154600f81900b9061278690600160c01b810463ffffffff1690600160801b90046001600160401b0316614f66565b6001600160401b03168410156127fd5760038701546127b190600160c01b900463ffffffff166135a4565b60038881015491900b906127de906127d990600160801b90046001600160401b031687614df6565b6131ec565b60038901546127f09190600f0b615142565b6127fa9190615172565b90505b612813612809876131ec565b6126468484615102565b61281d90846150e2565b925050505b600385015461284e90600160c01b810463ffffffff1690600160801b90046001600160401b0316614f66565b6001600160401b031682106128e2576004850180546003870180546bffffffffffffffffffffffff60801b1916600160801b8084046001600160401b03160263ffffffff60c01b191617600160c01b80840463ffffffff1602176001600160801b0319166001600160801b0383161790556001600160e01b03191690556128d5858561259f565b6128df90826150e2565b90505b6128eb82613605565b60038601805463ffffffff92909216600160e01b026001600160e01b0390921691909117905591505092915050565b60006001600160801b0382111561239057604051637d5864af60e11b815260040160405180910390fd5b825460009081526003840160209081526040808320600181015486516001600160801b039081168652600290920190935292205460609283928116911661298e878787858561362c565b9350935050505b935093915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156129ed57602002820191906000526020600020905b8154815260200190600101908083116129d9575b50505050509050919050565b8154811115612a28578154604051635af5842d60e11b81526004810191909152602481018290526044016102d2565b80826000016000828254612a3c9190614df6565b90915550505050565b80826000016000828254612a3c9190614f53565b6000805b6005830154811015612aad576000612a8384600501838154811061205f5761205f614ee3565b9050612a8e816137cf565b15612a9a579392505050565b5080612aa581614f3a565b915050612a5d565b506101e56000612253565b600060016001607f1b0319821280612ad6575060016001607f1b0382135b1561239057604051634022cc0360e01b815260040160405180910390fd5b6001600160801b03821660009081526005840160205260408120805490839083612b1e83856150e2565b90915550612b2d905083612ab8565b85548690601090612b49908490600160801b9004600f0b614fdc565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055508281610e3a91906150e2565b600081815260018301602052604081205415156101e2565b612b9e8282613821565b5050565b612b9e828261387a565b600080612bc5600185016001600160801b038516613134565b9050612bd2848483612af4565b9150612bdd81612ab8565b84548590600090612bf2908490600f0b6151a0565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505092915050565b6000612c2c8483613979565b60008481526001860160205260409020548554919250612c6491612c5a9084906001600160801b0316614f53565b61133e9190614df6565b84546001600160801b0319166001600160801b0391909116178455612c888161291a565b6000938452600190940160205260409092206001600160801b0393909316909255919050565b6000612cba84846139ca565b60008481526001860160205260408120919250612cd68461291a565b825487549192506001600160801b0390811691612cf591849116614f9c565b612cff9190614fbc565b86546001600160801b03199081166001600160801b03928316178855835416908216178255612d2f8683866139e5565b5050509392505050565b8154600090815260038301602052604081208190612d6384612d5d83600301612d78565b9061198c565b9250612d6e81613178565b9150509250929050565b80546000906b033b2e3c9fd0803ce8000000906001600160801b03811690612daf90611339908490600160801b9004600f0b6150e2565b612db99190614ef9565b6101e59190614f26565b6000806040516020016122359060208082526024908201527f696f2e73796e7468657469782e73796e7468657469782e4f7261636c654d616e60408201526330b3b2b960e11b606082015260800190565b80516000819003612e385760405163123b260360e01b815260040160405180910390fd5b8060208301fd5b60006060600080612e4f86613a2c565b8051919350915015612e68576000935091506101c69050565b6003860154600090612e7d90600f0b84615102565b90506000612e8c888389613b03565b91505080158015612ea95750600a8801546001600160801b031615155b15612efa576003880154612ece90612ec490600f0b86615102565b600a8a0190613edd565b612ed784612ab8565b6003890180546001600160801b0319166001600160801b03929092169190911790555b60408051602081019091526000815290159890975095505050505050565b600080612f31600a85016001600160801b038516613134565b6001600160801b038085166000908152600c870160205260409020549192508291612f6491600160801b90910416613f9a565b600f0b612f7191906150e2565b6001600160801b039384166000908152600c909501602052604090942080549093169092555090919050565b6000805b8251811015612fed576000838281518110612fbe57612fbe614ee3565b6020026020010151511115612fdb5781612fd781614f3a565b9250505b80612fe581614f3a565b915050612fa1565b508015612b9e576000816001600160401b0381111561300e5761300e614f86565b60405190808252806020026020018201604052801561304157816020015b606081526020019060019003908161302c5790505b5090506000805b84518110156130ca57600085828151811061306557613065614ee3565b60200260200101515111156130b85784818151811061308657613086614ee3565b602002602001015183838061309a90614f3a565b9450815181106130ac576130ac614ee3565b60200260200101819052505b806130c281614f3a565b915050613048565b5081604051630b42fd1760e01b81526004016102d291906151cd565b6130ef81612ab8565b60048301546131089190600160801b9004600f0b614fdc565b6004830180546001600160801b03928316600160801b029216919091179055612b9e6006830182613edd565b6000818152600183016020526040812080546123ef90859083906001600160801b03166139e5565b815460009081526003830160205260409020612b9e9082613fcd565b805460009061319590600160801b8104600f90810b91900b614fdc565b600f0b92915050565b81546000906001600160801b03168082036131bd5760009150506101e5565b806131c785612d78565b60008581526001870160205260409020546131e29190614ef9565b6123ef9190614f26565b60006001600160ff1b038211156123905760405163677c430560e11b815260040160405180910390fd5b60008161322b670de0b6b3a764000085615142565b6101e29190615172565b80546000906101e590600160801b9004600f0b6009614023565b60008061325c868661403d565b9050600061326a8787614069565b90506132758561291a565b6001600160801b038781166000908152600c8a016020526040812080546001600160801b031916939092169290921790556132b56121ce600a8a01613235565b9050856000036132e0576132cc600489018861408f565b506132da600789018861408f565b50613346565b80600f0b85121561331557600095506132fc600489018861408f565b506132da8761330a87612ab8565b60078b0191906140c9565b6133368761332287612ab8565b61332b9061525f565b60048b0191906140c9565b50613344600789018861408f565b505b600061335f600a8a016001600160801b038a1689612cae565b6001600160801b03808a166000908152600c8c016020526040902054919250829161339291600160801b90910416613f9a565b600f0b61339f91906150e2565b6001600160801b03808a166000908152600c8c0160205260409020805490911690559450600f82900b861315613423576133dd6121ce8a898961418d565b60028a0180546010906133fb908490600160801b9004600f0b614fdc565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505b81600f0b8313156134825761343c6121ce8a868661418d565b60028a01805460109061345a908490600160801b9004600f0b6151a0565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505b50505050949350505050565b6040805160208101829052602560608201527f696f2e73796e7468657469782e636f72652d6d6f64756c65732e46656174757260808201526465466c616760d81b60a0820152908101829052600090819060c001610c44565b6001600160a01b038116600090815260018301602052604081205415156101e2565b60006001600160a01b0382161580159061021c57506001600160a01b03821660009081526001858101602090815260408084208785529092019052902054151561021c565b6040805160208082018390526006606083015265436f6e66696760d01b6080808401919091528284018690528351808403909101815260a090920190925280519101208054908161359d578291505b5092915050565b6000637fffffff63ffffffff8316111561239057604051630299decb60e01b815260040160405180910390fd5b6000677fffffffffffffff6001600160401b038316111561239057604051633340f63360e11b815260040160405180910390fd5b600063ffffffff821115612390576040516334bee0b960e01b815260040160405180910390fd5b60608084516001600160401b0381111561364857613648614f86565b604051908082528060200260200182016040528015613671578160200160208202803683370190505b50915084516001600160401b0381111561368d5761368d614f86565b6040519080825280602002602001820160405280156136b6578160200160208202803683370190505b50905060005b85518110156137c4578581815181106136d7576136d7614ee3565b60200260200101516000801b03156137b257600088600401600088848151811061370357613703614ee3565b602090810291909101810151825281019190915260400160002080549091506001600160a01b0316806137375750506137b2565b8084848151811061374a5761374a614ee3565b60200260200101906001600160a01b031690816001600160a01b0316815250506137918a8a8a868151811061378157613781614ee3565b6020026020010151848b8b6141b8565b8584815181106137a3576137a3614ee3565b60200260200101818152505050505b806137bc81614f3a565b9150506136bc565b509550959350505050565b60008060006137dd846143a2565b915091506137ea81611fc3565b6137f66127d98561448c565b6137ff836131ec565b60028601546138189190600160801b9004600f0b6150e2565b12949350505050565b6000818152600183016020526040902054156138505760405163682ad32d60e01b815260040160405180910390fd5b81546001818101845560008481526020808220909301849055845493815293019052604090912055565b6000818152600183016020526040812054908190036138ac5760405163b3dbc29360e01b815260040160405180910390fd5b60006138b9600183614df6565b84549091506000906138cd90600190614df6565b90508082146139325760008560000182815481106138ed576138ed614ee3565b906000526020600020015490508086600001848154811061391057613910614ee3565b6000918252602080832090910192909255918252600187019052604090208390555b845485908061394357613943615285565b60019003818190600052602060002001600090559055846001016000858152602001908152602001600020600090555050505050565b81546000906139ab906139a3906b033b2e3c9fd0803ce800000090600160801b9004600f0b614fdc565b600f0b614506565b6001600160801b03166119a16b033b2e3c9fd0803ce800000084614ef9565b600081815260018301602052604081206101e290849061452c565b60006139f1848461452c565b90508115613a0a578354600160801b9004600f0b613a0d565b60005b83546001600160801b03918216600160801b0291161790925550919050565b60006060600080613a3c85614597565b91509150600080613a4c876143a2565b91509150600083511180613a61575060008151115b15613ac957604080518082018252848152602081018390529051630b42fd1760e01b91613a909160240161529b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529450613afa565b613ad2826131ec565b6002880154600f0b613ae3866131ec565b613aed91906150e2565b613af79190615102565b95505b50505050915091565b60008083600003613b1957506000905080612995565b600080600080871315613b39575060019150506004860160078701613b49565b5060001991505060078601600487015b60005b86811015613e8557613b5d83614651565b15613e85576000613b6d84614674565b90506000613b7b888b615102565b138015613b935750600a8a01546001600160801b0316155b80613be55750600a8a01546001600160801b031615801590613be55750613bc38a613bbe898c615102565b614693565b85600f0b613bd19190615142565b8160200151613bdf9061525f565b600f0b12155b15613bf05750613e85565b613bfa84846146ea565b600a8a01546001600160801b031615613c84576000613c63613c1e8c600a01613235565b6020840151613c2c8961525f565b613c369190615318565b600f0b613c439190615102565b600a8d0154613c5a906001600160801b0316613f9a565b600f0b90614715565b9050613c72600a8c0182613edd565b613c7c81896150e2565b975050613cd4565b613cb46121ce6009613cae846020015189613c9e9061525f565b613ca89190615318565b600f0b90565b9061472a565b600a8b0180546001600160801b03928316600160801b0292169190911790555b6000891315613dd65780516001600160801b039081166000908152600b8c01602052604090205416613d485760405162461bcd60e51b815260206004820152601e60248201527f6e6f20736861726573206265666f7265206163746f722072656d6f76616c000060448201526064016102d2565b8051600090613d6a90611339906001600160801b0316600a8e01906000612cae565b9050613d758161291a565b82516001600160801b039081166000908152600c8e016020526040902080549091601091613dac918591600160801b900416614f9c565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555050613e72565b80516001600160801b039081166000908152600b8c0160205260409020541615613e425760405162461bcd60e51b815260206004820152601b60248201527f6163746f722068617320736861726573206265666f726520616464000000000060448201526064016102d2565b80516001600160801b039081166000818152600c8d016020526040902054613e7092600a8e01929116612cae565b505b5080613e7d81614f3a565b915050613b4c565b613e8e86612ab8565b60038a018054600090613ea5908490600f0b614fdc565b92506101000a8154816001600160801b030219169083600f0b6001600160801b03160217905550868114945050505050935093915050565b80600003613ee9575050565b81546001600160801b03166000819003613f1657604051633b182f5560e01b815260040160405180910390fd5b6000613f2e6b033b2e3c9fd0803ce800000084615142565b90506000613f3b836131ec565b613f459083615172565b9050613f5081612ab8565b85548690601090613f6c908490600160801b9004600f0b614fdc565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505050505050565b600060016001607f1b036001600160801b038316111561239057604051634593782f60e11b815260040160405180910390fd5b613fda6001830182613edd565b613fe381612ab8565b82548390600090613ff8908490600f0b614fdc565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505050565b60006140336127d983600a61541c565b6101e29084615172565b60006101e26001600160801b0383166000908152600b850160205260409020546001600160801b031690565b60006140786004840183614744565b602001516140859061525f565b600f0b9392505050565b60408051808201909152600080825260208201526001600160801b03821660009081526002840160205260409020546101e290849061477e565b604080518082019091526000808252602082015260018401546000036140f2576140f28461490f565b6040805180820190915260008082526020820152614110858561408f565b5084546001600160801b031685600061412883615428565b82546101009290920a6001600160801b03818102199093169183160217909155600187810180548201808255600091909152604080518082019091529288168352600f87900b602084015291935061021c92508791849161418891614df6565b61495f565b6000806141a961419f86600a01613235565b6113399085615102565b9050610e3a6127d9828661198c565b60008481526004878101602090815260408084208951928a01518a8301519251639a99916f60e01b81526001600160801b03948516958101959095529290921660248401526001600160a01b03908116604484015260648301859052909190861690639a99916f90608401600060405180830381600087803b15801561423d57600080fd5b505af1158015614251573d6000803e3d6000fd5b5050505061426e61133e611339868461259f90919063ffffffff16565b600182018054601090614292908490600160801b90046001600160801b0316614f9c565b82546101009290920a6001600160801b0381810219909316918316021790915588518116600090815260028401602052604090205460018401546142f9935061133e926142e992811691600160801b900416614fbc565b85906001600160801b031661198c565b87516001600160801b039081166000908152600284016020526040902080549091601091614330918591600160801b900416614f9c565b82546101009290920a6001600160801b038181021990931691831602179091556001830154895182166000908152600290940160205260408085208054600160801b9384900485166001600160801b031990911617905599518216845298909220549790970416979650505050505050565b600060606000805b600d85015481101561448357600085600d0182815481106143cd576143cd614ee3565b600091825260208083206040805180820190915260029093020180546001600160a01b03168084526001909101549183019190915290925061440e906119ab565b90508160200151600003614423575050614471565b600080614434838560200151611e32565b8051919350915015614450576000999098509650505050505050565b602084015161446090839061198c565b61446a9087614f53565b9550505050505b8061447b81614f3a565b9150506143aa565b50939092509050565b600181015481546040516257f3c960e91b81526001600160801b0390911660048201526000916001600160a01b03169063afe7920090602401602060405180830381865afa1580156144e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e5919061544e565b60008082600f0b12156123905760405163144ec41160e21b815260040160405180910390fd5b80548254600091829161455391600160801b90819004600f90810b9291909104900b6151a0565b8354600f9190910b9150600090614572906001600160801b0316613f9a565b61457f90600f0b83615142565b9050610e3a6b033b2e3c9fd0803ce800000082615172565b6001810154815460405163bcec0d0f60e01b81526001600160801b0390911660048201526000916060916001600160a01b039091169063bcec0d0f90602401602060405180830381865afa92505050801561460f575060408051601f3d908101601f1916820190925261460c9181019061544e565b60015b61464a573d80801561463d576040519150601f19603f3d011682016040523d82523d6000602084013e614642565b606091505b509050915091565b9150915091565b60018101546000906146645760006101e5565b6001828101546101e59190614df6565b60408051808201909152600080825260208201526101e5826001614a2a565b600a8201546000906001600160801b03166146af5760006146d4565b600a8301546146d4906146ca906001600160801b0316613f9a565b8390600f0b613216565b6146e084600a01613235565b6101e291906150e2565b60006146f583614ab3565b9050610f4d8160000151826020015161470d9061525f565b8491906140c9565b6000670de0b6b3a764000061322b8385615142565b600061473a6127d983600a61541c565b6101e29084615142565b60408051808201909152600080825260208201526001600160801b03821660009081526002840160205260409020546101e2908490614a2a565b60408051808201909152600080825260208201526001830154821015806147a3575081155b156147c2575060408051808201909152600080825260208201526101e5565b60008360010183815481106147d9576147d9614ee3565b6000918252602080832060408051808201825293909101546001600160801b038116808552600160801b909104600f0b84840152845260028801909152822082905560018087018054929450916148309190614df6565b8154811061484057614840614ee3565b6000918252602091829020604080518082019091529101546001600160801b0381168252600160801b9004600f0b91810191909152600186018054919250908061488c5761488c615285565b600082815260208120820160001990810191909155019055600185015484101561024a576148bb85828661495f565b61024a858660010186815481106148d4576148d4614ee3565b6000918252602091829020604080518082019091529101546001600160801b0381168252600160801b9004600f0b9181019190915286614ad2565b6001810154600003610e7457604080518082019091526000808252602080830182815260019485018054958601815583529120915190516001600160801b03908116600160801b02911617910155565b60018114806149ac575060018301614978600283614f26565b8154811061498857614988614ee3565b6000918252602091829020015490830151600160801b909104600f90810b91900b13155b156149bc57610fd1838383614c33565b614a1a83600181016149cf600285614f26565b815481106149df576149df614ee3565b6000918252602091829020604080518082019091529101546001600160801b0381168252600160801b9004600f0b9181019190915283614c33565b610fd18383614188600285614f26565b604080518082019091526000808252602082015260018301548210614a625760408051808201909152600080825260208201526101e2565b826001018281548110614a7757614a77614ee3565b6000918252602091829020604080518082019091529101546001600160801b0381168252600160801b9004600f0b918101919091529392505050565b60408051808201909152600080825260208201526101e582600161477e565b60018301546000614ae4836002614ef9565b9050808211614afd57614af8858585614c33565b611098565b6000856001018281548110614b1457614b14614ee3565b6000918252602091829020604080518082019091529101546001600160801b0381168252600160801b9004600f0b918101919091529050614b56826001614f53565b83118015614ba057508060200151600f0b86600101836001614b789190614f53565b81548110614b8857614b88614ee3565b600091825260209091200154600160801b9004600f0b135b15614bfd5760018601614bb283614f3a565b92508281548110614bc557614bc5614ee3565b6000918252602091829020604080518082019091529101546001600160801b0381168252600160801b9004600f0b9181019190915290505b8460200151600f0b8160200151600f0b13614c1d57611c2a868686614c33565b614c28868286614c33565b610df2868684614ad2565b81836001018281548110614c4957614c49614ee3565b600091825260208083208451948201516001600160801b03908116600160801b0295811695909517920191909155935190911681526002909301909152604090912055565b80356001600160801b0381168114614ca557600080fd5b919050565b80356001600160a01b0381168114614ca557600080fd5b60008060408385031215614cd457600080fd5b614cdd83614c8e565b9150614ceb60208401614caa565b90509250929050565b600080600060608486031215614d0957600080fd5b614d1284614c8e565b9250614d2060208501614c8e565b9150614d2e60408501614caa565b90509250925092565b600080600080600060a08688031215614d4f57600080fd5b614d5886614c8e565b9450614d6660208701614c8e565b9350614d7460408701614caa565b94979396509394606081013594506080013592915050565b60008060008060808587031215614da257600080fd5b614dab85614c8e565b9350614db960208601614c8e565b9250614dc760408601614caa565b9150614dd560608601614c8e565b905092959194509250565b634e487b7160e01b600052601160045260246000fd5b818103818111156101e5576101e5614de0565b604081526000614e326040830160098152681b995dd41bdbdb125960ba1b602082015260400190565b828103602093840152601a81527f6d757374206469666665722066726f6d206f6c64506f6f6c4964000000000000928101929092525060400190565b604081526000614e976040830160098152681b995dd41bdbdb125960ba1b602082015260400190565b8281036020938401526011815270185b1c9958591e4819195b1959d85d1959607a1b928101929092525060400190565b6000600160ff1b8201614edc57614edc614de0565b5060000390565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176101e5576101e5614de0565b634e487b7160e01b600052601260045260246000fd5b600082614f3557614f35614f10565b500490565b600060018201614f4c57614f4c614de0565b5060010190565b808201808211156101e5576101e5614de0565b6001600160401b0381811683821601908082111561359d5761359d614de0565b634e487b7160e01b600052604160045260246000fd5b6001600160801b0381811683821601908082111561359d5761359d614de0565b6001600160801b0382811682821603908082111561359d5761359d614de0565b600f81810b9083900b0160016001607f1b03811360016001607f1b0319821217156101e5576101e5614de0565b600081518084526020808501945080840160005b838110156150395781518752958201959082019060010161501d565b509495945050505050565b83815260606020820152600061505d6060830185615009565b8281036040840152611daf8185615009565b60006080828403121561508157600080fd5b604051608081018181106001600160401b03821117156150b157634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b808201828112600083128015821682158216171561213757612137614de0565b818103600083128015838313168383128216171561359d5761359d614de0565b6001600160401b0382811682821603908082111561359d5761359d614de0565b80820260008212600160ff1b8414161561515e5761515e614de0565b81810583148215176101e5576101e5614de0565b60008261518157615181614f10565b600160ff1b82146000198414161561519b5761519b614de0565b500590565b600f82810b9082900b0360016001607f1b0319811260016001607f1b03821317156101e5576101e5614de0565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b8381101561525157888603603f1901855282518051808852835b8181101561522a578281018a01518982018b0152890161520f565b508781018901849052601f01601f19169096018701955093860193918601916001016151f5565b509398975050505050505050565b600081600f0b60016001607f1b0319810361527c5761527c614de0565b60000392915050565b634e487b7160e01b600052603160045260246000fd5b6020808252600090606083018382018584805b600281101561530b57601f198089870301855283518051808852845b818110156152e5578281018a01518982018b015289016152ca565b508781018901859052601f019091169095018601945092850192918501916001016152ae565b5092979650505050505050565b600082600f0b82600f0b0280600f0b915080821461359d5761359d614de0565b600181815b8085111561537357816000190482111561535957615359614de0565b8085161561536657918102915b93841c939080029061533d565b509250929050565b60008261538a575060016101e5565b81615397575060006101e5565b81600181146153ad57600281146153b7576153d3565b60019150506101e5565b60ff8411156153c8576153c8614de0565b50506001821b6101e5565b5060208310610133831016604e8410600b84101617156153f6575081810a6101e5565b6154008383615338565b806000190482111561541457615414614de0565b029392505050565b60006101e2838361537b565b60006001600160801b0380831681810361544457615444614de0565b6001019392505050565b60006020828403121561546057600080fd5b505191905056fea26469706673582212201807c77e53075f62f0d668232a0a8029bafc177f546b3ab2dd7691e01a73f17764736f6c63430008110033