0 txs
89 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)
fixWithdrawalExecution
nonpayablefunction fixWithdrawalExecution(bytes32 key, uint256 _longAmount, uint256 _shortAmount)
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
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615e2d80620000f36000396000f3fe60806040526004361061021c5760003560e01c80630afda351146102285780630fa63fe41461024a578063100e196d1461029657806319c2d37e1461034157806321d41b321461036e5780632b70b891146103af5780632f2708a2146103cf5780633201ab4d146103ef578063395aef8e1461040f5780633a2cb99f146104525780633c372240146104805780634152313b14610493578063485cc955146104b35780635c975abb146104d35780635ce98de7146104eb5780635f82eba81461050b578063715018a61461052b57806372ccfa6014610540578063753672d51461056057806376f1ef10146105815780637db2bd3e146105a15780638c4d0d60146105d25780638da5cb5b1461060357806394fce92b1461061857806396e1ae10146106455780639a4a1a9a146106765780639f093871146106965780639f17af9914610728578063a5ab05ab14610748578063a5efb24d14610768578063a7c49f5a14610788578063a8f098d2146107bf578063ad5c4648146107e0578063b2fd949514610801578063b63d535414610814578063ba871dcd14610834578063bf3810a914610854578063c4b2b98014610874578063c9888ec11461088f578063c9ac221a146108af578063cc662466146108cf578063ceb0c445146108ef578063e88c35611461091c578063f2fde38b146109e6578063f5faa89214610a06578063fd77d17514610a37578063ff06f7b214610a5757600080fd5b3661022357005b600080fd5b34801561023457600080fd5b50610248610243366004613c42565b610a77565b005b34801561025657600080fd5b5061027d610265366004613c7b565b61010c6020526000908152604090205462ffffff1681565b60405162ffffff90911681526020015b60405180910390f35b3480156102a257600080fd5b5060c95460ca5460cb5460cc5460cd5460ce5460cf5460d05460d1546102e7986001600160a01b03908116988116978116968116958116948116938116928116911689565b604080516001600160a01b039a8b168152988a1660208a01529689169688019690965293871660608701529186166080860152851660a0850152841660c0840152831660e08301529091166101008201526101200161028d565b34801561034d57600080fd5b5061036161035c366004613cac565b610aab565b60405161028d9190613ce7565b34801561037a57600080fd5b5061039f610389366004613c7b565b6101146020526000908152604090205460ff1681565b604051901515815260200161028d565b3480156103bb57600080fd5b506102486103ca366004613cf5565b610b38565b3480156103db57600080fd5b506102486103ea366004613c42565b610cc9565b3480156103fb57600080fd5b5061024861040a366004613d21565b610cfd565b34801561041b57600080fd5b5061044561042a366004613c7b565b60d4602052600090815260409020546001600160a01b031681565b60405161028d9190613d43565b34801561045e57600080fd5b5061047261046d366004613c7b565b611032565b60405190815260200161028d565b61024861048e366004614f5d565b6112ad565b34801561049f57600080fd5b506102486104ae366004613cf5565b611546565b3480156104bf57600080fd5b506102486104ce366004614fa3565b611818565b3480156104df57600080fd5b5060975460ff1661039f565b3480156104f757600080fd5b50610248610506366004613c7b565b611972565b34801561051757600080fd5b5060d554610445906001600160a01b031681565b34801561053757600080fd5b5061024861199d565b34801561054c57600080fd5b5061024861055b366004615080565b6119b1565b34801561056c57600080fd5b5061011354610445906001600160a01b031681565b34801561058d57600080fd5b5061047261059c3660046151e7565b611a67565b3480156105ad57600080fd5b5061039f6105bc366004613c7b565b61010d6020526000908152604090205460ff1681565b3480156105de57600080fd5b5061039f6105ed36600461523a565b6101126020526000908152604090205460ff1681565b34801561060f57600080fd5b50610445611ac9565b34801561062457600080fd5b5061063861063336600461523a565b611ad8565b60405161028d9190615253565b34801561065157600080fd5b5061039f61066036600461523a565b6101116020526000908152604090205460ff1681565b34801561068257600080fd5b506104726106913660046152c5565b611b83565b3480156106a257600080fd5b506106f16106b136600461523a565b60d2602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293919290919060ff1687565b604080519788526020880196909652948601939093526060850191909152608084015260a0830152151560c082015260e00161028d565b34801561073457600080fd5b50610248610743366004613c42565b611e61565b34801561075457600080fd5b50610248610763366004613c7b565b611e95565b34801561077457600080fd5b50610248610783366004615307565b611f81565b34801561079457600080fd5b506104456107a336600461523a565b610110602052600090815260409020546001600160a01b031681565b3480156107cb57600080fd5b5061010a54610445906001600160a01b031681565b3480156107ec57600080fd5b5061010b54610445906001600160a01b031681565b61024861080f36600461523a565b612025565b34801561082057600080fd5b5060d654610445906001600160a01b031681565b34801561084057600080fd5b5061047261084f366004613cf5565b612550565b34801561086057600080fd5b5061047261086f366004613c42565b61275a565b34801561088057600080fd5b5061024861055b36600461532d565b34801561089b57600080fd5b506104726108aa366004613cac565b6129e2565b3480156108bb57600080fd5b506102486108ca366004615080565b612a13565b3480156108db57600080fd5b506102486108ea366004614fa3565b612eb8565b3480156108fb57600080fd5b5061090f61090a36600461523a565b612f14565b60405161028d91906154a4565b34801561092857600080fd5b5061099461093736600461523a565b61010f60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701549596949593949293919290916001600160a01b0391821691811690600160a01b900460ff1689565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a08501526001600160a01b0390811660c08501521660e083015215156101008201526101200161028d565b3480156109f257600080fd5b50610248610a01366004613c7b565b612fe9565b348015610a1257600080fd5b5061039f610a21366004613c7b565b61010e6020526000908152604090205460ff1681565b348015610a4357600080fd5b50610248610a5236600461532d565b61305f565b348015610a6357600080fd5b50610248610a72366004615528565b6131ee565b610a7f6132bc565b6001600160a01b0391909116600090815261011460205260409020805460ff1916911515919091179055565b6040805180820182526000808252602082015260cb5491516301e73a5f60e61b815290916001600160a01b0316906379ce97c090610aef90869086906004016155aa565b6040805180830381865afa158015610b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2f91906155f3565b90505b92915050565b610b406132bc565b6000610b4b84611ad8565b60c954909150610b66906001600160a01b031633308561331b565b60a0810151610b80906001600160a01b031633308661331b565b60cb5460c954610b9d916001600160a01b03918216911684613386565b60cb5460a0820151610bbc916001600160a01b03918216911685613386565b8060800151610c4b5760cb546001600160a01b0316639137be7a858585610be4838383612550565b6040518563ffffffff1660e01b8152600401610c03949392919061560f565b6020604051808303816000875af1158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c469190615635565b610cc2565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90610c7f90879087908790600401615652565b6020604051808303816000875af1158015610c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc29190615635565b5050505050565b610cd16132bc565b6001600160a01b0391909116600090815261010d60205260409020805460ff1916911515919091179055565b610d056133a5565b610113546001600160a01b0316331480610d375750610d22611ac9565b6001600160a01b0316336001600160a01b0316145b610d765760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064015b60405180910390fd5b6000610d8183611ad8565b600084815261010f602052604080822083519184015193945092610da59190610aab565b6000868152610111602052604090205490915060ff168015610dd757506000858152610112602052604090205460ff16155b15610e625780516001830154610dee90869061567e565b610df89190615691565b600383019081556000868152610112602052604090819020805460ff191660011790558354915490517f9bb3f265562ad4d42fe6bc8ec0cc15e82e766e4e3ba72c75c66d2fb3fdd6f1ab92610e5592908252602082015260400190565b60405180910390a1611021565b80516005830154600090610e7790879061567e565b60cb5460c954919250610e97916001600160a01b03908116911683613386565b60cb5460a0860151610eb6916001600160a01b03918216911684613386565b60078401805460ff60a01b1916600160a01b1790556080850151610f6b5760cb54600185015460028601546001600160a01b0390921691639137be7a918a9186918691610f04918591612550565b6040518563ffffffff1660e01b8152600401610f23949392919061560f565b6020604051808303816000875af1158015610f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f669190615635565b610fe2565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90610f9f908a9086908690600401615652565b6020604051808303816000875af1158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe29190615635565b507f9c341c91384ec36b9d393c98615da5bf201c12f801111ca44b299c61a6b3730b87828460405161101693929190615652565b60405180910390a150505b50505061102e6001606555565b5050565b60cb54604051639c735fbb60e01b815260009182916001600160a01b0390911690639c735fbb90611067908690600401613d43565b60c060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a891906156af565b90506000604051806080016040528083604001516001600160a01b0316815260200183606001516001600160a01b0316815260200183600001516001600160a01b0316815260200183602001516001600160a01b031681525090506000604051806040016040528061111f8560600151600161275a565b81526020016111338560600151600161275a565b81525090506000604051806040016040528061115088600161275a565b815260200161116088600161275a565b90526040805180820190915260c954919250600091819061118b906001600160a01b0316600161275a565b815260c9546020909101906111aa906001600160a01b0316600161275a565b905260cf5460cd546040519293506000926001600160a01b039283169263095ce6c59216908890889088908890611213906020016020808252601b908201527a4d41585f504e4c5f464143544f525f464f525f4445504f5349545360281b604082015260600190565b6040516020818303038152906040528051906020012060006040518863ffffffff1660e01b815260040161124d9796959493929190615759565b61018060405180830381865afa15801561126b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128f91906157e0565b5090506112a164e8d4a51000826158aa565b98975050505050505050565b60d6546040516001600160a01b039091169063ac4ab3fb9033906112d3906020016158d8565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004016113069291906155aa565b602060405180830381865afa158015611323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113479190615635565b6113635760405162461bcd60e51b8152600401610d6d906158fc565b600061136e83612f14565b9050600061137b84611ad8565b82519091506001600160a01b03166114eb5760cb54604051631f6f85f960e11b8152600481018690526001600160a01b0390911690633edf0bf290602401602060405180830381865afa1580156113d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fa9190615635565b156114925760cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa158015611449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146d9190615925565b60d580546001600160a01b0319166001600160a01b039290921691909117905561150d565b8060800151156114c55760e081015160d580546001600160a01b0319166001600160a01b0390921691909117905561150d565b805160d580546001600160a01b0319166001600160a01b0390921691909117905561150d565b815160d580546001600160a01b0319166001600160a01b039092169190911790555b60d5546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610cc2573d6000803e3d6000fd5b61154e6132bc565b600061155984611ad8565b9050600061156f82600001518360400151610aab565b825160d580546001600160a01b0319166001600160a01b03909216919091179055905061159a613bc5565b81518590859060009081908411156116015785516000906115bb9086615691565b90506115c78186615691565b60a089015160c9549194506115e8918391906001600160a01b031630613405565b608087018190526115f9908561567e565b915050611697565b60008660200151846116139190615691565b60c95460a08a01519192506116349183916001600160a01b03169030613405565b60a08701819052875160009161164b90889061567e565b6116559190615691565b60a08a015160c9549192506000916116789184916001600160a01b031630613405565b905088600001519450808960200151611691919061567e565b93505050505b670de0b6b3a7640000826116b08960a00151600161275a565b6116ba9190615942565b6116c49190615959565b60c086015260cb5460c9546116e6916001600160a01b03918216911683613386565b60cb5460a0880151611705916001600160a01b03918216911684613386565b86608001516117945760cb546001600160a01b0316639137be7a8b848461172d838383612550565b6040518563ffffffff1660e01b815260040161174c949392919061560f565b6020604051808303816000875af115801561176b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178f9190615635565b61180b565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e906117c8908d9086908690600401615652565b6020604051808303816000875af11580156117e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180b9190615635565b5050505050505050505050565b600054610100900460ff16158080156118385750600054600160ff909116105b806118595750611847306136f1565b158015611859575060005460ff166001145b6118bc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d6d565b6000805460ff1916600117905580156118df576000805461ff0019166101001790555b60cb80546001600160a01b038085166001600160a01b03199283161790925560c9805492861692909116919091179055611917613700565b61191f61372f565b61192761375e565b801561196d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61197a6132bc565b61011380546001600160a01b0319166001600160a01b0392909216919091179055565b6119a56132bc565b6119af600061378d565b565b60d6546040516001600160a01b039091169063ac4ab3fb9033906119d7906020016158d8565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401611a0a9291906155aa565b602060405180830381865afa158015611a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4b9190615635565b61196d5760405162461bcd60e51b8152600401610d6d906158fc565b60cb546000906001600160a01b03163314611ab25760405162461bcd60e51b815260206004820152600b60248201526a2737ba102b37b235b0ab1960a91b6044820152606401610d6d565b611abe85858585613405565b90505b949350505050565b6033546001600160a01b031690565b6040805161010081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e082015260cb54915163191618a160e21b81526004810184905290916001600160a01b03169063645862849060240161010060405180830381865afa158015611b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061596d565b60cb54604051639c735fbb60e01b815260009182916001600160a01b0390911690639c735fbb90611bb8908890600401613d43565b60c060405180830381865afa158015611bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf991906156af565b9050611c03613bc5565b60408051608081018252838201516001600160a01b0390811682526060808601805183166020808601919091528751841685870152808801518416928501929092529085018990528715158585015260ce5490519351631773dc6560e21b815292936000939190921691635dcf719491611c809190600401613d43565b6040805180830381865afa158015611c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc091906155f3565b60ce548551604051631773dc6560e21b81529293506000926001600160a01b0390921691635dcf719491611cf691600401613d43565b6040805180830381865afa158015611d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3691906155f3565b60ce546020870151604051631773dc6560e21b81529293506000926001600160a01b0390921691635dcf719491611d6f91600401613d43565b6040805180830381865afa158015611d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611daf91906155f3565b60cf5460cd5460208801516040808a0151905163095ce6c560e01b81529495506001600160a01b039384169463095ce6c594611df99416928a928a928a928a929091600401615759565b61018060405180830381865afa158015611e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3b91906157e0565b50808652611e4f9064e8d4a51000906158aa565b94859052509298975050505050505050565b611e696132bc565b6001600160a01b0391909116600090815261010e60205260409020805460ff1916911515919091179055565b611e9d6132bc565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190611ecc903090600401613d43565b602060405180830381865afa158015611ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0d9190615a21565b60405163a9059cbb60e01b81529091506001600160a01b0383169063a9059cbb90611f3e90339085906004016155aa565b6020604051808303816000875af1158015611f5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196d9190615635565b611f896132bc565b6001600160a01b038116611faf5760405162461bcd60e51b8152600401610d6d90615a3a565b6113888262ffffff161115611ff55760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b6044820152606401610d6d565b6001600160a01b0316600090815261010c60205260409020805462ffffff191662ffffff92909216919091179055565b61202d6133a5565b60cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa158015612077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209b9190615925565b6001600160a01b0316336001600160a01b0316146120e85760405162461bcd60e51b815260206004820152600a6024820152692737ba1035b2b2b832b960b11b6044820152606401610d6d565b60006120f382611ad8565b600083815261010f602052604090206006810154919250906001600160a01b031661214d5760405162461bcd60e51b815260206004820152600a602482015269139bc81c995c5d595cdd60b21b6044820152606401610d6d565b6007810154600160a01b900460ff16156121925760405162461bcd60e51b8152600401610d6d90602080825260049082015263646f6e6560e01b604082015260600190565b60068101546007820154600085815261011160205260409020546001600160a01b03928316929091169060ff1680156121db57506000858152610112602052604090205460ff16155b1561230e5760008360040154116122045760405162461bcd60e51b8152600401610d6d90615a60565b60c9546101135460048086015460405163095ea7b360e01b81526001600160a01b039485169463095ea7b39461223e9491169291016155aa565b6020604051808303816000875af115801561225d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122819190615635565b506101135460c95460048581015460008981526101106020526040908190205490516341c70b0160e11b81526001600160a01b039586169563838e16029534956122d795918316948a948f949091169101615a83565b6000604051808303818588803b1580156122f057600080fd5b505af1158015612304573d6000803e3d6000fd5b505050505061253f565b60008581526101116020526040902054661550f7dca700009060ff1661237757662aa1efb94e00003410156123775760405162461bcd60e51b815260206004820152600f60248201526e4e6f7420656e6f756768206665657360881b6044820152606401610d6d565b600084600301541161239b5760405162461bcd60e51b8152600401610d6d90615a60565b61011354600385015460405163095ea7b360e01b81526001600160a01b038681169363095ea7b3936123d49392909116916004016155aa565b6020604051808303816000875af11580156123f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124179190615635565b5061011354600385015460008881526101106020526040908190205490516341c70b0160e11b81526001600160a01b039384169363838e160293869361246a938a938a938f939092911690600401615a83565b6000604051808303818588803b15801561248357600080fd5b505af1158015612497573d6000803e3d6000fd5b5050506000888152610111602052604090205460ff16915061253d905057846080015115612502578460e001516001600160a01b03166108fc829081150290604051600060405180830381858888f193505050501580156124fc573d6000803e3d6000fd5b5061253d565b84516040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561253b573d6000803e3d6000fd5b505b505b5050505061254d6001606555565b50565b60008061255c85611ad8565b60cb548151604080840151905163de91a5e560e01b81529394506000936001600160a01b039093169263de91a5e5926125999290916004016155aa565b61018060405180830381865afa1580156125b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125db9190615ad9565b905060006125f183600001518460400151610aab565b905060006126048460a00151600061275a565b61010a5460a086015191925060009182916001600160a01b039081169116036126725768056bc75e2d6310000061263b848b615942565b6126459190615959565b915068056bc75e2d631000008385600001516126619190615942565b61266b9190615959565b90506126bf565b68327cb2734119d3b7a9601e1b612689848b615942565b6126939190615959565b915068327cb2734119d3b7a9601e1b8385600001516126b29190615942565b6126bc9190615959565b90505b60c9546000906126d9906001600160a01b0316600161275a565b9050600069d3c21bcecceda10000006126f2838c615942565b6126fc9190615959565b9050600061270a828661567e565b88516020890151919250600091612721908761567e565b61272b919061567e565b9050600081831161273d576000612747565b6127478284615691565b9f9e505050505050505050505050505050565b600080600061010960009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156127b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d79190615bb9565b509194509250508215905060006127ee8342615691565b9050610e1081116128395760405162461bcd60e51b815260206004820152601560248201527423b930b1b2903832b934b7b2103737ba1037bb32b960591b6044820152606401610d6d565b8161287a5760405162461bcd60e51b815260206004820152601160248201527029b2b8bab2b731b2b91034b9903237bbb760791b6044820152606401610d6d565b6001600160a01b03808816600090815260d46020526040808220548151633fabe5a360e21b815291519293169163feaf968c9160048082019260a0929091908290030181865afa1580156128d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f69190615bb9565b5050506001600160a01b038a16600090815261010d6020526040812054919350915060ff16156129435761292f826402540be400615942565b61293c90620f4240615942565b90506112a1565b61010a546001600160a01b03908116908a160361297557612969826402540be400615942565b61293c90612710615942565b6001600160a01b0389166000908152610114602052604090205460ff16156129b857662386f26fc100006129ae836402540be400615942565b61293c9190615959565b620f42406129cb836402540be400615942565b6129d59190615959565b9998505050505050505050565b60d360205281600052604060002081815481106129fe57600080fd5b90600052602060002001600091509150505481565b60cb548251516001600160a01b03908116911614612a435760405162461bcd60e51b8152600401610d6d90615c09565b60d6546040516001600160a01b039091169063ac4ab3fb903390612a69906020016158d8565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401612a9c9291906155aa565b602060405180830381865afa158015612ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612add9190615635565b612af95760405162461bcd60e51b8152600401610d6d906158fc565b6000612b0484611ad8565b90506000612b1a82600001518360400151610aab565b9050612b24613bc5565b6000846020015160000151600081518110612b4157612b41615c37565b60200260200101516020015190506000856020015160000151600181518110612b6c57612b6c615c37565b60209081029190910181015181015160a08701516001600160a01b0316600090815261010e90925260409091205490915060ff16612e1a576000808560000151841115612c08578551600090612bc29086615691565b9050612bce8186615691565b60a089015160c954919450612bef918391906001600160a01b031630613405565b60808701819052612c00908561567e565b915050612c9e565b6000866020015184612c1a9190615691565b60c95460a08a0151919250612c3b9183916001600160a01b03169030613405565b60a087018190528751600091612c5290889061567e565b612c5c9190615691565b60a08a015160c954919250600091612c7f9184916001600160a01b031630613405565b905088600001519450808960200151612c98919061567e565b93505050505b670de0b6b3a764000082612cb78960a00151600161275a565b612cc19190615942565b612ccb9190615959565b60c086015260cb5460c954612ced916001600160a01b03918216911683613386565b60cb5460a0880151612d0c916001600160a01b03918216911684613386565b8660800151612d9b5760cb546001600160a01b0316639137be7a8b8484612d34838a8a612550565b6040518563ffffffff1660e01b8152600401612d53949392919061560f565b6020604051808303816000875af1158015612d72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d969190615635565b612e12565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90612dcf908d9086908690600401615652565b6020604051808303816000875af1158015612dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e129190615635565b505050612eae565b60cb5460a0860151604051639c735fbb60e01b81526000926001600160a01b031691639c735fbb91612e4f9190600401613d43565b60c060405180830381865afa158015612e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9091906156af565b9050612eac8984848860000151896020015186604001516137df565b505b5050505050505050565b612ec06132bc565b6001600160a01b038216612ee65760405162461bcd60e51b8152600401610d6d90615a3a565b6001600160a01b03918216600090815260d46020526040902080546001600160a01b03191691909216179055565b612f7b60405180610120016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600061ffff16815260200160006001600160a01b031681525090565b60cb5460405163546fcf3960e01b8152600481018490526001600160a01b039091169063546fcf399060240161012060405180830381865afa158015612fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b329190615c4d565b612ff16132bc565b6001600160a01b0381166130565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d6d565b61254d8161378d565b60cb548251516001600160a01b0390811691161461308f5760405162461bcd60e51b8152600401610d6d90615c09565b60d6546040516001600160a01b039091169063ac4ab3fb9033906130b5906020016158d8565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004016130e89291906155aa565b602060405180830381865afa158015613105573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131299190615635565b6131455760405162461bcd60e51b8152600401610d6d906158fc565b60cb5460208201515180516001600160a01b039092169163862a820891869160009061317357613173615c37565b6020026020010151602001516040518363ffffffff1660e01b81526004016131a5929190918252602082015260400190565b6020604051808303816000875af11580156131c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e89190615635565b50505050565b6131f66132bc565b60cc80546001600160a01b038881166001600160a01b0319928316811790935560cd8054898316908416811790915560ce8054898416908516811790915560cf8054898516908616811790915560d08054898616908716811790915560d18054958916959096168517909555604080519687526020870193909352918501526060840152608083019190915260a08201527f03f1afd7ce30865f51a6e0b71bd812eb2a48c45e187b710c8e67eaaa53c15c579060c00160405180910390a1505050505050565b336132c5611ac9565b6001600160a01b0316146119af5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d6d565b6040516001600160a01b03808516602483015283166044820152606481018290526131e89085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613955565b61196d8363a9059cbb60e01b848460405160240161334f9291906155aa565b6002606554036133f75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d6d565b6002606555565b6001606555565b60008460000361341757506000611ac1565b60cc5460405163095ea7b360e01b81526000916001600160a01b038088169263095ea7b39261344c9216908a906004016155aa565b6020604051808303816000875af115801561346b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348f9190615635565b5061010b546001600160a01b038681169116148015906134be575061010b546001600160a01b03858116911614155b156135df576040805160a0810182526001600160a01b03878116600090815261010c60209081528482205461010b5480851684528684205460608d811b6001600160601b031990811660c08a015260e894851b6001600160e81b031990811660d48b015293821b811660d78a01529190931b90911660eb8701528a821b1660ee860152855160e281870301815261010286018752855288841691850191909152428486015283018a9052608083015260cc54925163c04b8d5960e01b81529192169063c04b8d5990613594908490600401615d25565b6020604051808303816000875af11580156135b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d79190615a21565b915050611abe565b60408051610100810182526001600160a01b038781168083528782166020808501918252600092835261010c90528482205462ffffff90811685870190815289851660608701908152426080880190815260a088018f815260c0890187815260e08a0197885260cc549a5163414bf38960e01b81528a518a16600482015296518916602488015293519094166044860152905186166064850152516084840152905160a48301525160c48201529051821660e48201529192169063414bf38990610104016020604051808303816000875af11580156136c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e69190615a21565b979650505050505050565b6001600160a01b03163b151590565b600054610100900460ff166137275760405162461bcd60e51b8152600401610d6d90615d7d565b6119af613a2a565b600054610100900460ff166137565760405162461bcd60e51b8152600401610d6d90615d7d565b6119af613a5a565b600054610100900460ff166137855760405162461bcd60e51b8152600401610d6d90615d7d565b6119af613a8d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600086815261010f60205260408120906137f888611ad8565b88835560018301889055600283018790559050848711613819576000613823565b6138238588615691565b6003830190815560a08201516006840180546001600160a01b039283166001600160a01b031991821617909155600785018054878416908316179055835160008c81526101106020526040902080549190931691161790555415801561388857508386115b156138c2576138978487615691565b600483015560058201849055600088815261011160205260409020805460ff191660011790556138ca565b600582018690555b6001820154600283015460008a81526101116020908152604091829020546003870154600488015484518f8152938401969096529282019390935260ff90921615156060830152608082015260a08101919091527f41aa0b642d7539321de3afda61eeb8c6bbf79ab4ea7a567e420c9663a846a7599060c00160405180910390a15050505050505050565b60006139aa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613ab49092919063ffffffff16565b90508051600014806139cb5750808060200190518101906139cb9190615635565b61196d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d6d565b600054610100900460ff16613a515760405162461bcd60e51b8152600401610d6d90615d7d565b6119af3361378d565b600054610100900460ff16613a815760405162461bcd60e51b8152600401610d6d90615d7d565b6097805460ff19169055565b600054610100900460ff166133fe5760405162461bcd60e51b8152600401610d6d90615d7d565b6060611ac1848460008585600080866001600160a01b03168587604051613adb9190615dc8565b60006040518083038185875af1925050503d8060008114613b18576040519150601f19603f3d011682016040523d82523d6000602084013e613b1d565b606091505b50915091506136e68783838760608315613b96578251600003613b8f57613b43856136f1565b613b8f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d6d565b5081611ac1565b611ac18383815115613bab5781518083602001fd5b8060405162461bcd60e51b8152600401610d6d9190615de4565b604051806101000160405280600081526020016000801916815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b038116811461254d57600080fd5b8035613c2f81613c0f565b919050565b801515811461254d57600080fd5b60008060408385031215613c5557600080fd5b8235613c6081613c0f565b91506020830135613c7081613c34565b809150509250929050565b600060208284031215613c8d57600080fd5b8135613c9881613c0f565b9392505050565b6001600160a01b03169052565b60008060408385031215613cbf57600080fd5b8235613cca81613c0f565b946020939093013593505050565b80518252602090810151910152565b60408101610b328284613cd8565b600080600060608486031215613d0a57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215613d3457600080fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613d8f57613d8f613d57565b60405290565b60405160e081016001600160401b0381118282101715613d8f57613d8f613d57565b604051606081016001600160401b0381118282101715613d8f57613d8f613d57565b60405161012081016001600160401b0381118282101715613d8f57613d8f613d57565b60405161016081016001600160401b0381118282101715613d8f57613d8f613d57565b60405161018081016001600160401b0381118282101715613d8f57613d8f613d57565b604051601f8201601f191681016001600160401b0381118282101715613e6a57613e6a613d57565b604052919050565b60006001600160401b03821115613e8b57613e8b613d57565b5060051b60200190565b600082601f830112613ea657600080fd5b81356001600160401b03811115613ebf57613ebf613d57565b613ed2601f8201601f1916602001613e42565b818152846020838601011115613ee757600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112613f1557600080fd5b81356020613f2a613f2583613e72565b613e42565b82815260059290921b84018101918181019086841115613f4957600080fd5b8286015b84811015613f6d578035613f6081613c0f565b8352918301918301613f4d565b509695505050505050565b600082601f830112613f8957600080fd5b81356020613f99613f2583613e72565b82815260059290921b84018101918181019086841115613fb857600080fd5b8286015b84811015613f6d5780356001600160401b0380821115613fdc5760008081fd5b908801906040828b03601f1901811315613ff65760008081fd5b613ffe613d6d565b87840135838111156140105760008081fd5b61401e8d8a83880101613e95565b8252509083013590828211156140345760008081fd5b6140428c8984870101613f04565b818901528652505050918301918301613fbc565b6000604080838503121561406957600080fd5b614071613d6d565b915082356001600160401b038082111561408a57600080fd5b818501915085601f83011261409e57600080fd5b813560206140ae613f2583613e72565b82815260059290921b840181019181810190898411156140cd57600080fd5b8286015b8481101561414c578035868111156140e95760008081fd5b8701808c03601f19018913156140ff5760008081fd5b614107613d6d565b85820135888111156141195760008081fd5b6141278e8883860101613e95565b825250908901359061413882613c0f565b8086019190915283529183019183016140d1565b508752508681013594508285111561416357600080fd5b61416f88868901613f78565b81870152505050505092915050565b600082601f83011261418f57600080fd5b8135602061419f613f2583613e72565b828152600592831b85018201928282019190878511156141be57600080fd5b8387015b858110156142b35780356001600160401b03808211156141e25760008081fd5b908901906040828c03601f19018113156141fc5760008081fd5b614204613d6d565b88840135838111156142165760008081fd5b6142248e8b83880101613e95565b82525081840135838111156142395760008081fd5b8085019450508c603f85011261425157600092508283fd5b888401359250614263613f2584613e72565b83815292861b8401820192898101908e8511156142805760008081fd5b948301945b8486101561429e5785358252948a0194908a0190614285565b828b01525087525050509284019284016141c2565b5090979650505050505050565b600060408083850312156142d357600080fd5b6142db613d6d565b915082356001600160401b03808211156142f457600080fd5b818501915085601f83011261430857600080fd5b81356020614318613f2583613e72565b82815260059290921b8401810191818101908984111561433757600080fd5b8286015b848110156143a9578035868111156143535760008081fd5b8701808c03601f19018913156143695760008081fd5b614371613d6d565b85820135888111156143835760008081fd5b6143918e8883860101613e95565b8252509089013585820152835291830191830161433b565b50875250868101359450828511156143c057600080fd5b61416f8886890161417e565b600082601f8301126143dd57600080fd5b813560206143ed613f2583613e72565b828152600592831b850182019282820191908785111561440c57600080fd5b8387015b858110156142b35780356001600160401b03808211156144305760008081fd5b908901906040828c03601f190181131561444a5760008081fd5b614452613d6d565b88840135838111156144645760008081fd5b6144728e8b83880101613e95565b82525081840135838111156144875760008081fd5b8085019450508c603f85011261449f57600092508283fd5b8884013592506144b1613f2584613e72565b83815292861b8401820192898101908e8511156144ce5760008081fd5b948301945b848610156144ec5785358252948a0194908a01906144d3565b828b0152508752505050928401928401614410565b6000604080838503121561451457600080fd5b61451c613d6d565b915082356001600160401b038082111561453557600080fd5b818501915085601f83011261454957600080fd5b81356020614559613f2583613e72565b82815260059290921b8401810191818101908984111561457857600080fd5b8286015b848110156145ea578035868111156145945760008081fd5b8701808c03601f19018913156145aa5760008081fd5b6145b2613d6d565b85820135888111156145c45760008081fd5b6145d28e8883860101613e95565b8252509089013585820152835291830191830161457c565b508752508681013594508285111561460157600080fd5b61416f888689016143cc565b600082601f83011261461e57600080fd5b8135602061462e613f2583613e72565b828152600592831b850182019282820191908785111561464d57600080fd5b8387015b858110156142b35780356001600160401b03808211156146715760008081fd5b908901906040828c03601f190181131561468b5760008081fd5b614693613d6d565b88840135838111156146a55760008081fd5b6146b38e8b83880101613e95565b82525081840135838111156146c85760008081fd5b8085019450508c603f8501126146e057600092508283fd5b8884013592506146f2613f2584613e72565b83815292861b8401820192898101908e85111561470f5760008081fd5b948301945b84861015614739578535935061472984613c34565b838252948a0194908a0190614714565b828b0152508752505050928401928401614651565b6000604080838503121561476157600080fd5b614769613d6d565b915082356001600160401b038082111561478257600080fd5b818501915085601f83011261479657600080fd5b813560206147a6613f2583613e72565b82815260059290921b840181019181810190898411156147c557600080fd5b8286015b84811015614844578035868111156147e15760008081fd5b8701808c03601f19018913156147f75760008081fd5b6147ff613d6d565b85820135888111156148115760008081fd5b61481f8e8883860101613e95565b825250908901359061483082613c34565b8086019190915283529183019183016147c9565b508752508681013594508285111561485b57600080fd5b61416f8886890161460d565b6000604080838503121561487a57600080fd5b614882613d6d565b915082356001600160401b038082111561489b57600080fd5b818501915085601f8301126148af57600080fd5b813560206148bf613f2583613e72565b82815260059290921b840181019181810190898411156148de57600080fd5b8286015b848110156145ea578035868111156148fa5760008081fd5b8701808c03601f19018913156149105760008081fd5b614918613d6d565b858201358881111561492a5760008081fd5b6149388e8883860101613e95565b825250908901358582015283529183019183016148e2565b600082601f83011261496157600080fd5b81356020614971613f2583613e72565b82815260059290921b8401810191818101908684111561499057600080fd5b8286015b84811015613f6d576001600160401b0381358110156149b257600080fd5b813588016040818b03601f190112156149ca57600080fd5b6149d2613d6d565b86820135838111156149e357600080fd5b6149f18c8983860101613e95565b825250604082013583811115614a0657600080fd5b8083019250508a603f830112614a1b57600080fd5b86820135614a2b613f2582613e72565b81815260059190911b830160400190888101908d831115614a4b57600080fd5b604085015b83811015614a83578681351115614a6657600080fd5b614a768f60408335890101613e95565b8352918a01918a01614a50565b50838a0152505085525050918301918301614994565b60006040808385031215614aac57600080fd5b614ab4613d6d565b915082356001600160401b0380821115614acd57600080fd5b818501915085601f830112614ae157600080fd5b81356020614af1613f2583613e72565b82815260059290921b84018101918181019089841115614b1057600080fd5b8286015b84811015614ba057803586811115614b2c5760008081fd5b8701808c03601f1901891315614b425760008081fd5b614b4a613d6d565b8582013588811115614b5c5760008081fd5b614b6a8e8883860101613e95565b8252508982013588811115614b7f5760008081fd5b614b8d8e8883860101613e95565b8288015250845250918301918301614b14565b5087525086810135945082851115614bb757600080fd5b61416f88868901614950565b600082601f830112614bd457600080fd5b81356020614be4613f2583613e72565b82815260059290921b84018101918181019086841115614c0357600080fd5b8286015b84811015613f6d576001600160401b038135811015614c2557600080fd5b813588016040818b03601f19011215614c3d57600080fd5b614c45613d6d565b8682013583811115614c5657600080fd5b614c648c8983860101613e95565b825250604082013583811115614c7957600080fd5b8083019250508a603f830112614c8e57600080fd5b86820135614c9e613f2582613e72565b81815260059190911b830160400190888101908d831115614cbe57600080fd5b604085015b83811015614cf6578681351115614cd957600080fd5b614ce98f60408335890101613e95565b8352918a01918a01614cc3565b50838a0152505085525050918301918301614c07565b60006040808385031215614d1f57600080fd5b614d27613d6d565b915082356001600160401b0380821115614d4057600080fd5b818501915085601f830112614d5457600080fd5b81356020614d64613f2583613e72565b82815260059290921b84018101918181019089841115614d8357600080fd5b8286015b84811015614e1357803586811115614d9f5760008081fd5b8701808c03601f1901891315614db55760008081fd5b614dbd613d6d565b8582013588811115614dcf5760008081fd5b614ddd8e8883860101613e95565b8252508982013588811115614df25760008081fd5b614e008e8883860101613e95565b8288015250845250918301918301614d87565b5087525086810135945082851115614e2a57600080fd5b61416f88868901614bc3565b600060e08284031215614e4857600080fd5b614e50613d95565b905081356001600160401b0380821115614e6957600080fd5b614e7585838601614056565b83526020840135915080821115614e8b57600080fd5b614e97858386016142c0565b60208401526040840135915080821115614eb057600080fd5b614ebc85838601614501565b60408401526060840135915080821115614ed557600080fd5b614ee18583860161474e565b60608401526080840135915080821115614efa57600080fd5b614f0685838601614867565b608084015260a0840135915080821115614f1f57600080fd5b614f2b85838601614a99565b60a084015260c0840135915080821115614f4457600080fd5b50614f5184828501614d0c565b60c08301525092915050565b60008060408385031215614f7057600080fd5b8235915060208301356001600160401b03811115614f8d57600080fd5b614f9985828601614e36565b9150509250929050565b60008060408385031215614fb657600080fd5b8235614fc181613c0f565b91506020830135613c7081613c0f565b600060e08284031215614fe357600080fd5b614feb613d95565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015292915050565b60006020828403121561504557600080fd5b604051602081016001600160401b038111828210171561506757615067613d57565b604052905080823561507881613c34565b905292915050565b60008060006060848603121561509557600080fd5b8335925060208401356001600160401b03808211156150b357600080fd5b9085019061012082880312156150c857600080fd5b6150d0613db7565b8235828111156150df57600080fd5b830160e0818a0312156150f157600080fd5b6150f9613d95565b61510282613c24565b815261511060208301613c24565b602082015261512160408301613c24565b604082015261513260608301613c24565b606082015261514360808301613c24565b608082015260a08201358481111561515a57600080fd5b6151668b828501613f04565b60a08301525060c08201358481111561517e57600080fd5b61518a8b828501613f04565b60c0830152508252506151a08860208501614fd1565b60208201526151b3886101008501615033565b60408201528094505060408601359150808211156151d057600080fd5b506151dd86828701614e36565b9150509250925092565b600080600080608085870312156151fd57600080fd5b84359350602085013561520f81613c0f565b9250604085013561521f81613c0f565b9150606085013561522f81613c0f565b939692955090935050565b60006020828403121561524c57600080fd5b5035919050565b60006101008201905060018060a01b0380845116835260208401516020840152604084015160408401526060840151151560608401526080840151151560808401528060a08501511660a08401525060c083015160c083015260e08301516152be60e0840182613c9f565b5092915050565b6000806000606084860312156152da57600080fd5b83356152e581613c0f565b92506020840135915060408401356152fc81613c34565b809150509250925092565b6000806040838503121561531a57600080fd5b823562ffffff81168114614fc157600080fd5b60008060006060848603121561534257600080fd5b8335925060208401356001600160401b038082111561536057600080fd5b818601915061012080838903121561537757600080fd5b61537f613db7565b83358381111561538e57600080fd5b8401808a0383131561539f57600080fd5b6153a7613dd9565b92506153b281613c24565b83526153c060208201613c24565b60208401526153d160408201613c24565b60408401526153e260608201613c24565b60608401526153f360808201613c24565b608084015261540460a08201613c24565b60a084015261541560c08201613c24565b60c084015260e08101358481111561542c57600080fd5b6154388b828401613f04565b60e085015250610100808201358581111561545257600080fd5b61545e8c828501613f04565b82860152508383526154738b60208801614fd1565b60208401526154848b828801615033565b60408401525050809550505060408601359150808211156151d057600080fd5b60006101208201905060018060a01b0383511682526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015260e083015161550c60e084018261ffff169052565b506101008084015161552082850182613c9f565b505092915050565b60008060008060008060c0878903121561554157600080fd5b863561554c81613c0f565b9550602087013561555c81613c0f565b9450604087013561556c81613c0f565b9350606087013561557c81613c0f565b9250608087013561558c81613c0f565b915060a087013561559c81613c0f565b809150509295509295509295565b6001600160a01b03929092168252602082015260400190565b6000604082840312156155d557600080fd5b6155dd613d6d565b9050815181526020820151602082015292915050565b60006040828403121561560557600080fd5b610b2f83836155c3565b93845260208401929092526040830152606082015260800190565b8051613c2f81613c34565b60006020828403121561564757600080fd5b8151613c9881613c34565b9283526020830191909152604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b3257610b32615668565b81810381811115610b3257610b32615668565b8051613c2f81613c0f565b600060c082840312156156c157600080fd5b60405160c081016001600160401b03811182821017156156e3576156e3613d57565b60405282516156f181613c0f565b8152602083015161570181613c0f565b6020820152604083015161571481613c0f565b6040820152606083015161572781613c0f565b6060820152608083015161573a81613c0f565b608082015260a083015161574d81613c0f565b60a08201529392505050565b60006101a08201905060018060a01b03808a1683528089511660208401528060208a01511660408401528060408a01511660608401528060608a0151166080840152506157a960a0830188613cd8565b6157b660e0830187613cd8565b6157c4610120830186613cd8565b8361016083015282151561018083015298975050505050505050565b6000808284036101808112156157f557600080fd5b8351925061016080601f198301121561580d57600080fd5b615815613dfc565b91506020850151825260408501516020830152606085015160408301526080850151606083015260a0850151608083015260c085015160a083015260e085015160c08301526101008086015160e08401526101208087015182850152610140915081870151818501525081860151818401525050809150509250929050565b634e487b7160e01b600052601260045260246000fd5b6000826158b9576158b9615894565b600160ff1b8214600019841416156158d3576158d3615668565b500590565b6020808252600a908201526921a7a72a2927a62622a960b11b604082015260600190565b6020808252600f908201526e4e6f742070726f70657220726f6c6560881b604082015260600190565b60006020828403121561593757600080fd5b8151613c9881613c0f565b8082028115828204841417610b3257610b32615668565b60008261596857615968615894565b500490565b600061010080838503121561598157600080fd5b604051908101906001600160401b03821181831017156159a3576159a3613d57565b81604052835191506159b482613c0f565b81815260208401516020820152604084015160408201526159d76060850161562a565b60608201526159e86080850161562a565b60808201526159f960a085016156a4565b60a082015260c084015160c0820152615a1460e085016156a4565b60e0820152949350505050565b600060208284031215615a3357600080fd5b5051919050565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b60208082526009908201526804e6f203020737761760bc1b604082015260600190565b6001600160a01b039586168152938516602085015260408401929092526060830152909116608082015260a00190565b805163ffffffff81168114613c2f57600080fd5b805161ffff81168114613c2f57600080fd5b60006101808284031215615aec57600080fd5b615af4613e1f565b8251815260208301516020820152604083015160408201526060830151606082015260808301516080820152615b2c60a084016156a4565b60a0820152615b3d60c08401615ab3565b60c0820152615b4e60e084016156a4565b60e0820152610100615b61818501615ac7565b90820152610120615b7384820161562a565b90820152610140615b8584820161562a565b90820152610160615b978482016156a4565b908201529392505050565b80516001600160501b0381168114613c2f57600080fd5b600080600080600060a08688031215615bd157600080fd5b615bda86615ba2565b9450602086015193506040860151925060608601519150615bfd60808701615ba2565b90509295509295909350565b60208082526014908201527320b1b1b7bab73a1034b9b73a102b37b235b0ab1960611b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006101208284031215615c6057600080fd5b615c68613dd9565b615c71836156a4565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a0820152615cb160c0840161562a565b60c0820152615cc260e08401615ac7565b60e0820152610100615b978185016156a4565b60005b83811015615cf0578181015183820152602001615cd8565b50506000910152565b60008151808452615d11816020860160208601615cd5565b601f01601f19169290920160200192915050565b602081526000825160a06020840152615d4160c0840182615cf9565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251615dda818460208701615cd5565b9190910192915050565b602081526000610b2f6020830184615cf956fea2646970667358221220fa16f95af50045a67df932c341daaa48990b7a3088ab3ee0abac389117ee2a9464736f6c63430008130033