0 txs
47.8k calls
constructor
No constructor.
functions
brokers
viewfunction brokers(address broker) view returns (bool)
cancelCoolDown
viewfunction cancelCoolDown() view returns (uint32)
getOrder
viewfunction getOrder(uint64 orderId) view returns (bytes32[3], bool)
getOrderCount
viewfunction getOrderCount() view returns (uint256)
getOrders
viewfunction getOrders(uint256 begin, uint256 end) view returns (bytes32[3][] orderArray, uint256 totalCount)
isLiquidityOrderPaused
viewfunction isLiquidityOrderPaused() view returns (bool)
isPositionOrderPaused
viewfunction isPositionOrderPaused() view returns (bool)
liquidityLockPeriod
viewfunction liquidityLockPeriod() view returns (uint32)
maintainer
viewfunction maintainer() view returns (address)
marketOrderTimeout
viewfunction marketOrderTimeout() view returns (uint32)
maxLimitOrderTimeout
viewfunction maxLimitOrderTimeout() view returns (uint32)
nextOrderId
viewfunction nextOrderId() view returns (uint64)
owner
viewfunction owner() view returns (address)
positionOrderExtras
viewfunction positionOrderExtras(uint64 orderId) view returns (tuple)
rebalancers
viewfunction rebalancers(address rebalancer) view returns (bool)
referralManager
viewfunction referralManager() view returns (address)
addBroker
nonpayablefunction addBroker(address newBroker)
addRebalancer
nonpayablefunction addRebalancer(address newRebalancer)
cancelOrder
nonpayablefunction cancelOrder(uint64 orderId)
claimBrokerGasRebate
nonpayablefunction claimBrokerGasRebate() returns (uint256 rawAmount)
collectFundingFee
nonpayablefunction collectFundingFee(bytes32 subAccountId, uint96 collateralPrice, uint96 assetPrice)
depositCollateral
payablefunction depositCollateral(bytes32 subAccountId, uint256 collateralAmount) payable
fillLiquidityOrder
nonpayablefunction fillLiquidityOrder(uint64 orderId, uint96 assetPrice, uint96 mlpPrice, uint96 currentAssetValue, uint96 targetAssetValue)
fillPositionOrder
nonpayablefunction fillPositionOrder(uint64 orderId, uint96 collateralPrice, uint96 assetPrice, uint96 profitAssetPrice)
fillRebalanceOrder
nonpayablefunction fillRebalanceOrder(uint64 orderId, uint96 price0, uint96 price1)
fillWithdrawalOrder
nonpayablefunction fillWithdrawalOrder(uint64 orderId, uint96 collateralPrice, uint96 assetPrice, uint96 profitAssetPrice)
initialize
nonpayablefunction initialize(address pool, address mlp, address weth, address nativeUnwrapper)
liquidate
nonpayablefunction liquidate(bytes32 subAccountId, uint8 profitAssetId, uint96 collateralPrice, uint96 assetPrice, uint96 profitAssetPrice)
pause
nonpayablefunction pause(bool isPositionOrderPaused_, bool isLiquidityOrderPaused_)
placeLiquidityOrder
payablefunction placeLiquidityOrder(uint8 assetId, uint96 rawAmount, bool isAdding) payable
placePositionOrder3
payablefunction placePositionOrder3(bytes32 subAccountId, uint96 collateralAmount, uint96 size, uint96 price, uint8 profitTokenId, uint8 flags, uint32 deadline, bytes32 referralCode, tuple extra) payable
placeRebalanceOrder
nonpayablefunction placeRebalanceOrder(uint8 tokenId0, uint8 tokenId1, uint96 rawAmount0, uint96 maxRawAmount1, bytes32 userData)
placeWithdrawalOrder
nonpayablefunction placeWithdrawalOrder(bytes32 subAccountId, uint96 rawAmount, uint8 profitTokenId, bool isProfit)
redeemMuxToken
nonpayablefunction redeemMuxToken(uint8 tokenId, uint96 muxTokenAmount)
removeBroker
nonpayablefunction removeBroker(address broker)
removeRebalancer
nonpayablefunction removeRebalancer(address rebalancer)
renounceBroker
nonpayablefunction renounceBroker()
renounceOwnership
nonpayablefunction renounceOwnership()
renounceRebalancer
nonpayablefunction renounceRebalancer()
setAggregator
nonpayablefunction setAggregator(address aggregatorAddress, bool isEnable)
setCallbackGasLimit
nonpayablefunction setCallbackGasLimit(uint256 gasLimit)
setCallbackWhitelist
nonpayablefunction setCallbackWhitelist(address caller, bool enable)
setLiquidityLockPeriod
nonpayablefunction setLiquidityLockPeriod(uint32 newLiquidityLockPeriod)
setLotSize
nonpayablefunction setLotSize(uint8 assetId, uint96 lotSize)
setMaintainer
nonpayablefunction setMaintainer(address newMaintainer)
setOrderTimeout
nonpayablefunction setOrderTimeout(uint32 marketOrderTimeout_, uint32 maxLimitOrderTimeout_, uint32 cancelCoolDown_)
setReferralManager
nonpayablefunction setReferralManager(address newReferralManager)
takeOwnership
nonpayablefunction takeOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateFundingState
nonpayablefunction updateFundingState(uint32 stableUtilization, uint8[] unstableTokenIds, uint32[] unstableUtilizations, uint96[] unstablePrices)
withdrawAllCollateral
nonpayablefunction withdrawAllCollateral(bytes32 subAccountId)
events
AddBroker
event AddBroker(address indexed newBroker)
AddRebalancer
event AddRebalancer(address indexed newRebalancer)
CancelOrder
event CancelOrder(uint64 orderId, uint8 orderType, bytes32[3] orderData)
FillOrder
event FillOrder(uint64 orderId, uint8 orderType, bytes32[3] orderData)
NewLiquidityOrder
event NewLiquidityOrder(address indexed account, uint64 indexed orderId, uint8 assetId, uint96 rawAmount, bool isAdding)
NewPositionOrder
event NewPositionOrder(bytes32 indexed subAccountId, uint64 indexed orderId, uint96 collateral, uint96 size, uint96 price, uint8 profitTokenId, uint8 flags, uint32 deadline)
NewPositionOrderExtra
event NewPositionOrderExtra(bytes32 indexed subAccountId, uint64 indexed orderId, uint96 collateral, uint96 size, uint96 price, uint8 profitTokenId, uint8 flags, uint32 deadline, (uint96 tpPrice, uint96 slPrice, uint8 tpslProfitTokenId, uint32 tpslDeadline) extra)
NewRebalanceOrder
event NewRebalanceOrder(address indexed rebalancer, uint64 indexed orderId, uint8 tokenId0, uint8 tokenId1, uint96 rawAmount0, uint96 maxRawAmount1, bytes32 userData)
NewWithdrawalOrder
event NewWithdrawalOrder(bytes32 indexed subAccountId, uint64 indexed orderId, uint96 rawAmount, uint8 profitTokenId, bool isProfit)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PauseLiquidityOrder
event PauseLiquidityOrder(bool isPaused)
PausePositionOrder
event PausePositionOrder(bool isPaused)
PrepareToTransferOwnership
event PrepareToTransferOwnership(address indexed pendingOwner)
RemoveBroker
event RemoveBroker(address indexed broker)
RemoveRebalancer
event RemoveRebalancer(address indexed rebalancer)
SetAggregator
event SetAggregator(address indexed aggregatorAddress, bool isEnable)
SetLiquidityLockPeriod
event SetLiquidityLockPeriod(uint32 oldLockPeriod, uint32 newLockPeriod)
SetLotSize
event SetLotSize(uint8 assetId, uint96 lotSize)
SetMaintainer
event SetMaintainer(address indexed newMaintainer)
SetOrderTimeout
event SetOrderTimeout(uint32 marketOrderTimeout, uint32 maxLimitOrderTimeout, uint32 cancelCoolDown)
SetReferralManager
event SetReferralManager(address newReferralManager)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b5061598880620000216000396000f3fe6080604052600436106102e45760003560e01c80636d81a10811610190578063b4b9ef73116100dc578063ddeb509411610095578063f2fde38b1161006f578063f2fde38b146109a1578063f8c8765e146109c1578063fbb8d4ce146109e1578063fe6facc4146109f657600080fd5b8063ddeb509414610951578063dea9b46414610971578063ee8f99dc1461098457600080fd5b8063b4b9ef7314610883578063c1488069146108a3578063c5f3a4c4146108c3578063cdf9d07c146108e3578063d0ee758c14610911578063d99d6f9a1461093157600080fd5b80638f72fc7711610149578063986122c311610123578063986122c3146107f557806399a349521461081557806399e4ef5914610835578063a44d57a01461084a57600080fd5b80638f72fc77146106ee578063942a5e7e1461071c5780639850d32b146107d057600080fd5b80636d81a1081461063d578063715018a614610658578063836cae651461066d5780638a54942f1461068d5780638d0a5fbb146106ad5780638da5cb5b146106d057600080fd5b80633d491e6f1161024f57806358b09b891161020857806366874cc5116101e257806366874cc5146105a257806366e10ec6146105db5780636a911029146105fd5780636b811a3c1461061d57600080fd5b806358b09b891461054d5780635ac05a501461056d578063605361721461058d57600080fd5b80633d491e6f146104b2578063431e5c9d146104d257806343bc4b9a146104e75780634786055f146105075780634af3e0171461051a578063523eb5371461052d57600080fd5b80632ccd9623116102a15780632ccd9623146103cc578063315dca6e146103fe578063330a4f9d1461041e578063337c96b414610450578063340e2d19146104705780633d0ebb891461049257600080fd5b80630c979919146102e957806313ea5d291461030b5780631666bcde1461032b57806318a7a4051461035457806321c8dfe9146103745780632a58b33014610394575b600080fd5b3480156102f557600080fd5b5061030961030436600461489b565b610a16565b005b34801561031757600080fd5b5061030961032636600461489b565b610ace565b34801561033757600080fd5b50606e5460ff165b60405190151581526020015b60405180910390f35b34801561036057600080fd5b5061030961036f3660046148c6565b610b83565b34801561038057600080fd5b5061030961038f36600461491f565b610bd8565b3480156103a057600080fd5b50606754600160a01b90046001600160401b03166040516001600160401b03909116815260200161034b565b3480156103d857600080fd5b50606f546001600160a01b03165b6040516001600160a01b03909116815260200161034b565b34801561040a57600080fd5b50610309610419366004614978565b610c9a565b34801561042a57600080fd5b50606e5462010000900463ffffffff165b60405163ffffffff909116815260200161034b565b34801561045c57600080fd5b5061030961046b3660046149c3565b610efc565b34801561047c57600080fd5b50606b54600160a01b900463ffffffff1661043b565b34801561049e57600080fd5b506103096104ad366004614a24565b611008565b3480156104be57600080fd5b506103096104cd366004614ae1565b6110ae565b3480156104de57600080fd5b50610309611143565b3480156104f357600080fd5b5061030961050236600461489b565b61114e565b610309610515366004614b23565b611184565b610309610528366004614c46565b611311565b34801561053957600080fd5b50610309610548366004614c84565b6113e2565b34801561055957600080fd5b50610309610568366004614c9f565b611903565b34801561057957600080fd5b50610309610588366004614cf9565b611ca4565b34801561059957600080fd5b50610309611e3d565b3480156105ae57600080fd5b5061033f6105bd36600461489b565b6001600160a01b031660009081526066602052604090205460ff1690565b3480156105e757600080fd5b50606e54600160301b900463ffffffff1661043b565b34801561060957600080fd5b50610309610618366004614d59565b611e97565b34801561062957600080fd5b50610309610638366004614d99565b6120c4565b34801561064957600080fd5b5060755463ffffffff1661043b565b34801561066457600080fd5b50610309612148565b34801561067957600080fd5b5061030961068836600461489b565b61218c565b34801561069957600080fd5b506103096106a8366004614d99565b612260565b3480156106b957600080fd5b506106c261228f565b60405190815260200161034b565b3480156106dc57600080fd5b506033546001600160a01b03166103e6565b3480156106fa57600080fd5b5061070e610709366004614db2565b61229f565b60405161034b929190614dd4565b34801561072857600080fd5b506107c3610737366004614c84565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160401b0316600090815260706020908152604091829020825160808101845290546001600160601b038082168352600160601b82041692820192909252600160c01b820460ff1692810192909252600160c81b900463ffffffff16606082015290565b60405161034b9190614e44565b3480156107dc57600080fd5b50606e54600160501b90046001600160a01b03166103e6565b34801561080157600080fd5b50610309610810366004614ae1565b612395565b34801561082157600080fd5b50610309610830366004614c9f565b612454565b34801561084157600080fd5b506106c2612679565b34801561085657600080fd5b5061033f61086536600461489b565b6001600160a01b03166000908152606d602052604090205460ff1690565b34801561088f57600080fd5b5061030961089e366004614e89565b612716565b3480156108af57600080fd5b506103096108be3660046148c6565b6128d4565b3480156108cf57600080fd5b506103096108de36600461489b565b612999565b3480156108ef57600080fd5b506109036108fe366004614c84565b612a53565b60405161034b929190614ef2565b34801561091d57600080fd5b5061030961092c366004614f0f565b612a7c565b34801561093d57600080fd5b5061030961094c36600461489b565b612e7c565b34801561095d57600080fd5b5061030961096c366004614f7e565b612ed4565b61030961097f366004614db2565b612fdb565b34801561099057600080fd5b50606e54610100900460ff1661033f565b3480156109ad57600080fd5b506103096109bc36600461489b565b613174565b3480156109cd57600080fd5b506103096109dc366004614f9c565b613268565b3480156109ed57600080fd5b506103096133a2565b348015610a0257600080fd5b50610309610a11366004614fed565b6133ab565b6033546001600160a01b03163314610a495760405162461bcd60e51b8152600401610a4090615015565b60405180910390fd5b6001600160a01b0381166000908152606d602052604090205460ff1615610a825760405162461bcd60e51b8152600401610a409061504a565b6001600160a01b0381166000818152606d6020526040808220805460ff19166001179055517fc5115f53265d15ca7930718dd520cd314285a7f2f0027e59b441f1f33b87b6919190a250565b6033546001600160a01b03163314610af85760405162461bcd60e51b8152600401610a4090615015565b606e546001600160a01b03828116600160501b909204161415610b2d5760405162461bcd60e51b8152600401610a409061504a565b606e8054600160501b600160f01b031916600160501b6001600160a01b038416908102919091179091556040517f20495ad1c3942659031bc9602fe224bb567644c05306fe5656f04f0c5cd09ef590600090a250565b6033546001600160a01b03163314610bad5760405162461bcd60e51b8152600401610a4090615015565b6001600160a01b03919091166000908152607460205260409020805460ff1916911515919091179055565b3360009081526066602052604090205460ff16610c075760405162461bcd60e51b8152600401610a4090615067565b6067546040516369912dc760e11b815260048101859052600060248201526001600160601b038085166044830152831660648201526001600160a01b039091169063d3225b8e906084016020604051808303816000875af1158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c949190615084565b50505050565b3360009081526066602052604090205460ff16610cc95760405162461bcd60e51b8152600401610a4090615067565b606e54610100900460ff1615610d075760405162461bcd60e51b815260206004820152600360248201526204c4f560ec1b6044820152606401610a40565b6002609b541415610d2a5760405162461bcd60e51b8152600401610a40906150a1565b6002609b55610d3a6068846135bd565b610d565760405162461bcd60e51b8152600401610a40906150d8565b6000610d636068856135e4565b9050610d70606885613639565b6000610d7b826137e2565b90506004816004811115610d9157610d916150f5565b14610dae5760405162461bcd60e51b8152600401610a409061510b565b6040805160e0810182526000808252602080830182815283850183815260608086018581526080870186815260a080890188815260c08a018981528d5190951c968790528c5160581c60ff908116968790528d5160501c1693849052968c01805190911c9182905251891c6001600160601b03908116968790528b8a0151938490526067548a51639eee96df60e01b81526004810197909752602487019590955260448601929092526064850152608484019490945260a483015289831660c483015291881660e4820152935192936001600160a01b0390911692639eee96df926101048084019391929182900301818387803b158015610eae57600080fd5b505af1158015610ec2573d6000803e3d6000fd5b50505050600080516020615933833981519152868385604051610ee793929190615128565b60405180910390a150506001609b5550505050565b6033546001600160a01b03163314610f265760405162461bcd60e51b8152600401610a4090615015565b62278d008163ffffffff161115610f655760405162461bcd60e51b81526020600482015260036024820152624c434b60e81b6044820152606401610a40565b606b5463ffffffff828116600160a01b909204161415610f975760405162461bcd60e51b8152600401610a409061504a565b606b5460408051600160a01b90920463ffffffff9081168352831660208301527f0c0b8e3bb5e77c750110c5892a4426f766651572fc356dcff0300a53a79771e8910160405180910390a1606b805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b3360009081526066602052604090205460ff166110375760405162461bcd60e51b8152600401610a4090615067565b606754604051633d0ebb8960e01b81526001600160a01b0390911690633d0ebb8990611073908a908a908a908a908a908a908a906004016151b2565b600060405180830381600087803b15801561108d57600080fd5b505af11580156110a1573d6000803e3d6000fd5b5050505050505050505050565b60003360405163262d352160e21b8152606660048201526001600160a01b038216602482015260ff851660448201526001600160601b03841660648201529091507309a0dbd7667236106322f6254b605d51e36d4b6b906398b4d4849060840160006040518083038186803b15801561112657600080fd5b505af415801561113a573d6000803e3d6000fd5b50505050505050565b61114c336137fb565b565b6033546001600160a01b031633146111785760405162461bcd60e51b8152600401610a4090615015565b6111818161387c565b50565b6002609b5414156111a75760405162461bcd60e51b8152600401610a40906150a1565b6002609b553360008181526072602052604090205460608b901c9060ff16156111cf57611200565b816001600160a01b0316816001600160a01b0316146112005760405162461bcd60e51b8152600401610a409061525d565b83158015906112195750606f546001600160a01b031615155b1561128557606f5460405163bfb7d70d60e01b81526001600160a01b038381166004830152602482018790529091169063bfb7d70d90604401600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b505050505b7309a0dbd7667236106322f6254b605d51e36d4b6b630f40ab716066428e8e8e8e8e8e8e8d6040518b63ffffffff1660e01b81526004016112cf9a9998979695949392919061527a565b60006040518083038186803b1580156112e757600080fd5b505af41580156112fb573d6000803e3d6000fd5b50506001609b5550505050505050505050505050565b6002609b5414156113345760405162461bcd60e51b8152600401610a40906150a1565b6002609b5560408051631e8fc0ef60e01b81526066600482015263ffffffff42166024820152336044820181905260ff861660648301526001600160601b038516608483015283151560a483015291517309a0dbd7667236106322f6254b605d51e36d4b6b91631e8fc0ef9160c4808301926000929190829003018186803b1580156113bf57600080fd5b505af41580156113d3573d6000803e3d6000fd5b50506001609b55505050505050565b6002609b5414156114055760405162461bcd60e51b8152600401610a40906150a1565b6002609b556114156068826135bd565b6114315760405162461bcd60e51b8152600401610a40906150d8565b600061143e6068836135e4565b905061144b606883613639565b6000611458825160601c90565b90506000611465836137e2565b9050600181600481111561147b5761147b6150f5565b141561169657600061148c846138fd565b3360009081526066602052604090205490915060ff16156114df576114b0816139b4565b63ffffffff164263ffffffff16116114da5760405162461bcd60e51b8152600401610a4090615322565b611547565b60006114f285825b602002015160601c90565b336000818152607260205260409020549192509060ff161561151357611544565b806001600160a01b0316826001600160a01b0316146115445760405162461bcd60e51b8152600401610a409061525d565b50505b60755460e082015161155f9163ffffffff169061536b565b63ffffffff164263ffffffff16101561158a5760405162461bcd60e51b8152600401610a4090615393565b60c0810151608016151580156115ad5750600081604001516001600160601b0316115b156116505760675460208201516000916001600160a01b031690632d46c6c29060581c6040516001600160e01b031960e084901b16815260ff9091166004820152602401602060405180830381865afa15801561160e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163291906153b0565b905061164e6066828685604001516001600160601b0316613a2c565b505b6001600160401b038516600081815260706020908152604080832080546001600160e81b03191690558482015183526071909152902061168f91613b43565b50506118b5565b60028160048111156116aa576116aa6150f5565b141561173a57336001600160a01b038316146116d85760405162461bcd60e51b8152600401610a409061525d565b60006116e384613b56565b60755460a08201519192506117009163ffffffff9091169061536b565b63ffffffff164263ffffffff16101561172b5760405162461bcd60e51b8152600401610a4090615393565b61173481613bfa565b506118b5565b600381600481111561174e5761174e6150f5565b141561187357600061175f84613d5c565b3360009081526066602052604090205490915060ff16156117cf57606e5460a082015160009161179c916201000090910463ffffffff169061536b565b63ffffffff169050804263ffffffff16116117c95760405162461bcd60e51b8152600401610a4090615322565b50611830565b60006117db85826114e7565b336000818152607260205260409020549192509060ff16156117fc5761182d565b806001600160a01b0316826001600160a01b03161461182d5760405162461bcd60e51b8152600401610a409061525d565b50505b60755460a08201516118489163ffffffff169061536b565b63ffffffff164263ffffffff1610156117345760405162461bcd60e51b8152600401610a4090615393565b6004816004811115611887576118876150f5565b14156102e457336001600160a01b038316146118b55760405162461bcd60e51b8152600401610a409061525d565b7fe5033f0fc6c1035c36f3d7c2b4278c1d0fc20d165ba0873a0ce56a661e8cf866846118e0856137e2565b856040516118f093929190615128565b60405180910390a150506001609b555050565b3360009081526066602052604090205460ff166119325760405162461bcd60e51b8152600401610a4090615067565b606e5460ff161561196b5760405162461bcd60e51b81526020600482015260036024820152620504f560ec1b6044820152606401610a40565b6002609b54141561198e5760405162461bcd60e51b8152600401610a40906150a1565b6002609b5561199e6068856135bd565b6119ba5760405162461bcd60e51b8152600401610a40906150d8565b60006119c76068866135e4565b90506119d4606886613639565b60006119df826137e2565b905060018160048111156119f5576119f56150f5565b14611a125760405162461bcd60e51b8152600401610a409061510b565b6000611a1d836138fd565b9050611a28816139b4565b63ffffffff164263ffffffff161115611a535760405162461bcd60e51b8152600401610a4090615322565b6000611a658260c00151608016151590565b15611af45760405163352de4bb60e11b81527309a0dbd7667236106322f6254b605d51e36d4b6b90636a5bc97690611aac9060669042908d908d908d908a90600401615485565b602060405180830381865af4158015611ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aed9190615084565b9050611b7c565b604051630580dfb760e11b81527309a0dbd7667236106322f6254b605d51e36d4b6b90630b01bf6e90611b389060669042908d908d908d908d908b906004016154cc565b602060405180830381865af4158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190615084565b90505b60c0820151604016611c6c576000611b9a8360c00151608016151590565b60208401519015159060481c60ff1615151515149050611bc08360c00151601016151590565b15611bc757155b8015611c1e5782608001516001600160601b0316826001600160601b03161115611c195760405162461bcd60e51b815260206004820152600360248201526213135560ea1b6044820152606401610a40565b611c6a565b82608001516001600160601b0316826001600160601b03161015611c6a5760405162461bcd60e51b815260206004820152600360248201526213135560ea1b6044820152606401610a40565b505b600080516020615933833981519152888486604051611c8d93929190615128565b60405180910390a150506001609b55505050505050565b336000908152606d602052604090205460ff16611ce95760405162461bcd60e51b815260206004820152600360248201526210905360ea1b6044820152606401610a40565b6002609b541415611d0c5760405162461bcd60e51b8152600401610a40906150a1565b6002609b556001600160601b038316611d4d5760405162461bcd60e51b81526020600482015260036024820152620413d360ec1b6044820152606401610a40565b606780543391600091600160a01b90046001600160401b0316906014611d7283615527565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555090506000611da982848a8a8a8a8a613da4565b9050611db760688383613e32565b6040805160ff808b168252891660208201526001600160601b03808916928201929092529086166060820152608081018590526001600160401b038316906001600160a01b038516907f5c1a7ceefa482bcc616dec79c7a8bb748520ec46eb6d550f10ecf97e70f1c96a9060a0015b60405180910390a350506001609b55505050505050565b6065546001600160a01b0316336001600160a01b031614611e705760405162461bcd60e51b8152600401610a409061525d565b606554611e85906001600160a01b0316613f56565b606580546001600160a01b0319169055565b6033546001600160a01b03163314611ec15760405162461bcd60e51b8152600401610a4090615015565b63ffffffff8316611efa5760405162461bcd60e51b81526020600482015260036024820152620543d360ec1b6044820152606401610a40565b62ffffff611f09600a8561554e565b63ffffffff161115611f435760405162461bcd60e51b8152602060048201526003602482015262543e4d60e81b6044820152606401610a40565b63ffffffff8216611f7c5760405162461bcd60e51b81526020600482015260036024820152620543d360ec1b6044820152606401610a40565b62ffffff611f8b600a8461554e565b63ffffffff161115611fc55760405162461bcd60e51b8152602060048201526003602482015262543e4d60e81b6044820152606401610a40565b606e5463ffffffff8481166201000090920416141580611ff75750606e5463ffffffff838116600160301b9092041614155b8061200d575060755463ffffffff828116911614155b6120295760405162461bcd60e51b8152600401610a409061504a565b606e805469ffffffffffffffff000019166201000063ffffffff86811691820269ffffffff000000000000191692909217600160301b868416908102919091179093556075805463ffffffff19169285169283179055604080519182526020820193909352918201527feb0699481bafb9c8fbdf0c5fa0f4101aa2304d097aae29144a520e3f594de1829060600160405180910390a1505050565b606081901c33146120e75760405162461bcd60e51b8152600401610a409061525d565b606754604051631ae0468f60e21b8152600481018390526001600160a01b0390911690636b811a3c90602401600060405180830381600087803b15801561212d57600080fd5b505af1158015612141573d6000803e3d6000fd5b5050505050565b6033546001600160a01b031633146121725760405162461bcd60e51b8152600401610a4090615015565b606580546001600160a01b031916905561114c6000613f56565b606e54600160501b90046001600160a01b0316336001600160a01b031614806121bf57506033546001600160a01b031633145b6121db5760405162461bcd60e51b8152600401610a409061557f565b6001600160a01b03811660009081526066602052604090205460ff16156122145760405162461bcd60e51b8152600401610a409061504a565b6001600160a01b038116600081815260666020526040808220805460ff19166001179055517f2fcbb5eda85b2352f87cce68063c290996e8cbc17c8f7c25a8b9ba1e59de256c9190a250565b6033546001600160a01b0316331461228a5760405162461bcd60e51b8152600401610a4090615015565b607355565b600061229a60685490565b905090565b606060006122ac60685490565b905082841015806122bd5750808410155b156122c75761238e565b808311156122d557806122d7565b825b925060006122e5858561559c565b9050806001600160401b038111156122ff576122ff614b0d565b60405190808252806020026020018201604052801561233857816020015b612325614815565b81526020019060019003908161231d5790505b50925060005b8181101561238b5761235b61235387836155b3565b606890613fa8565b84828151811061236d5761236d61533f565b60200260200101819052508080612383906155cb565b91505061233e565b50505b9250929050565b606e54600160501b90046001600160a01b0316336001600160a01b031614806123c857506033546001600160a01b031633145b6123e45760405162461bcd60e51b8152600401610a409061557f565b60ff821660008181526076602090815260409182902080546bffffffffffffffffffffffff19166001600160601b0386169081179091558251938452908301527f45125902ac40bc4b1e74ef8f4b4e440a10a3771fefc73fba51407a6e251b129391015b60405180910390a15050565b3360009081526066602052604090205460ff166124835760405162461bcd60e51b8152600401610a4090615067565b6002609b5414156124a65760405162461bcd60e51b8152600401610a40906150a1565b6002609b556124b66068856135bd565b6124d25760405162461bcd60e51b8152600401610a40906150d8565b60006124df6068866135e4565b90506124ec606886613639565b60006124f7826137e2565b9050600381600481111561250d5761250d6150f5565b1461252a5760405162461bcd60e51b8152600401610a409061510b565b600061253583613d5c565b606e5460a0820151919250612557916201000090910463ffffffff169061536b565b63ffffffff164263ffffffff1611156125825760405162461bcd60e51b8152600401610a4090615322565b8060800151156125ba5760405162461bcd60e51b815260206004820152600360248201526214119560ea1b6044820152606401610a40565b60675460208201516040808401519051634700832960e11b815260048101929092526001600160601b0390811660248301528089166044830152871660648201526001600160a01b0390911690638e01065290608401600060405180830381600087803b15801561262a57600080fd5b505af115801561263e573d6000803e3d6000fd5b5050505060008051602061593383398151915287838560405161266393929190615128565b60405180910390a150506001609b555050505050565b3360009081526066602052604081205460ff166126a85760405162461bcd60e51b8152600401610a4090615067565b606754604051636bc72faf60e11b81523360048201526001600160a01b039091169063d78e5f5e906024016020604051808303816000875af11580156126f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229a91906155e6565b6002609b5414156127395760405162461bcd60e51b8152600401610a40906150a1565b6002609b55600061274a8560601c90565b336000818152607260205260409020549192509060ff161561276b5761279c565b806001600160a01b0316826001600160a01b03161461279c5760405162461bcd60e51b8152600401610a409061525d565b6001600160601b0385166127d85760405162461bcd60e51b81526020600482015260036024820152620413d360ec1b6044820152606401610a40565b821561280c5760405162461bcd60e51b815260206004820152600360248201526214119560ea1b6044820152606401610a40565b60678054600091600160a01b9091046001600160401b031690601461283083615527565b91906101000a8154816001600160401b0302191690836001600160401b031602179055509050600061286c82898989896128674290565b61406a565b905061287a60688383613e32565b604080516001600160601b038916815260ff88166020820152861515918101919091526001600160401b0383169089907f201d03547a8fd1f2eaa0fda90af89681a6c4dc6a8e495565e5ca6a62b3579cf090606001611e26565b6033546001600160a01b031633146128fe5760405162461bcd60e51b8152600401610a4090615015565b6001600160a01b03821661293a5760405162461bcd60e51b815260206004820152600360248201526216905160ea1b6044820152606401610a40565b6001600160a01b038216600081815260726020908152604091829020805460ff191685151590811790915591519182527f9aaad5d73fc4de1befd3e790b855dfdc6363f068e93abfdf01ad70681d31d0ce910160405180910390a25050565b6033546001600160a01b031633146129c35760405162461bcd60e51b8152600401610a4090615015565b6001600160a01b0381166129ff5760405162461bcd60e51b815260206004820152600360248201526216905160ea1b6044820152606401610a40565b606f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f57202bce87a87010e83825477a341d777f701216d3e2a3b4642c72d9e8a931989060200160405180910390a150565b612a5b614815565b6000612a686068846135e4565b612a736068856135bd565b91509150915091565b3360009081526066602052604090205460ff16612aab5760405162461bcd60e51b8152600401610a4090615067565b606e54610100900460ff1615612ae95760405162461bcd60e51b815260206004820152600360248201526204c4f560ec1b6044820152606401610a40565b6002609b541415612b0c5760405162461bcd60e51b8152600401610a40906150a1565b6002609b55612b1c6068866135bd565b612b385760405162461bcd60e51b8152600401610a40906150d8565b6000612b456068876135e4565b9050612b52606887613639565b6000612b5d82613b56565b6020808201516001600160a01b031660009081526074909152604090205490915060ff1615612c6e57600081602001516001600160a01b031663be49f64a612ba361412f565b848a8a8a8a6040518763ffffffff1660e01b8152600401612bc895949392919061565c565b60206040518083038160008887f193505050508015612c04575060408051601f3d908101601f19168201909252612c019181019061569e565b60015b612c1057506000612c13565b90505b80612c6c57612c2182613bfa565b7fe5033f0fc6c1035c36f3d7c2b4278c1d0fc20d165ba0873a0ce56a661e8cf86688612c4c856137e2565b85604051612c5c93929190615128565b60405180910390a1505050612e70565b505b6000612c79836137e2565b90506002816004811115612c8f57612c8f6150f5565b14612cac5760405162461bcd60e51b8152600401610a409061510b565b600082604001516001600160601b0316600014612d4f57604051636cc4fd9560e11b81527309a0dbd7667236106322f6254b605d51e36d4b6b9063d989fb2a90612d079060669042908d908d908d908d908d906004016156bb565b602060405180830381865af4158015612d24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4891906155e6565b9050612da6565b6020808401516001600160a01b031660009081526074909152604090205460ff16612da25760405162461bcd60e51b81526020600482015260036024820152622721a160e91b6044820152606401610a40565b5060005b6020808401516001600160a01b031660009081526074909152604090205460ff1615612e425782602001516001600160a01b0316639c69c2e1612de761412f565b85848c8c8c8c6040518863ffffffff1660e01b8152600401612e0e96959493929190615730565b600060405180830381600088803b158015612e2857600080fd5b5087f1158015612e3c573d6000803e3d6000fd5b50505050505b600080516020615933833981519152898386604051612e6393929190615128565b60405180910390a1505050505b50506001609b55505050565b606e54600160501b90046001600160a01b0316336001600160a01b03161480612eaf57506033546001600160a01b031633145b612ecb5760405162461bcd60e51b8152600401610a409061557f565b611181816137fb565b606e54600160501b90046001600160a01b0316336001600160a01b03161480612f0757506033546001600160a01b031633145b612f235760405162461bcd60e51b8152600401610a409061557f565b606e5460ff16151582151514612f7857606e805460ff19168315159081179091556040519081527ff08d1ca9cf739c5ed2fcedf748abbfa8f14006e47f4a0a3805e6ce8ace2411229060200160405180910390a15b606e5460ff61010090910416151581151514612fd757606e80548215156101000261ff00199091161790556040517f1dd885054d26280b4f25ebb658ef23327620ee20f5ad56b33902e87f8ad65bba9061244890831515815260200190565b5050565b6000612fe683614147565b3360008181526072602052604090205491925090606085901c9060ff161561300d5761303e565b816001600160a01b0316816001600160a01b03161461303e5760405162461bcd60e51b8152600401610a409061525d565b836130715760405162461bcd60e51b81526020600482015260036024820152620433d360ec1b6044820152606401610a40565b60675460208401516040516316a3636160e11b815260ff90911660048201526000916001600160a01b031690632d46c6c290602401602060405180830381865afa1580156130c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e791906153b0565b60675490915061310790606690849084906001600160a01b0316896141e0565b6067546040516337aa6d1960e21b815260048101889052602481018790526001600160a01b039091169063dea9b46490604401600060405180830381600087803b15801561315457600080fd5b505af1158015613168573d6000803e3d6000fd5b50505050505050505050565b6033546001600160a01b0316331461319e5760405162461bcd60e51b8152600401610a4090615015565b6001600160a01b0381166131da5760405162461bcd60e51b815260206004820152600360248201526204f3d360ec1b6044820152606401610a40565b6033546001600160a01b038281169116141561321e5760405162461bcd60e51b81526020600482015260036024820152624f3d4f60e81b6044820152606401610a40565b606580546001600160a01b0319166001600160a01b0383169081179091556040517fb501f5dc3610d10a179d924f686fc89ddcdd3abb05afd7a1baeead166b2f122c90600090a250565b600054610100900460ff166132835760005460ff1615613287565b303b155b6132ea5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a40565b600054610100900460ff1615801561330c576000805461ffff19166101011790555b61331461437e565b606780546001600160a01b03199081166001600160a01b0388811691909117909255606a80548216878416179055606b80548216868416179055606c805490911684831617905560335416606e80546001600160a01b0392909216600160501b02600160501b600160f01b03199092169190911790558015612141576000805461ff00191690555050505050565b61114c3361387c565b3360009081526066602052604090205460ff166133da5760405162461bcd60e51b8152600401610a4090615067565b606754604051633f9beb3160e21b81526004810187905260ff861660248201526001600160601b0380861660448301528085166064830152831660848201526001600160a01b039091169063fe6facc49060a4016020604051808303816000875af115801561344d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134719190615084565b506067546040516303e9375760e01b8152600481018790526000916001600160a01b0316906303e937579060240160a060405180830381865afa1580156134bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e09190615778565b5050505090506000816001600160601b0316111561355757606754604051631ae0468f60e21b8152600481018890526001600160a01b0390911690636b811a3c90602401600060405180830381600087803b15801561353e57600080fd5b505af1158015613552573d6000803e3d6000fd5b505050505b6040516342f4ff7160e11b815260666004820152602481018790527309a0dbd7667236106322f6254b605d51e36d4b6b906385e9fee29060440160006040518083038186803b1580156135a957600080fd5b505af4158015613168573d6000803e3d6000fd5b6001600160401b038116600090815260018381016020526040909120015415155b92915050565b6135ec614815565b6001600160401b038216600090815260018401602052604090819020815160608101928390529160039082845b815481526020019060010190808311613619575050505050905092915050565b6001600160401b0381166000908152600180840160205260408220919082015490506001600160401b0381166136815760405162461bcd60e51b8152600401610a40906150d8565b600061368e6001836157f4565b85546001600160401b039190911691506000906136ad9060019061559c565b90508181146137745760008660000182815481106136cd576136cd61533f565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b031690508087600001848154811061370e5761370e61533f565b600091825260208083206004830401805460039093166008026101000a6001600160401b03818102199094169584160294909417909355838116825260018a81019093526040909120919086169067ffffffffffffffff19908301541617816001015550505b85548690806137855761378561581c565b600082815260208082206004600019949094019384040180546001600160401b03600860038716026101000a8102199091169091559290935596168652600196870190525050604083208381559384018390555050600290910155565b805160009060ff1660048111156135de576135de6150f5565b6001600160a01b03811660009081526066602052604090205460ff166138335760405162461bcd60e51b8152600401610a409061504a565b6001600160a01b038116600081815260666020526040808220805460ff19169055517fcdf53ae488d66a98f509e3342bdc0a13dee821f05bfb372351346a7a991df7a29190a250565b6001600160a01b0381166000908152606d602052604090205460ff166138b45760405162461bcd60e51b8152600401610a409061504a565b6001600160a01b0381166000818152606d6020526040808220805460ff19169055517f963257db523ad7beed5ed8d412d9efcfa2ec8b73e3c20c3aaf5b6161f9ec48119190a250565b60408051610120810182526000808252602080830182815283850183815260608086018581526080870186815260a080890188815260c08a0189815260e08b018a81526101008c019a8b528d5168ffffffffffffffffff19169098528c8c0180518d1c6001600160601b03169097529b9097018051821c909352825160901c60ff908116909b52935190931c909252815160981c909716909252815190951c62ffffff169091525190911c63ffffffff1690915290565b60006139c68260c00151604016151590565b156139e957606e5460e08301516135de9162010000900463ffffffff169061536b565b613a1882610100015162ffffff16600a613a039190615832565b606e54600160301b900463ffffffff166143ad565b8260e001516135de919061536b565b919050565b60058401546001600160a01b0384811691161415613b2f576005840154600685015460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af1158015613a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ac1919061569e565b5060068401546040516339f4769360e01b81526001600160a01b03848116600483015260248201849052909116906339f4769390604401600060405180830381600087803b158015613b1257600080fd5b505af1158015613b26573d6000803e3d6000fd5b50505050610c94565b610c946001600160a01b03841683836143d0565b6000613b4f8383614438565b9392505050565b6040805160c08101825260008082526020820181815292820181905260608083018290526080830182905260a0830191909152835160081c6001600160401b031682528351901c9091528160015b602002015160a01c604082015260608260016020020151901b60f81c6060820152600060688360016020020151901b60f81c8015156080840152905060a08360016020020151901b60e01c60a083015250919050565b806080015115613ca05760675460608201516040516316a3636160e11b815260ff90911660048201526000916001600160a01b031690632d46c6c290602401602060405180830381865afa158015613c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c7a91906153b0565b9050613c9a606682846020015185604001516001600160601b0316613a2c565b50613ccb565b60208101516040820151606a54613ccb926001600160a01b03909116916001600160601b03166143d0565b6020808201516001600160a01b031660009081526074909152604090205460ff16156111815780602001516001600160a01b031663463cde3a613d0c61412f565b836040518363ffffffff1660e01b8152600401613d29919061585e565b600060405180830381600088803b158015613d4357600080fd5b5087f193505050508015613d55575060015b6111815750565b6040805160c081018252600080825260208201818152928201819052606082018190526080820181905260a0820152825168ffffffffffffffffff1916909152816001613ba4565b613dac614815565b60089790971b68ffffffffffffffff001660509490941b60ff60501b1660589590951b60ff60581b1660609690961b6bffffffffffffffffffffffff19169590951793909317919091176004178452604091821b73ffffffffffffffffffffffff00000000000000001660a09190911b6001600160a01b03191617602084015282015290565b613e3c83836135bd565b15613e6f5760405162461bcd60e51b815260206004820152600360248201526204455560ec1b6044820152606401610a40565b82546001810184556000848152602090206004820401805460039092166008026101000a6001600160401b038181021990931685841691909102179055835490811115613ee45760405162461bcd60e51b815260206004820152600360248201526213cd8d60ea1b6044820152606401610a40565b60208201516001600160401b031615613f255760405162461bcd60e51b81526020600482015260036024820152622798a360e91b6044820152606401610a40565b60208083018051831790526001600160401b0384166000908152600186019091526040902061214190836003614833565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b613fb0614815565b82548210613fe65760405162461bcd60e51b815260206004820152600360248201526209288b60eb1b6044820152606401610a40565b6000836000018381548110613ffd57613ffd61533f565b6000918252602080832060048304015460039283166008026101000a90046001600160401b03168084526001880190915260409283902083516060810194859052919450909290919082845b81548152602001906001019080831161404957505050505091505092915050565b614072614815565b68ffffffffffffffffff8616156140b15760405162461bcd60e51b815260206004820152600360248201526210525160ea1b6044820152606401610a40565b6000836140bf5760006140c2565b60015b9050600368ffffffffffffffff0060088a901b1688171782600060200201526001600160a01b031960a087901b1660ff60981b609887901b161760ff60901b609083901b16176bffffffff0000000000000000604085901b16178260016020020152509695505050505050565b60735460009015614141575060735490565b5a905090565b60408051608081018252600080825260208201819052918101829052606081019190915268ffffffffffffffffff8216156141aa5760405162461bcd60e51b815260206004820152600360248201526210525160ea1b6044820152606401610a40565b606082811c825260ff605884901c81166020840152605084901c8116604084015260489390931c90921615159181019190915290565b60058501546001600160a01b03848116911614156143355760003411801561420757508034145b6142395760405162461bcd60e51b815260206004820152600360248201526215905360ea1b6044820152606401610a40565b8460050160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561428b57600080fd5b505af115801561429f573d6000803e3d6000fd5b505050506001600160a01b0383163014905061433057600585015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561430a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061432e919061569e565b505b612141565b34156143695760405162461bcd60e51b815260206004820152600360248201526215905360ea1b6044820152606401610a40565b6121416001600160a01b03841685848461452b565b600054610100900460ff166143a55760405162461bcd60e51b8152600401610a409061586c565b61114c614563565b60008163ffffffff168363ffffffff1611156143c95781613b4f565b5090919050565b6040516001600160a01b03831660248201526044810182905261443390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614592565b505050565b6000818152600183016020526040812054801561452157600061445c60018361559c565b85549091506000906144709060019061559c565b90508181146144d55760008660000182815481106144905761449061533f565b90600052602060002001549050808760000184815481106144b3576144b361533f565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806144e6576144e661581c565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506135de565b60009150506135de565b6040516001600160a01b0380851660248301528316604482015260648101829052610c949085906323b872dd60e01b906084016143fc565b600054610100900460ff1661458a5760405162461bcd60e51b8152600401610a409061586c565b61114c614664565b60006145e7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166146949092919063ffffffff16565b8051909150156144335780806020019051810190614605919061569e565b6144335760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a40565b600054610100900460ff1661468b5760405162461bcd60e51b8152600401610a409061586c565b61114c33613f56565b60606146a384846000856146ab565b949350505050565b60608247101561470c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a40565b6001600160a01b0385163b6147635760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a40565b600080866001600160a01b0316858760405161477f91906158e3565b60006040518083038185875af1925050503d80600081146147bc576040519150601f19603f3d011682016040523d82523d6000602084013e6147c1565b606091505b50915091506147d18282866147dc565b979650505050505050565b606083156147eb575081613b4f565b8251156147fb5782518084602001fd5b8160405162461bcd60e51b8152600401610a4091906158ff565b60405180606001604052806003906020820280368337509192915050565b8260038101928215614861579160200282015b82811115614861578251825591602001919060010190614846565b5061486d929150614871565b5090565b5b8082111561486d5760008155600101614872565b6001600160a01b038116811461118157600080fd5b6000602082840312156148ad57600080fd5b8135613b4f81614886565b801515811461118157600080fd5b600080604083850312156148d957600080fd5b82356148e481614886565b915060208301356148f4816148b8565b809150509250929050565b6001600160601b038116811461118157600080fd5b8035613a27816148ff565b60008060006060848603121561493457600080fd5b833592506020840135614946816148ff565b91506040840135614956816148ff565b809150509250925092565b80356001600160401b0381168114613a2757600080fd5b60008060006060848603121561498d57600080fd5b61499684614961565b92506020840135614946816148ff565b63ffffffff8116811461118157600080fd5b8035613a27816149a6565b6000602082840312156149d557600080fd5b8135613b4f816149a6565b60008083601f8401126149f257600080fd5b5081356001600160401b03811115614a0957600080fd5b6020830191508360208260051b850101111561238e57600080fd5b60008060008060008060006080888a031215614a3f57600080fd5b8735614a4a816149a6565b965060208801356001600160401b0380821115614a6657600080fd5b614a728b838c016149e0565b909850965060408a0135915080821115614a8b57600080fd5b614a978b838c016149e0565b909650945060608a0135915080821115614ab057600080fd5b50614abd8a828b016149e0565b989b979a50959850939692959293505050565b803560ff81168114613a2757600080fd5b60008060408385031215614af457600080fd5b614afd83614ad0565b915060208301356148f4816148ff565b634e487b7160e01b600052604160045260246000fd5b6000806000806000806000806000898b03610180811215614b4357600080fd5b8a35995060208b0135614b55816148ff565b985060408b0135614b65816148ff565b975060608b0135614b75816148ff565b9650614b8360808c01614ad0565b9550614b9160a08c01614ad0565b945060c08b0135614ba1816149a6565b935060e08b01359250608060ff1982011215614bbc57600080fd5b50604051608081018181106001600160401b0382111715614bed57634e487b7160e01b600052604160045260246000fd5b604052614bfd6101008c01614914565b8152614c0c6101208c01614914565b6020820152614c1e6101408c01614ad0565b6040820152614c306101608c016149b8565b6060820152809150509295985092959850929598565b600080600060608486031215614c5b57600080fd5b614c6484614ad0565b92506020840135614c74816148ff565b91506040840135614956816148b8565b600060208284031215614c9657600080fd5b613b4f82614961565b60008060008060808587031215614cb557600080fd5b614cbe85614961565b93506020850135614cce816148ff565b92506040850135614cde816148ff565b91506060850135614cee816148ff565b939692955090935050565b600080600080600060a08688031215614d1157600080fd5b614d1a86614ad0565b9450614d2860208701614ad0565b93506040860135614d38816148ff565b92506060860135614d48816148ff565b949793965091946080013592915050565b600080600060608486031215614d6e57600080fd5b8335614d79816149a6565b92506020840135614d89816149a6565b91506040840135614956816149a6565b600060208284031215614dab57600080fd5b5035919050565b60008060408385031215614dc557600080fd5b50508035926020909101359150565b6040808252835190820181905260009060609081840190602080880185805b84811015614e3057825186835b6003811015614e1d57825182529186019190860190600101614e00565b5050509486019491830191600101614df3565b505050949094019490945250919392505050565b608081016135de82846001600160601b038082511683528060208301511660208401525060ff604082015116604083015263ffffffff60608201511660608301525050565b60008060008060808587031215614e9f57600080fd5b843593506020850135614eb1816148ff565b9250614ebf60408601614ad0565b91506060850135614cee816148b8565b8060005b6003811015610c94578151845260209384019390910190600101614ed3565b60808101614f008285614ecf565b82151560608301529392505050565b600080600080600060a08688031215614f2757600080fd5b614f3086614961565b94506020860135614f40816148ff565b93506040860135614f50816148ff565b92506060860135614f60816148ff565b91506080860135614f70816148ff565b809150509295509295909350565b60008060408385031215614f9157600080fd5b82356148e4816148b8565b60008060008060808587031215614fb257600080fd5b8435614fbd81614886565b93506020850135614fcd81614886565b92506040850135614fdd81614886565b91506060850135614cee81614886565b600080600080600060a0868803121561500557600080fd5b85359450614f4060208701614ad0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526003908201526243484760e81b604082015260600190565b6020808252600390820152622125a960e91b604082015260600190565b60006020828403121561509657600080fd5b8151613b4f816148ff565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526003908201526213d25160ea1b604082015260600190565b634e487b7160e01b600052602160045260246000fd5b60208082526003908201526205459560ec1b604082015260600190565b6001600160401b038416815260a081016005841061515657634e487b7160e01b600052602160045260246000fd5b8360208301526146a36040830184614ecf565b8183526000602080850194508260005b858110156151a757813561518c816148ff565b6001600160601b031687529582019590820190600101615179565b509495945050505050565b63ffffffff888116825260806020808401829052908301889052600091899160a08501845b8b8110156151fd5760ff6151ea86614ad0565b16825293820193908201906001016151d7565b508581036040870152888152810192508860005b89811015615238578135615224816149a6565b841685529382019390820190600101615211565b50505050828103606084015261524f818587615169565b9a9950505050505050505050565b60208082526003908201526214d39160ea1b604082015260600190565b8a815263ffffffff8a81166020830152604082018a90526001600160601b0389811660608401528881166080840152871660a083015260ff86811660c0840152851660e083015283166101008201526101a081016153136101208301846001600160601b038082511683528060208301511660208401525060ff604082015116604083015263ffffffff60608201511660608301525050565b9b9a5050505050505050505050565b60208082526003908201526204558560ec1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681851680830382111561538a5761538a615355565b01949350505050565b60208082526003908201526210d31160ea1b604082015260600190565b6000602082840312156153c257600080fd5b8151613b4f81614886565b6001600160401b038151168252602081015160208301526001600160601b036040820151166040830152606081015161541160608401826001600160601b03169052565b50608081015161542c60808401826001600160601b03169052565b5060a081015161544160a084018260ff169052565b5060c081015161545660c084018260ff169052565b5060e081015161546e60e084018263ffffffff169052565b506101008181015162ffffff811684830152610c94565b86815263ffffffff861660208201526001600160401b03851660408201526001600160601b038481166060830152831660808201526101c081016147d160a08301846153cd565b87815263ffffffff871660208201526001600160401b03861660408201526001600160601b0385811660608301528481166080830152831660a08201526101e0810161551b60c08301846153cd565b98975050505050505050565b60006001600160401b038083168181141561554457615544615355565b6001019392505050565b600063ffffffff8084168061557357634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b60208082526003908201526253214d60e81b604082015260600190565b6000828210156155ae576155ae615355565b500390565b600082198211156155c6576155c6615355565b500190565b60006000198214156155df576155df615355565b5060010190565b6000602082840312156155f857600080fd5b5051919050565b80516001600160401b031682526020808201516001600160a01b0316908301526040808201516001600160601b03169083015260608082015160ff169083015260808082015115159083015260a09081015163ffffffff16910152565b610140810161566b82886155ff565b6001600160601b0395861660c083015293851660e082015291841661010083015290921661012090920191909152919050565b6000602082840312156156b057600080fd5b8151613b4f816148b8565b87815263ffffffff87166020808301919091526001600160601b03878116604084015286811660608401528581166080840152841660a083015261012082019060c083018460005b600381101561572057815183529183019190830190600101615703565b5050505098975050505050505050565b610160810161573f82896155ff565b60c08201969096526001600160601b0394851660e082015292841661010084015290831661012083015290911661014090910152919050565b600080600080600060a0868803121561579057600080fd5b855161579b816148ff565b60208701519095506157ac816148ff565b60408701519094506157bd816149a6565b60608701519093506157ce816148ff565b60808701519092506fffffffffffffffffffffffffffffffff81168114614f7057600080fd5b60006001600160401b038381169083168181101561581457615814615355565b039392505050565b634e487b7160e01b600052603160045260246000fd5b600063ffffffff8083168185168183048111821515161561585557615855615355565b02949350505050565b60c081016135de82846155ff565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b838110156158d25781810151838201526020016158ba565b83811115610c945750506000910152565b600082516158f58184602087016158b7565b9190910192915050565b602081526000825180602084015261591e8160408501602087016158b7565b601f01601f1916919091016040019291505056fe6204728db10730656ada9f8ce5b258b0d97dc6ac8e8a101ff4b905c3c9cc7dc5a2646970667358221220f52bf24b217ae63c37a2c8c5fc322c86e414c4e0619d4a395ecb7eca27c1e09164736f6c634300080a0033