0 txs
9 calls
constructor
constructor()
functions
assetFee
viewfunction assetFee(address) view returns (uint24)
chainlinkOracle
viewfunction chainlinkOracle(address) view returns (address)
closeSwapRequests
viewfunction closeSwapRequests(bytes32) view returns (bytes32 key, uint256 longAmountFromGMX, uint256 shortAmountFromGMX, uint256 longAmountAvailableToSwap, uint256 shortAmountAvailableToSwap, uint256 leftOver, address longToken, address gmMarketToken, bool done)
eighteenDecimalAsset
viewfunction eighteenDecimalAsset(address) view returns (bool)
estimatePositionProfit
viewfunction estimatePositionProfit(bytes32 key, uint256 _returnedLongToken, uint256 _returnedShortToken) view returns (uint256)
getDepositRecord
viewfunction getDepositRecord(bytes32 key) view returns (tuple)
getEstimatedMarketTokenPrice
viewfunction getEstimatedMarketTokenPrice(address longToken) view returns (int256)
getLatestData
viewfunction getLatestData(address _token, bool _inDecimal) view returns (uint256)
getMarketTokenPrice
viewfunction getMarketTokenPrice(address longToken, bytes32 pnlFactorType, bool maximize) view returns (int256)
getPositionDebt
viewfunction getPositionDebt(address _user, uint256 _positionID) view returns (tuple)
getWithdrawRecord
viewfunction getWithdrawRecord(bytes32 key) view returns (tuple)
isOrderCreatedForKey
viewfunction isOrderCreatedForKey(bytes32) view returns (bool)
isOrderForMultipleSwap
viewfunction isOrderForMultipleSwap(bytes32) view returns (bool)
manualWithdraw
viewfunction manualWithdraw(address) view returns (bool)
orderRefunded
viewfunction orderRefunded(bytes32) view returns (uint256 feesRefunded, uint256 amountRefunded, uint256 longTokenAmountReturned, uint256 shortTokenAmountReturned, uint256 gmTokensRefunded, uint256 depositOrWithdrawal, bool cancelled)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
RoleStore
viewfunction RoleStore() view returns (address)
sixDecimalAsset
viewfunction sixDecimalAsset(address) view returns (bool)
strategyAddresses
viewfunction strategyAddresses() view returns (address USDC, address WaterContract, address VodkaV2, address univ3Router, address dataStore, address oracle, address reader, address depositHandler, address withdrawalHandler)
tempPayableAddress
viewfunction tempPayableAddress() view returns (address)
userRefunds
viewfunction userRefunds(address, uint256) view returns (bytes32)
userToRefund
viewfunction userToRefund(bytes32) view returns (address)
VodkaV2Swapper
viewfunction VodkaV2Swapper() view returns (address)
WETH
viewfunction WETH() view returns (address)
WrappedBTC
viewfunction WrappedBTC() view returns (address)
afterDepositCancellation
nonpayablefunction afterDepositCancellation(bytes32 key, tuple deposit, tuple eventData)
afterDepositExecution
nonpayablefunction afterDepositExecution(bytes32 key, tuple deposit, tuple eventData)
afterWithdrawalCancellation
nonpayablefunction afterWithdrawalCancellation(bytes32 key, tuple withdrawal, tuple eventData)
afterWithdrawalExecution
nonpayablefunction afterWithdrawalExecution(bytes32 key, tuple withdrawal, tuple eventData)
executeSwap
nonpayablefunction executeSwap(uint256 _amount, address _tokenIn, address _tokenOut, address _recipient) returns (uint256)
finalizeClosePosition
nonpayablefunction finalizeClosePosition(bytes32 key, uint256 _received)
fixWithdrawalManual
nonpayablefunction fixWithdrawalManual(bytes32 key, uint256 _receivedLongAmount, uint256 _receivedShortAmount)
initialize
nonpayablefunction initialize(address _USDC, address _VodkaV2)
refundExecutionFee
payablefunction refundExecutionFee(bytes32 key, tuple eventData) payable
renounceOwnership
nonpayablefunction renounceOwnership()
requestGMXV2Swap
payablefunction requestGMXV2Swap(bytes32 _key) payable
setChainlinkOracleForAsset
nonpayablefunction setChainlinkOracleForAsset(address _token, address _oracle)
setEighteenDecimalAsset
nonpayablefunction setEighteenDecimalAsset(address _asset, bool _eighteenDecimal)
setManualWithdraw
nonpayablefunction setManualWithdraw(address _token, bool _manual)
setSixDecimalAsset
nonpayablefunction setSixDecimalAsset(address _asset, bool _sixDecimal)
setStrategyParams
nonpayablefunction setStrategyParams(address _univ3Router, address _dataStore, address _oracle, address _reader, address _depositHandler, address _withdrawalHandler)
setUniv3Fee
nonpayablefunction setUniv3Fee(uint24 _univ3Fee, address _asset)
setVodkaV2Swapper
nonpayablefunction setVodkaV2Swapper(address _VodkaV2Swapper)
takeAll
nonpayablefunction takeAll(address _inputAsset)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
ChainlinkOracleSet
event ChainlinkOracleSet(address token, address oracle)
CloseFinalized
event CloseFinalized(bytes32 key, uint256 shortTokenAmount, uint256 longTokenAmount)
Initialized
event Initialized(uint8 version)
KeysPendingSwap
event KeysPendingSwap(bytes32 key, uint256 longAmount, uint256 shortAmount, bool isOrderForMultipleSwap, uint256 longAmountAvailableToSwap, uint256 shortAmountAvailableToSwap)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RepayDepositFailure
event RepayDepositFailure(address user, uint256 amount, string errorMessage, string stackTrace)
SecondSwapRequest
event SecondSwapRequest(bytes32 key, uint256 leftOver)
StrategyParamsSet
event StrategyParamsSet(address univ3Router, address dataStore, address oracle, address reader, address depositHandler, address withdrawalHandler)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61590980620000f36000396000f3fe6080604052600436106102115760003560e01c80630afda3511461021d5780630fa63fe41461023f578063100e196d1461028b57806319c2d37e1461033657806321d41b32146103635780632b70b891146103a45780632f2708a2146103c45780633201ab4d146103e4578063395aef8e146104045780633a2cb99f146104475780633c37224014610475578063485cc955146104885780635c975abb146104a85780635ce98de7146104c05780635f82eba8146104e0578063715018a61461050057806372ccfa6014610515578063753672d51461053557806376f1ef10146105565780637db2bd3e146105765780638c4d0d60146105a75780638da5cb5b146105d857806394fce92b146105ed57806396e1ae101461061a5780639a4a1a9a1461064b5780639f0938711461066b5780639f17af99146106fd578063a5ab05ab1461071d578063a5efb24d1461073d578063a7c49f5a1461075d578063a8f098d214610794578063ad5c4648146107b5578063b2fd9495146107d6578063b63d5354146107e9578063ba871dcd14610809578063bf3810a914610829578063c4b2b98014610849578063c9888ec114610869578063c9ac221a14610889578063cc662466146108a9578063ceb0c445146108c9578063e88c3561146108f6578063f2fde38b146109c0578063f5faa892146109e0578063fd77d17514610a11578063ff06f7b214610a3157600080fd5b3661021857005b600080fd5b34801561022957600080fd5b5061023d61023836600461398d565b610a51565b005b34801561024b57600080fd5b5061027261025a3660046139c6565b61010c6020526000908152604090205462ffffff1681565b60405162ffffff90911681526020015b60405180910390f35b34801561029757600080fd5b5060c95460ca5460cb5460cc5460cd5460ce5460cf5460d05460d1546102dc986001600160a01b03908116988116978116968116958116948116938116928116911689565b604080516001600160a01b039a8b168152988a1660208a01529689169688019690965293871660608701529186166080860152851660a0850152841660c0840152831660e083015290911661010082015261012001610282565b34801561034257600080fd5b506103566103513660046139f7565b610a85565b6040516102829190613a32565b34801561036f57600080fd5b5061039461037e3660046139c6565b6101146020526000908152604090205460ff1681565b6040519015158152602001610282565b3480156103b057600080fd5b5061023d6103bf366004613a40565b610b12565b3480156103d057600080fd5b5061023d6103df36600461398d565b610ca3565b3480156103f057600080fd5b5061023d6103ff366004613a6c565b610cd7565b34801561041057600080fd5b5061043a61041f3660046139c6565b60d4602052600090815260409020546001600160a01b031681565b6040516102829190613a8e565b34801561045357600080fd5b506104676104623660046139c6565b61104e565b604051908152602001610282565b61023d610483366004614a67565b6112c9565b34801561049457600080fd5b5061023d6104a3366004614aad565b611562565b3480156104b457600080fd5b5060975460ff16610394565b3480156104cc57600080fd5b5061023d6104db3660046139c6565b6116bb565b3480156104ec57600080fd5b5060d55461043a906001600160a01b031681565b34801561050c57600080fd5b5061023d6116e6565b34801561052157600080fd5b5061023d610530366004614b8a565b6116fa565b34801561054157600080fd5b506101135461043a906001600160a01b031681565b34801561056257600080fd5b50610467610571366004614cf1565b611813565b34801561058257600080fd5b506103946105913660046139c6565b61010d6020526000908152604090205460ff1681565b3480156105b357600080fd5b506103946105c2366004614d44565b6101126020526000908152604090205460ff1681565b3480156105e457600080fd5b5061043a611875565b3480156105f957600080fd5b5061060d610608366004614d44565b611884565b6040516102829190614d5d565b34801561062657600080fd5b50610394610635366004614d44565b6101116020526000908152604090205460ff1681565b34801561065757600080fd5b50610467610666366004614dcf565b61192f565b34801561067757600080fd5b506106c6610686366004614d44565b60d2602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293919290919060ff1687565b604080519788526020880196909652948601939093526060850191909152608084015260a0830152151560c082015260e001610282565b34801561070957600080fd5b5061023d61071836600461398d565b611c0d565b34801561072957600080fd5b5061023d6107383660046139c6565b611c41565b34801561074957600080fd5b5061023d610758366004614e11565b611d2d565b34801561076957600080fd5b5061043a610778366004614d44565b610110602052600090815260409020546001600160a01b031681565b3480156107a057600080fd5b5061010a5461043a906001600160a01b031681565b3480156107c157600080fd5b5061010b5461043a906001600160a01b031681565b61023d6107e4366004614d44565b611dd1565b3480156107f557600080fd5b5060d65461043a906001600160a01b031681565b34801561081557600080fd5b50610467610824366004613a40565b6122fc565b34801561083557600080fd5b5061046761084436600461398d565b612506565b34801561085557600080fd5b5061023d610864366004614e37565b505050565b34801561087557600080fd5b506104676108843660046139f7565b61278e565b34801561089557600080fd5b5061023d6108a4366004614b8a565b6127bf565b3480156108b557600080fd5b5061023d6108c4366004614aad565b612c34565b3480156108d557600080fd5b506108e96108e4366004614d44565b612c90565b6040516102829190614fae565b34801561090257600080fd5b5061096e610911366004614d44565b61010f60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701549596949593949293919290916001600160a01b0391821691811690600160a01b900460ff1689565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a08501526001600160a01b0390811660c08501521660e0830152151561010082015261012001610282565b3480156109cc57600080fd5b5061023d6109db3660046139c6565b612d65565b3480156109ec57600080fd5b506103946109fb3660046139c6565b61010e6020526000908152604090205460ff1681565b348015610a1d57600080fd5b5061023d610a2c366004614e37565b612ddb565b348015610a3d57600080fd5b5061023d610a4c366004615032565b612f3a565b610a59613008565b6001600160a01b0391909116600090815261011460205260409020805460ff1916911515919091179055565b6040805180820182526000808252602082015260cb5491516301e73a5f60e61b815290916001600160a01b0316906379ce97c090610ac990869086906004016150b4565b6040805180830381865afa158015610ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0991906150fd565b90505b92915050565b610b1a613008565b6000610b2584611884565b60c954909150610b40906001600160a01b0316333085613067565b60a0810151610b5a906001600160a01b0316333086613067565b60cb5460c954610b77916001600160a01b039182169116846130d2565b60cb5460a0820151610b96916001600160a01b039182169116856130d2565b8060800151610c255760cb546001600160a01b0316639137be7a858585610bbe8383836122fc565b6040518563ffffffff1660e01b8152600401610bdd9493929190615119565b6020604051808303816000875af1158015610bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c20919061513f565b610c9c565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90610c599087908790879060040161515c565b6020604051808303816000875af1158015610c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9c919061513f565b5050505050565b610cab613008565b6001600160a01b0391909116600090815261010d60205260409020805460ff1916911515919091179055565b610cdf6130f1565b610113546001600160a01b0316331480610d115750610cfc611875565b6001600160a01b0316336001600160a01b0316145b610d505760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064015b60405180910390fd5b6000610d5b83611884565b600084815261010f602052604080822083519184015193945092610d7f9190610a85565b6000868152610111602052604090205490915060ff168015610db157506000858152610112602052604090205460ff16155b15610e3c5780516001830154610dc8908690615188565b610dd2919061519b565b600383019081556000868152610112602052604090819020805460ff191660011790558354915490517f9bb3f265562ad4d42fe6bc8ec0cc15e82e766e4e3ba72c75c66d2fb3fdd6f1ab92610e2f92908252602082015260400190565b60405180910390a161103d565b8051600483015460009015801590610e58575060008460030154115b15610e83578360040154868460200151610e729190615188565b610e7c9190615188565b9050610e96565b858360200151610e939190615188565b90505b60cb5460c954610eb3916001600160a01b039182169116836130d2565b60cb5460a0860151610ed2916001600160a01b039182169116846130d2565b60078401805460ff60a01b1916600160a01b1790556080850151610f875760cb54600185015460028601546001600160a01b0390921691639137be7a918a9186918691610f209185916122fc565b6040518563ffffffff1660e01b8152600401610f3f9493929190615119565b6020604051808303816000875af1158015610f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f82919061513f565b610ffe565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90610fbb908a908690869060040161515c565b6020604051808303816000875af1158015610fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffe919061513f565b507f9c341c91384ec36b9d393c98615da5bf201c12f801111ca44b299c61a6b3730b8782846040516110329392919061515c565b60405180910390a150505b50505061104a6001606555565b5050565b60cb54604051639c735fbb60e01b815260009182916001600160a01b0390911690639c735fbb90611083908690600401613a8e565b60c060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906151b9565b90506000604051806080016040528083604001516001600160a01b0316815260200183606001516001600160a01b0316815260200183600001516001600160a01b0316815260200183602001516001600160a01b031681525090506000604051806040016040528061113b85606001516001612506565b815260200161114f85606001516001612506565b81525090506000604051806040016040528061116c886001612506565b815260200161117c886001612506565b90526040805180820190915260c95491925060009181906111a7906001600160a01b03166001612506565b815260c9546020909101906111c6906001600160a01b03166001612506565b905260cf5460cd546040519293506000926001600160a01b039283169263095ce6c5921690889088908890889061122f906020016020808252601b908201527a4d41585f504e4c5f464143544f525f464f525f4445504f5349545360281b604082015260600190565b6040516020818303038152906040528051906020012060006040518863ffffffff1660e01b81526004016112699796959493929190615263565b61018060405180830381865afa158015611287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ab91906152ea565b5090506112bd64e8d4a51000826153b4565b98975050505050505050565b60d6546040516001600160a01b039091169063ac4ab3fb9033906112ef906020016153e2565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004016113229291906150b4565b602060405180830381865afa15801561133f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611363919061513f565b61137f5760405162461bcd60e51b8152600401610d4790615406565b600061138a83612c90565b9050600061139784611884565b82519091506001600160a01b03166115075760cb54604051631f6f85f960e11b8152600481018690526001600160a01b0390911690633edf0bf290602401602060405180830381865afa1580156113f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611416919061513f565b156114ae5760cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa158015611465573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611489919061542f565b60d580546001600160a01b0319166001600160a01b0392909216919091179055611529565b8060800151156114e15760e081015160d580546001600160a01b0319166001600160a01b03909216919091179055611529565b805160d580546001600160a01b0319166001600160a01b03909216919091179055611529565b815160d580546001600160a01b0319166001600160a01b039092169190911790555b60d5546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610c9c573d6000803e3d6000fd5b600054610100900460ff16158080156115825750600054600160ff909116105b806115a3575061159130613151565b1580156115a3575060005460ff166001145b6116065760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d47565b6000805460ff191660011790558015611629576000805461ff0019166101001790555b60cb80546001600160a01b038085166001600160a01b03199283161790925560c9805492861692909116919091179055611661613160565b61166961318f565b6116716131be565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6116c3613008565b61011380546001600160a01b0319166001600160a01b0392909216919091179055565b6116ee613008565b6116f860006131ed565b565b60d6546040516001600160a01b039091169063ac4ab3fb903390611720906020016153e2565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004016117539291906150b4565b602060405180830381865afa158015611770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611794919061513f565b6117b05760405162461bcd60e51b8152600401610d4790615406565b60cb546040516365f1680b60e11b8152600481018590526001600160a01b039091169063cbe2d01690602401600060405180830381600087803b1580156117f657600080fd5b505af115801561180a573d6000803e3d6000fd5b50505050505050565b60cb546000906001600160a01b0316331461185e5760405162461bcd60e51b815260206004820152600b60248201526a2737ba102b37b235b0ab1960a91b6044820152606401610d47565b61186a8585858561323f565b90505b949350505050565b6033546001600160a01b031690565b6040805161010081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e082015260cb54915163191618a160e21b81526004810184905290916001600160a01b03169063645862849060240161010060405180830381865afa15801561190b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0c919061544c565b60cb54604051639c735fbb60e01b815260009182916001600160a01b0390911690639c735fbb90611964908890600401613a8e565b60c060405180830381865afa158015611981573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a591906151b9565b90506119af613910565b60408051608081018252838201516001600160a01b0390811682526060808601805183166020808601919091528751841685870152808801518416928501929092529085018990528715158585015260ce5490519351631773dc6560e21b815292936000939190921691635dcf719491611a2c9190600401613a8e565b6040805180830381865afa158015611a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6c91906150fd565b60ce548551604051631773dc6560e21b81529293506000926001600160a01b0390921691635dcf719491611aa291600401613a8e565b6040805180830381865afa158015611abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae291906150fd565b60ce546020870151604051631773dc6560e21b81529293506000926001600160a01b0390921691635dcf719491611b1b91600401613a8e565b6040805180830381865afa158015611b37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5b91906150fd565b60cf5460cd5460208801516040808a0151905163095ce6c560e01b81529495506001600160a01b039384169463095ce6c594611ba59416928a928a928a928a929091600401615263565b61018060405180830381865afa158015611bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be791906152ea565b50808652611bfb9064e8d4a51000906153b4565b94859052509298975050505050505050565b611c15613008565b6001600160a01b0391909116600090815261010e60205260409020805460ff1916911515919091179055565b611c49613008565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190611c78903090600401613a8e565b602060405180830381865afa158015611c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb99190615500565b60405163a9059cbb60e01b81529091506001600160a01b0383169063a9059cbb90611cea90339085906004016150b4565b6020604051808303816000875af1158015611d09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610864919061513f565b611d35613008565b6001600160a01b038116611d5b5760405162461bcd60e51b8152600401610d4790615519565b6113888262ffffff161115611da15760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b6044820152606401610d47565b6001600160a01b0316600090815261010c60205260409020805462ffffff191662ffffff92909216919091179055565b611dd96130f1565b60cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa158015611e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e47919061542f565b6001600160a01b0316336001600160a01b031614611e945760405162461bcd60e51b815260206004820152600a6024820152692737ba1035b2b2b832b960b11b6044820152606401610d47565b6000611e9f82611884565b600083815261010f602052604090206006810154919250906001600160a01b0316611ef95760405162461bcd60e51b815260206004820152600a602482015269139bc81c995c5d595cdd60b21b6044820152606401610d47565b6007810154600160a01b900460ff1615611f3e5760405162461bcd60e51b8152600401610d4790602080825260049082015263646f6e6560e01b604082015260600190565b60068101546007820154600085815261011160205260409020546001600160a01b03928316929091169060ff168015611f8757506000858152610112602052604090205460ff16155b156120ba576000836004015411611fb05760405162461bcd60e51b8152600401610d479061553f565b60c9546101135460048086015460405163095ea7b360e01b81526001600160a01b039485169463095ea7b394611fea9491169291016150b4565b6020604051808303816000875af1158015612009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202d919061513f565b506101135460c95460048581015460008981526101106020526040908190205490516341c70b0160e11b81526001600160a01b039586169563838e160295349561208395918316948a948f949091169101615562565b6000604051808303818588803b15801561209c57600080fd5b505af11580156120b0573d6000803e3d6000fd5b50505050506122eb565b60008581526101116020526040902054661550f7dca700009060ff1661212357662aa1efb94e00003410156121235760405162461bcd60e51b815260206004820152600f60248201526e4e6f7420656e6f756768206665657360881b6044820152606401610d47565b60008460030154116121475760405162461bcd60e51b8152600401610d479061553f565b61011354600385015460405163095ea7b360e01b81526001600160a01b038681169363095ea7b3936121809392909116916004016150b4565b6020604051808303816000875af115801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c3919061513f565b5061011354600385015460008881526101106020526040908190205490516341c70b0160e11b81526001600160a01b039384169363838e1602938693612216938a938a938f939092911690600401615562565b6000604051808303818588803b15801561222f57600080fd5b505af1158015612243573d6000803e3d6000fd5b5050506000888152610111602052604090205460ff1691506122e99050578460800151156122ae578460e001516001600160a01b03166108fc829081150290604051600060405180830381858888f193505050501580156122a8573d6000803e3d6000fd5b506122e9565b84516040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156122e7573d6000803e3d6000fd5b505b505b505050506122f96001606555565b50565b60008061230885611884565b60cb548151604080840151905163de91a5e560e01b81529394506000936001600160a01b039093169263de91a5e5926123459290916004016150b4565b61018060405180830381865afa158015612363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238791906155b8565b9050600061239d83600001518460400151610a85565b905060006123b08460a001516000612506565b61010a5460a086015191925060009182916001600160a01b0390811691160361241e5768056bc75e2d631000006123e7848b615681565b6123f19190615698565b915068056bc75e2d6310000083856000015161240d9190615681565b6124179190615698565b905061246b565b68327cb2734119d3b7a9601e1b612435848b615681565b61243f9190615698565b915068327cb2734119d3b7a9601e1b83856000015161245e9190615681565b6124689190615698565b90505b60c954600090612485906001600160a01b03166001612506565b9050600069d3c21bcecceda100000061249e838c615681565b6124a89190615698565b905060006124b68286615188565b885160208901519192506000916124cd9087615188565b6124d79190615188565b905060008183116124e95760006124f3565b6124f3828461519b565b9f9e505050505050505050505050505050565b600080600061010960009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561255f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258391906156c3565b5091945092505082159050600061259a834261519b565b9050610e1081116125e55760405162461bcd60e51b815260206004820152601560248201527423b930b1b2903832b934b7b2103737ba1037bb32b960591b6044820152606401610d47565b816126265760405162461bcd60e51b815260206004820152601160248201527029b2b8bab2b731b2b91034b9903237bbb760791b6044820152606401610d47565b6001600160a01b03808816600090815260d46020526040808220548151633fabe5a360e21b815291519293169163feaf968c9160048082019260a0929091908290030181865afa15801561267e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a291906156c3565b5050506001600160a01b038a16600090815261010d6020526040812054919350915060ff16156126ef576126db826402540be400615681565b6126e890620f4240615681565b90506112bd565b61010a546001600160a01b03908116908a160361272157612715826402540be400615681565b6126e890612710615681565b6001600160a01b0389166000908152610114602052604090205460ff161561276457662386f26fc1000061275a836402540be400615681565b6126e89190615698565b620f4240612777836402540be400615681565b6127819190615698565b9998505050505050505050565b60d360205281600052604060002081815481106127aa57600080fd5b90600052602060002001600091509150505481565b60d6546040516001600160a01b039091169063ac4ab3fb9033906127e5906020016153e2565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004016128189291906150b4565b602060405180830381865afa158015612835573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612859919061513f565b6128755760405162461bcd60e51b8152600401610d4790615406565b600061288084611884565b9050600061289682600001518360400151610a85565b90506128a0613910565b60008460200151600001516000815181106128bd576128bd615713565b602002602001015160200151905060008560200151600001516001815181106128e8576128e8615713565b60209081029190910181015181015160a08701516001600160a01b0316600090815261010e90925260409091205490915060ff16612b9657600080856000015184111561298457855160009061293e908661519b565b905061294a818661519b565b60a089015160c95491945061296b918391906001600160a01b03163061323f565b6080870181905261297c9085615188565b915050612a1a565b6000866020015184612996919061519b565b60c95460a08a01519192506129b79183916001600160a01b0316903061323f565b60a0870181905287516000916129ce908890615188565b6129d8919061519b565b60a08a015160c9549192506000916129fb9184916001600160a01b03163061323f565b905088600001519450808960200151612a149190615188565b93505050505b670de0b6b3a764000082612a338960a001516001612506565b612a3d9190615681565b612a479190615698565b60c086015260cb5460c954612a69916001600160a01b039182169116836130d2565b60cb5460a0880151612a88916001600160a01b039182169116846130d2565b8660800151612b175760cb546001600160a01b0316639137be7a8b8484612ab0838a8a6122fc565b6040518563ffffffff1660e01b8152600401612acf9493929190615119565b6020604051808303816000875af1158015612aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b12919061513f565b612b8e565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90612b4b908d908690869060040161515c565b6020604051808303816000875af1158015612b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8e919061513f565b505050612c2a565b60cb5460a0860151604051639c735fbb60e01b81526000926001600160a01b031691639c735fbb91612bcb9190600401613a8e565b60c060405180830381865afa158015612be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0c91906151b9565b9050612c2889848488600001518960200151866040015161352b565b505b5050505050505050565b612c3c613008565b6001600160a01b038216612c625760405162461bcd60e51b8152600401610d4790615519565b6001600160a01b03918216600090815260d46020526040902080546001600160a01b03191691909216179055565b612cf760405180610120016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600061ffff16815260200160006001600160a01b031681525090565b60cb5460405163546fcf3960e01b8152600481018490526001600160a01b039091169063546fcf399060240161012060405180830381865afa158015612d41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0c9190615729565b612d6d613008565b6001600160a01b038116612dd25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d47565b6122f9816131ed565b60d6546040516001600160a01b039091169063ac4ab3fb903390612e01906020016153e2565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401612e349291906150b4565b602060405180830381865afa158015612e51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e75919061513f565b612e915760405162461bcd60e51b8152600401610d4790615406565b60cb5460208201515180516001600160a01b039092169163862a8208918691600090612ebf57612ebf615713565b6020026020010151602001516040518363ffffffff1660e01b8152600401612ef1929190918252602082015260400190565b6020604051808303816000875af1158015612f10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f34919061513f565b50505050565b612f42613008565b60cc80546001600160a01b038881166001600160a01b0319928316811790935560cd8054898316908416811790915560ce8054898416908516811790915560cf8054898516908616811790915560d08054898616908716811790915560d18054958916959096168517909555604080519687526020870193909352918501526060840152608083019190915260a08201527f03f1afd7ce30865f51a6e0b71bd812eb2a48c45e187b710c8e67eaaa53c15c579060c00160405180910390a1505050505050565b33613011611875565b6001600160a01b0316146116f85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d47565b6040516001600160a01b0380851660248301528316604482015260648101829052612f349085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526136a0565b6108648363a9059cbb60e01b848460405160240161309b9291906150b4565b6002606554036131435760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d47565b6002606555565b6001606555565b6001600160a01b03163b151590565b600054610100900460ff166131875760405162461bcd60e51b8152600401610d47906157b1565b6116f8613775565b600054610100900460ff166131b65760405162461bcd60e51b8152600401610d47906157b1565b6116f86137a5565b600054610100900460ff166131e55760405162461bcd60e51b8152600401610d47906157b1565b6116f86137d8565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000846000036132515750600061186d565b60cc5460405163095ea7b360e01b81526000916001600160a01b038088169263095ea7b3926132869216908a906004016150b4565b6020604051808303816000875af11580156132a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c9919061513f565b5061010b546001600160a01b038681169116148015906132f8575061010b546001600160a01b03858116911614155b15613419576040805160a0810182526001600160a01b03878116600090815261010c60209081528482205461010b5480851684528684205460608d811b6001600160601b031990811660c08a015260e894851b6001600160e81b031990811660d48b015293821b811660d78a01529190931b90911660eb8701528a821b1660ee860152855160e281870301815261010286018752855288841691850191909152428486015283018a9052608083015260cc54925163c04b8d5960e01b81529192169063c04b8d59906133ce90849060040161584c565b6020604051808303816000875af11580156133ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134119190615500565b91505061186a565b60408051610100810182526001600160a01b038781168083528782166020808501918252600092835261010c90528482205462ffffff90811685870190815289851660608701908152426080880190815260a088018f815260c0890187815260e08a0197885260cc549a5163414bf38960e01b81528a518a16600482015296518916602488015293519094166044860152905186166064850152516084840152905160a48301525160c48201529051821660e48201529192169063414bf38990610104016020604051808303816000875af11580156134fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135209190615500565b979650505050505050565b600086815261010f602052604081209061354488611884565b8883556001830188905560028301879055905084871161356557600061356f565b61356f858861519b565b600383015583861161358257600061358c565b61358c848761519b565b6004830190815560a08201516006840180546001600160a01b039283166001600160a01b031991821617909155600785018054878416908316179055835160008c815261011060205260409020805491909316911617905554158015906135f557506003820154155b1561361557600088815261011160205260409020805460ff191660011790555b6001820154600283015460008a81526101116020908152604091829020546003870154600488015484518f8152938401969096529282019390935260ff90921615156060830152608082015260a08101919091527f41aa0b642d7539321de3afda61eeb8c6bbf79ab4ea7a567e420c9663a846a7599060c00160405180910390a15050505050505050565b60006136f5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166137ff9092919063ffffffff16565b9050805160001480613716575080806020019051810190613716919061513f565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d47565b600054610100900460ff1661379c5760405162461bcd60e51b8152600401610d47906157b1565b6116f8336131ed565b600054610100900460ff166137cc5760405162461bcd60e51b8152600401610d47906157b1565b6097805460ff19169055565b600054610100900460ff1661314a5760405162461bcd60e51b8152600401610d47906157b1565b606061186d848460008585600080866001600160a01b0316858760405161382691906158a4565b60006040518083038185875af1925050503d8060008114613863576040519150601f19603f3d011682016040523d82523d6000602084013e613868565b606091505b509150915061352087838387606083156138e15782516000036138da5761388e85613151565b6138da5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d47565b508161186d565b61186d83838151156138f65781518083602001fd5b8060405162461bcd60e51b8152600401610d4791906158c0565b604051806101000160405280600081526020016000801916815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b03811681146122f957600080fd5b803561397a8161395a565b919050565b80151581146122f957600080fd5b600080604083850312156139a057600080fd5b82356139ab8161395a565b915060208301356139bb8161397f565b809150509250929050565b6000602082840312156139d857600080fd5b81356139e38161395a565b9392505050565b6001600160a01b03169052565b60008060408385031215613a0a57600080fd5b8235613a158161395a565b946020939093013593505050565b80518252602090810151910152565b60408101610b0c8284613a23565b600080600060608486031215613a5557600080fd5b505081359360208301359350604090920135919050565b60008060408385031215613a7f57600080fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613ada57613ada613aa2565b60405290565b60405160e081016001600160401b0381118282101715613ada57613ada613aa2565b604051606081016001600160401b0381118282101715613ada57613ada613aa2565b60405161012081016001600160401b0381118282101715613ada57613ada613aa2565b60405161016081016001600160401b0381118282101715613ada57613ada613aa2565b60405161018081016001600160401b0381118282101715613ada57613ada613aa2565b604051601f8201601f191681016001600160401b0381118282101715613bb557613bb5613aa2565b604052919050565b60006001600160401b03821115613bd657613bd6613aa2565b5060051b60200190565b600082601f830112613bf157600080fd5b81356001600160401b03811115613c0a57613c0a613aa2565b613c1d601f8201601f1916602001613b8d565b818152846020838601011115613c3257600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112613c6057600080fd5b81356020613c75613c7083613bbd565b613b8d565b82815260059290921b84018101918181019086841115613c9457600080fd5b8286015b84811015613cb8578035613cab8161395a565b8352918301918301613c98565b509695505050505050565b600082601f830112613cd457600080fd5b81356020613ce4613c7083613bbd565b82815260059290921b84018101918181019086841115613d0357600080fd5b8286015b84811015613cb85780356001600160401b0380821115613d275760008081fd5b908801906040828b03601f1901811315613d415760008081fd5b613d49613ab8565b8784013583811115613d5b5760008081fd5b613d698d8a83880101613be0565b825250908301359082821115613d7f5760008081fd5b613d8d8c8984870101613c4f565b818901528652505050918301918301613d07565b60006040808385031215613db457600080fd5b613dbc613ab8565b915082356001600160401b0380821115613dd557600080fd5b818501915085601f830112613de957600080fd5b81356020613df9613c7083613bbd565b82815260059290921b84018101918181019089841115613e1857600080fd5b8286015b84811015613e9757803586811115613e345760008081fd5b8701808c03601f1901891315613e4a5760008081fd5b613e52613ab8565b8582013588811115613e645760008081fd5b613e728e8883860101613be0565b8252509089013590613e838261395a565b808601919091528352918301918301613e1c565b5087525086810135945082851115613eae57600080fd5b613eba88868901613cc3565b81870152505050505092915050565b600082601f830112613eda57600080fd5b81356020613eea613c7083613bbd565b828152600592831b8501820192828201919087851115613f0957600080fd5b8387015b85811015613ffe5780356001600160401b0380821115613f2d5760008081fd5b908901906040828c03601f1901811315613f475760008081fd5b613f4f613ab8565b8884013583811115613f615760008081fd5b613f6f8e8b83880101613be0565b8252508184013583811115613f845760008081fd5b8085019450508c603f850112613f9c57600092508283fd5b888401359250613fae613c7084613bbd565b83815292861b8401820192898101908e851115613fcb5760008081fd5b948301945b84861015613fe95785358252948a0194908a0190613fd0565b828b0152508752505050928401928401613f0d565b5090979650505050505050565b6000604080838503121561401e57600080fd5b614026613ab8565b915082356001600160401b038082111561403f57600080fd5b818501915085601f83011261405357600080fd5b81356020614063613c7083613bbd565b82815260059290921b8401810191818101908984111561408257600080fd5b8286015b848110156140f45780358681111561409e5760008081fd5b8701808c03601f19018913156140b45760008081fd5b6140bc613ab8565b85820135888111156140ce5760008081fd5b6140dc8e8883860101613be0565b82525090890135858201528352918301918301614086565b508752508681013594508285111561410b57600080fd5b613eba88868901613ec9565b6000604080838503121561412a57600080fd5b614132613ab8565b915082356001600160401b038082111561414b57600080fd5b818501915085601f83011261415f57600080fd5b8135602061416f613c7083613bbd565b82815260059290921b8401810191818101908984111561418e57600080fd5b8286015b848110156140f4578035868111156141aa5760008081fd5b8701808c03601f19018913156141c05760008081fd5b6141c8613ab8565b85820135888111156141da5760008081fd5b6141e88e8883860101613be0565b82525090890135858201528352918301918301614192565b600082601f83011261421157600080fd5b81356020614221613c7083613bbd565b828152600592831b850182019282820191908785111561424057600080fd5b8387015b85811015613ffe5780356001600160401b03808211156142645760008081fd5b908901906040828c03601f190181131561427e5760008081fd5b614286613ab8565b88840135838111156142985760008081fd5b6142a68e8b83880101613be0565b82525081840135838111156142bb5760008081fd5b8085019450508c603f8501126142d357600092508283fd5b8884013592506142e5613c7084613bbd565b83815292861b8401820192898101908e8511156143025760008081fd5b948301945b8486101561432c578535935061431c8461397f565b838252948a0194908a0190614307565b828b0152508752505050928401928401614244565b6000604080838503121561435457600080fd5b61435c613ab8565b915082356001600160401b038082111561437557600080fd5b818501915085601f83011261438957600080fd5b81356020614399613c7083613bbd565b82815260059290921b840181019181810190898411156143b857600080fd5b8286015b84811015614437578035868111156143d45760008081fd5b8701808c03601f19018913156143ea5760008081fd5b6143f2613ab8565b85820135888111156144045760008081fd5b6144128e8883860101613be0565b82525090890135906144238261397f565b8086019190915283529183019183016143bc565b508752508681013594508285111561444e57600080fd5b613eba88868901614200565b600082601f83011261446b57600080fd5b8135602061447b613c7083613bbd565b82815260059290921b8401810191818101908684111561449a57600080fd5b8286015b84811015613cb8576001600160401b0381358110156144bc57600080fd5b813588016040818b03601f190112156144d457600080fd5b6144dc613ab8565b86820135838111156144ed57600080fd5b6144fb8c8983860101613be0565b82525060408201358381111561451057600080fd5b8083019250508a603f83011261452557600080fd5b86820135614535613c7082613bbd565b81815260059190911b830160400190888101908d83111561455557600080fd5b604085015b8381101561458d57868135111561457057600080fd5b6145808f60408335890101613be0565b8352918a01918a0161455a565b50838a015250508552505091830191830161449e565b600060408083850312156145b657600080fd5b6145be613ab8565b915082356001600160401b03808211156145d757600080fd5b818501915085601f8301126145eb57600080fd5b813560206145fb613c7083613bbd565b82815260059290921b8401810191818101908984111561461a57600080fd5b8286015b848110156146aa578035868111156146365760008081fd5b8701808c03601f190189131561464c5760008081fd5b614654613ab8565b85820135888111156146665760008081fd5b6146748e8883860101613be0565b82525089820135888111156146895760008081fd5b6146978e8883860101613be0565b828801525084525091830191830161461e565b50875250868101359450828511156146c157600080fd5b613eba8886890161445a565b600082601f8301126146de57600080fd5b813560206146ee613c7083613bbd565b82815260059290921b8401810191818101908684111561470d57600080fd5b8286015b84811015613cb8576001600160401b03813581101561472f57600080fd5b813588016040818b03601f1901121561474757600080fd5b61474f613ab8565b868201358381111561476057600080fd5b61476e8c8983860101613be0565b82525060408201358381111561478357600080fd5b8083019250508a603f83011261479857600080fd5b868201356147a8613c7082613bbd565b81815260059190911b830160400190888101908d8311156147c857600080fd5b604085015b838110156148005786813511156147e357600080fd5b6147f38f60408335890101613be0565b8352918a01918a016147cd565b50838a0152505085525050918301918301614711565b6000604080838503121561482957600080fd5b614831613ab8565b915082356001600160401b038082111561484a57600080fd5b818501915085601f83011261485e57600080fd5b8135602061486e613c7083613bbd565b82815260059290921b8401810191818101908984111561488d57600080fd5b8286015b8481101561491d578035868111156148a95760008081fd5b8701808c03601f19018913156148bf5760008081fd5b6148c7613ab8565b85820135888111156148d95760008081fd5b6148e78e8883860101613be0565b82525089820135888111156148fc5760008081fd5b61490a8e8883860101613be0565b8288015250845250918301918301614891565b508752508681013594508285111561493457600080fd5b613eba888689016146cd565b600060e0828403121561495257600080fd5b61495a613ae0565b905081356001600160401b038082111561497357600080fd5b61497f85838601613da1565b8352602084013591508082111561499557600080fd5b6149a18583860161400b565b602084015260408401359150808211156149ba57600080fd5b6149c685838601614117565b604084015260608401359150808211156149df57600080fd5b6149eb85838601614341565b60608401526080840135915080821115614a0457600080fd5b614a108583860161400b565b608084015260a0840135915080821115614a2957600080fd5b614a35858386016145a3565b60a084015260c0840135915080821115614a4e57600080fd5b50614a5b84828501614816565b60c08301525092915050565b60008060408385031215614a7a57600080fd5b8235915060208301356001600160401b03811115614a9757600080fd5b614aa385828601614940565b9150509250929050565b60008060408385031215614ac057600080fd5b8235614acb8161395a565b915060208301356139bb8161395a565b600060e08284031215614aed57600080fd5b614af5613ae0565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015292915050565b600060208284031215614b4f57600080fd5b604051602081016001600160401b0381118282101715614b7157614b71613aa2565b6040529050808235614b828161397f565b905292915050565b600080600060608486031215614b9f57600080fd5b8335925060208401356001600160401b0380821115614bbd57600080fd5b908501906101208288031215614bd257600080fd5b614bda613b02565b823582811115614be957600080fd5b830160e0818a031215614bfb57600080fd5b614c03613ae0565b614c0c8261396f565b8152614c1a6020830161396f565b6020820152614c2b6040830161396f565b6040820152614c3c6060830161396f565b6060820152614c4d6080830161396f565b608082015260a082013584811115614c6457600080fd5b614c708b828501613c4f565b60a08301525060c082013584811115614c8857600080fd5b614c948b828501613c4f565b60c083015250825250614caa8860208501614adb565b6020820152614cbd886101008501614b3d565b6040820152809450506040860135915080821115614cda57600080fd5b50614ce786828701614940565b9150509250925092565b60008060008060808587031215614d0757600080fd5b843593506020850135614d198161395a565b92506040850135614d298161395a565b91506060850135614d398161395a565b939692955090935050565b600060208284031215614d5657600080fd5b5035919050565b60006101008201905060018060a01b0380845116835260208401516020840152604084015160408401526060840151151560608401526080840151151560808401528060a08501511660a08401525060c083015160c083015260e0830151614dc860e08401826139ea565b5092915050565b600080600060608486031215614de457600080fd5b8335614def8161395a565b9250602084013591506040840135614e068161397f565b809150509250925092565b60008060408385031215614e2457600080fd5b823562ffffff81168114614acb57600080fd5b600080600060608486031215614e4c57600080fd5b8335925060208401356001600160401b0380821115614e6a57600080fd5b8186019150610120808389031215614e8157600080fd5b614e89613b02565b833583811115614e9857600080fd5b8401808a03831315614ea957600080fd5b614eb1613b24565b9250614ebc8161396f565b8352614eca6020820161396f565b6020840152614edb6040820161396f565b6040840152614eec6060820161396f565b6060840152614efd6080820161396f565b6080840152614f0e60a0820161396f565b60a0840152614f1f60c0820161396f565b60c084015260e081013584811115614f3657600080fd5b614f428b828401613c4f565b60e0850152506101008082013585811115614f5c57600080fd5b614f688c828501613c4f565b8286015250838352614f7d8b60208801614adb565b6020840152614f8e8b828801614b3d565b6040840152505080955050506040860135915080821115614cda57600080fd5b60006101208201905060018060a01b0383511682526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015260e083015161501660e084018261ffff169052565b506101008084015161502a828501826139ea565b505092915050565b60008060008060008060c0878903121561504b57600080fd5b86356150568161395a565b955060208701356150668161395a565b945060408701356150768161395a565b935060608701356150868161395a565b925060808701356150968161395a565b915060a08701356150a68161395a565b809150509295509295509295565b6001600160a01b03929092168252602082015260400190565b6000604082840312156150df57600080fd5b6150e7613ab8565b9050815181526020820151602082015292915050565b60006040828403121561510f57600080fd5b610b0983836150cd565b93845260208401929092526040830152606082015260800190565b805161397a8161397f565b60006020828403121561515157600080fd5b81516139e38161397f565b9283526020830191909152604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b0c57610b0c615172565b81810381811115610b0c57610b0c615172565b805161397a8161395a565b600060c082840312156151cb57600080fd5b60405160c081016001600160401b03811182821017156151ed576151ed613aa2565b60405282516151fb8161395a565b8152602083015161520b8161395a565b6020820152604083015161521e8161395a565b604082015260608301516152318161395a565b606082015260808301516152448161395a565b608082015260a08301516152578161395a565b60a08201529392505050565b60006101a08201905060018060a01b03808a1683528089511660208401528060208a01511660408401528060408a01511660608401528060608a0151166080840152506152b360a0830188613a23565b6152c060e0830187613a23565b6152ce610120830186613a23565b8361016083015282151561018083015298975050505050505050565b6000808284036101808112156152ff57600080fd5b8351925061016080601f198301121561531757600080fd5b61531f613b47565b91506020850151825260408501516020830152606085015160408301526080850151606083015260a0850151608083015260c085015160a083015260e085015160c08301526101008086015160e08401526101208087015182850152610140915081870151818501525081860151818401525050809150509250929050565b634e487b7160e01b600052601260045260246000fd5b6000826153c3576153c361539e565b600160ff1b8214600019841416156153dd576153dd615172565b500590565b6020808252600a908201526921a7a72a2927a62622a960b11b604082015260600190565b6020808252600f908201526e4e6f742070726f70657220726f6c6560881b604082015260600190565b60006020828403121561544157600080fd5b81516139e38161395a565b600061010080838503121561546057600080fd5b604051908101906001600160401b038211818310171561548257615482613aa2565b81604052835191506154938261395a565b81815260208401516020820152604084015160408201526154b660608501615134565b60608201526154c760808501615134565b60808201526154d860a085016151ae565b60a082015260c084015160c08201526154f360e085016151ae565b60e0820152949350505050565b60006020828403121561551257600080fd5b5051919050565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b60208082526009908201526804e6f203020737761760bc1b604082015260600190565b6001600160a01b039586168152938516602085015260408401929092526060830152909116608082015260a00190565b805163ffffffff8116811461397a57600080fd5b805161ffff8116811461397a57600080fd5b600061018082840312156155cb57600080fd5b6155d3613b6a565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015261560b60a084016151ae565b60a082015261561c60c08401615592565b60c082015261562d60e084016151ae565b60e08201526101006156408185016155a6565b90820152610120615652848201615134565b90820152610140615664848201615134565b908201526101606156768482016151ae565b908201529392505050565b8082028115828204841417610b0c57610b0c615172565b6000826156a7576156a761539e565b500490565b80516001600160501b038116811461397a57600080fd5b600080600080600060a086880312156156db57600080fd5b6156e4866156ac565b9450602086015193506040860151925060608601519150615707608087016156ac565b90509295509295909350565b634e487b7160e01b600052603260045260246000fd5b6000610120828403121561573c57600080fd5b615744613b24565b61574d836151ae565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015261578d60c08401615134565b60c082015261579e60e084016155a6565b60e08201526101006156768185016151ae565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b838110156158175781810151838201526020016157ff565b50506000910152565b600081518084526158388160208601602086016157fc565b601f01601f19169290920160200192915050565b602081526000825160a0602084015261586860c0840182615820565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b600082516158b68184602087016157fc565b9190910192915050565b602081526000610b09602083018461582056fea264697066735822122042150cb2932ea2caddf1d5648ca2e881be0ed4a71ea76ad784fded3024596ba064736f6c63430008130033