0 txs
17.8k calls
constructor
No constructor.
functions
activeMarkets
viewfunction activeMarkets(uint256 index, uint256 pageSize) view returns (address[])
activeMarketsPerUser
viewfunction activeMarketsPerUser(uint256 index, uint256 pageSize, address user) view returns (address[])
addressManager
viewfunction addressManager() view returns (address)
assetToPythId
viewfunction assetToPythId(bytes32) view returns (bytes32)
canResolveMarket
viewfunction canResolveMarket(address market) view returns (bool)
currentRiskPerAsset
viewfunction currentRiskPerAsset(bytes32) view returns (uint256)
currentRiskPerAssetAndDirection
viewfunction currentRiskPerAssetAndDirection(bytes32, uint8) view returns (uint256)
getLengths
viewfunction getLengths(address user) view returns (uint256[5])
getParams
viewfunction getParams(bytes32 asset) view returns (tuple)
lastPauseTime
viewfunction lastPauseTime() view returns (uint256)
lpFee
viewfunction lpFee() view returns (uint256)
lpFees
viewfunction lpFees(uint256) view returns (uint256)
marketHasCreatedAtAttribute
viewfunction marketHasCreatedAtAttribute(address) view returns (bool)
marketHasFeeAttribute
viewfunction marketHasFeeAttribute(address) view returns (bool)
maturedMarkets
viewfunction maturedMarkets(uint256 index, uint256 pageSize) view returns (address[])
maturedMarketsPerUser
viewfunction maturedMarketsPerUser(uint256 index, uint256 pageSize, address user) view returns (address[])
maxBuyinAmount
viewfunction maxBuyinAmount() view returns (uint256)
maximalTimeToMaturity
viewfunction maximalTimeToMaturity() view returns (uint256)
maximumPriceDelay
viewfunction maximumPriceDelay() view returns (uint64)
maximumPriceDelayForResolving
viewfunction maximumPriceDelayForResolving() view returns (uint64)
maxRiskPerAsset
viewfunction maxRiskPerAsset(bytes32) view returns (uint256)
maxRiskPerAssetAndDirection
viewfunction maxRiskPerAssetAndDirection(bytes32, uint8) view returns (uint256)
maxSkewImpact
viewfunction maxSkewImpact() view returns (uint256)
minBuyinAmount
viewfunction minBuyinAmount() view returns (uint256)
minimalTimeToMaturity
viewfunction minimalTimeToMaturity() view returns (uint256)
multicollateralEnabled
viewfunction multicollateralEnabled() view returns (bool)
nominatedOwner
viewfunction nominatedOwner() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
safeBoxImpact
viewfunction safeBoxImpact() view returns (uint256)
skewSlippage
viewfunction skewSlippage() view returns (uint256)
speedMarketMastercopy
viewfunction speedMarketMastercopy() view returns (address)
supportedAsset
viewfunction supportedAsset(bytes32) view returns (bool)
sUSD
viewfunction sUSD() view returns (address)
timeThresholdsForFees
viewfunction timeThresholdsForFees(uint256) view returns (uint256)
whitelistedAddresses
viewfunction whitelistedAddresses(address) view returns (bool)
acceptOwnership
nonpayablefunction acceptOwnership()
addToWhitelist
nonpayablefunction addToWhitelist(address _whitelistAddress, bool _flag)
createNewMarket
nonpayablefunction createNewMarket(tuple _params)
initialize
nonpayablefunction initialize(address _owner, address _sUSD)
initNonReentrant
nonpayablefunction initNonReentrant()
nominateNewOwner
nonpayablefunction nominateNewOwner(address _owner)
resolveMarket
payablefunction resolveMarket(address market, bytes[] priceUpdateData) payable
resolveMarketAsOwner
nonpayablefunction resolveMarketAsOwner(address _market, int64 _finalPrice)
resolveMarketManually
nonpayablefunction resolveMarketManually(address _market, int64 _finalPrice)
resolveMarketManuallyBatch
nonpayablefunction resolveMarketManuallyBatch(address[] markets, int64[] finalPrices)
resolveMarketsBatch
payablefunction resolveMarketsBatch(address[] markets, bytes[] priceUpdateData) payable
resolveMarketWithOfframp
payablefunction resolveMarketWithOfframp(address market, bytes[] priceUpdateData, address collateral, bool toEth) payable
setAMMAddresses
nonpayablefunction setAMMAddresses(address _mastercopy, address _speedMarketsAMMUtils, address _addressManager)
setAssetToPythID
nonpayablefunction setAssetToPythID(bytes32 asset, bytes32 pythId)
setLimitParams
nonpayablefunction setLimitParams(uint256 _minBuyinAmount, uint256 _maxBuyinAmount, uint256 _minimalTimeToMaturity, uint256 _maximalTimeToMaturity, uint64 _maximumPriceDelay, uint64 _maximumPriceDelayForResolving)
setLPFeeParams
nonpayablefunction setLPFeeParams(uint256[] _timeThresholds, uint256[] _lpFees, uint256 _lpFee)
setMaxRisks
nonpayablefunction setMaxRisks(bytes32 asset, uint256 _maxRiskPerAsset, uint256 _maxRiskPerAssetAndDirection)
setMultiCollateralOnOffRampEnabled
nonpayablefunction setMultiCollateralOnOffRampEnabled(bool _enabled)
setOwner
nonpayablefunction setOwner(address _owner)
setPaused
nonpayablefunction setPaused(bool _paused)
setSafeBoxAndMaxSkewImpact
nonpayablefunction setSafeBoxAndMaxSkewImpact(uint256 _safeBoxImpact, uint256 _maxSkewImpact, uint256 _skewSlippage)
setSupportedAsset
nonpayablefunction setSupportedAsset(bytes32 asset, bool _supported)
transferAmount
nonpayablefunction transferAmount(address _destination, uint256 _amount)
transferOwnershipAtInit
nonpayablefunction transferOwnershipAtInit(address proxyAddress)
events
AddedIntoWhitelist
event AddedIntoWhitelist(address _whitelistAddress, bool _flag)
AMMAddressesChanged
event AMMAddressesChanged(address _mastercopy, address _speedMarketsAMMUtils, address _addressManager)
AmountTransfered
event AmountTransfered(address _destination, uint256 _amount)
LimitParamsChanged
event LimitParamsChanged(uint256 _minBuyinAmount, uint256 _maxBuyinAmount, uint256 _minimalTimeToMaturity, uint256 _maximalTimeToMaturity, uint256 _maximumPriceDelay, uint256 _maximumPriceDelayForResolving)
MarketCreated
event MarketCreated(address _market, address _user, bytes32 _asset, uint256 _strikeTime, int64 _strikePrice, uint8 _direction, uint256 _buyinAmount)
MarketCreatedWithFees
event MarketCreatedWithFees(address _market, address _user, bytes32 _asset, uint256 _strikeTime, int64 _strikePrice, uint8 _direction, uint256 _buyinAmount, uint256 _safeBoxImpact, uint256 _lpFee)
MarketResolved
event MarketResolved(address _market, uint8 _result, bool _userIsWinner)
MultiCollateralOnOffRampEnabled
event MultiCollateralOnOffRampEnabled(bool _enabled)
OwnerChanged
event OwnerChanged(address oldOwner, address newOwner)
OwnerNominated
event OwnerNominated(address newOwner)
PauseChanged
event PauseChanged(bool isPaused)
ReferrerPaid
event ReferrerPaid(address refferer, address trader, uint256 amount, uint256 volume)
SafeBoxAndMaxSkewImpactChanged
event SafeBoxAndMaxSkewImpactChanged(uint256 _safeBoxImpact, uint256 _maxSkewImpact, uint256 _skewSlippage)
SetAssetToPythID
event SetAssetToPythID(bytes32 asset, bytes32 pythId)
SetLPFeeParams
event SetLPFeeParams(uint256[] _timeThresholds, uint256[] _lpFees, uint256 _lpFee)
SetMaxRisks
event SetMaxRisks(bytes32 asset, uint256 _maxRiskPerAsset, uint256 _maxRiskPerAssetAndDirection)
SetSupportedAsset
event SetSupportedAsset(bytes32 asset, bool _supported)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50615ad780620000216000396000f3fe60806040526004361061039b5760003560e01c806389c6318d116101dc578063cf898ca911610102578063e60a4d25116100a0578063ebc797721161006f578063ebc7977214610ba6578063ef469ba214610bbb578063f8335cde14610bdb578063fd6e9b9714610bfb57600080fd5b8063e60a4d2514610b23578063e73efc9b14610b50578063e76fbb0214610b70578063e915586614610b9057600080fd5b8063da6b532f116100dc578063da6b532f14610a88578063e0223eea14610a9b578063e11f951d14610abb578063e396ed2614610af357600080fd5b8063cf898ca914610a32578063d69fb66814610a52578063d7081e0314610a6857600080fd5b8063a3a2adf01161017a578063bd47a9b811610149578063bd47a9b814610998578063c3b83f5f146109c5578063c4531802146109e5578063ce87e2ee14610a1257600080fd5b8063a3a2adf014610925578063a8da1a1714610938578063b711d40714610958578063bc93233f1461097857600080fd5b80639324cac7116101b65780639324cac71461088557806399c18e7e146108a55780639fc42703146108c6578063a201b307146108e657600080fd5b806389c6318d146108295780638da5cb5b1461084957806391b4ded91461086f57600080fd5b806330a1ea01116102c15780635403f80f1161025f5780636bfffb121161022e5780636bfffb12146107be578063704ce43e146107de57806379ba5097146107f45780637de926d11461080957600080fd5b80635403f80f1461074e5780635631bf8a146107645780635c975abb1461078457806368b9f66b1461079e57600080fd5b80633e7ad1de1161029b5780633e7ad1de146106d8578063485cc955146106ee5780634eb7c43b1461070e57806353a47bb71461072e57600080fd5b806330a1ea01146106605780633ab76e9f146106805780633b46bfc9146106b857600080fd5b806313af40351161033957806317b94eac1161030857806317b94eac14610569578063289cc19f1461057c5780632b03da3c146105925780632c43dc831461064057600080fd5b806313af4035146104e757806314527f3a146105095780631627540c1461052957806316c38b3c1461054957600080fd5b806306c933d81161037557806306c933d81461045e57806307b53bb41461048e57806312039b6d146104a457806312aa3833146104d157600080fd5b806301bea636146103a7578063023fb259146103eb57806305bfdfd41461041857600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103d66103c2366004614c18565b602080526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156103f757600080fd5b5061040b610406366004614c18565b610c2b565b6040516103e291906155a8565b34801561042457600080fd5b5061045061043336600461507d565b601e60209081526000928352604080842090915290825290205481565b6040519081526020016103e2565b34801561046a57600080fd5b506103d6610479366004614c18565b601b6020526000908152604090205460ff1681565b34801561049a57600080fd5b5061045060135481565b3480156104b057600080fd5b506104c46104bf3660046151fd565b610c86565b6040516103e291906154d6565b3480156104dd57600080fd5b5061045060125481565b3480156104f357600080fd5b50610507610502366004614c18565b610cb6565b005b34801561051557600080fd5b506103d6610524366004614c18565b610df6565b34801561053557600080fd5b50610507610544366004614c18565b610f07565b34801561055557600080fd5b50610507610564366004614fd0565b610f5d565b610507610577366004614c50565b610fd3565b34801561058857600080fd5b5061045060285481565b34801561059e57600080fd5b506106136105ad366004615008565b60408051606080820183526000808352602080840182905292840181905283519182018452808252818301818152828501828152958252600f909352929092205460ff1615158252600c549052601754600160a01b90046001600160401b031690915290565b6040805182511515815260208084015190820152918101516001600160401b0316908201526060016103e2565b34801561064c57600080fd5b5061050761065b366004614e23565b61104b565b34801561066c57600080fd5b5061050761067b366004614dcb565b611178565b34801561068c57600080fd5b506026546106a0906001600160a01b031681565b6040516001600160a01b0390911681526020016103e2565b3480156106c457600080fd5b506105076106d336600461522a565b6111d5565b3480156106e457600080fd5b5061045060105481565b3480156106fa57600080fd5b50610507610709366004614d54565b611292565b34801561071a57600080fd5b50610450610729366004615008565b611379565b34801561073a57600080fd5b506001546106a0906001600160a01b031681565b34801561075a57600080fd5b5061045060115481565b34801561077057600080fd5b5061045061077f366004615008565b61139a565b34801561079057600080fd5b506003546103d69060ff1681565b3480156107aa57600080fd5b506105076107b9366004614fd0565b6113aa565b3480156107ca57600080fd5b506105076107d9366004614d81565b61153b565b3480156107ea57600080fd5b50610450600d5481565b34801561080057600080fd5b506105076115c8565b34801561081557600080fd5b50610507610824366004615038565b6116c5565b34801561083557600080fd5b506104c461084436600461505c565b61171f565b34801561085557600080fd5b506000546106a0906201000090046001600160a01b031681565b34801561087b57600080fd5b5061045060025481565b34801561089157600080fd5b50600a546106a0906001600160a01b031681565b3480156108b157600080fd5b50601c546103d690600160a01b900460ff1681565b3480156108d257600080fd5b506104c46108e13660046151fd565b61172d565b3480156108f257600080fd5b5060175461090d90600160a01b90046001600160401b031681565b6040516001600160401b0390911681526020016103e2565b610507610933366004614e23565b611753565b34801561094457600080fd5b50610507610953366004614dcb565b6118f9565b34801561096457600080fd5b50610507610973366004614f60565b61195d565b34801561098457600080fd5b50610507610993366004614d1c565b611acf565b3480156109a457600080fd5b506104506109b3366004615008565b60166020526000908152604090205481565b3480156109d157600080fd5b506105076109e0366004614c18565b611b46565b3480156109f157600080fd5b50610450610a00366004615008565b60146020526000908152604090205481565b348015610a1e57600080fd5b50600b546106a0906001600160a01b031681565b348015610a3e57600080fd5b50601f5461090d906001600160401b031681565b348015610a5e57600080fd5b50610450600c5481565b348015610a7457600080fd5b50610507610a83366004614df8565b611c5f565b610507610a96366004614ca2565b611cbd565b348015610aa757600080fd5b50610507610ab63660046151e5565b6121af565b348015610ac757600080fd5b50610450610ad636600461507d565b601d60209081526000928352604080842090915290825290205481565b348015610aff57600080fd5b506103d6610b0e366004615008565b600f6020526000908152604090205460ff1681565b348015610b2f57600080fd5b50610450610b3e366004615008565b60156020526000908152604090205481565b348015610b5c57600080fd5b506104c4610b6b36600461505c565b612490565b348015610b7c57600080fd5b50610507610b8b3660046150a1565b61249e565b348015610b9c57600080fd5b5061045060275481565b348015610bb257600080fd5b506105076124f3565b348015610bc757600080fd5b50610507610bd63660046150a1565b612551565b348015610be757600080fd5b50610507610bf636600461505c565b6125cf565b348015610c0757600080fd5b506103d6610c16366004614c18565b60256020526000908152604090205460ff1681565b610c33614af9565b506040805160a08101825260065481526008546020808301919091526001600160a01b039093166000818152601985528381205483850152908152601a9093529120546060820152602354608082015290565b6001600160a01b0381166000908152601960205260409020606090610cac90858561261f565b90505b9392505050565b6001600160a01b038116610d115760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f7420626520300000000000000060448201526064015b60405180910390fd5b600154600160a01b900460ff1615610d7d5760405162461bcd60e51b815260206004820152602960248201527f416c726561647920696e697469616c697a65642c20757365206e6f6d696e617460448201526832a732bba7bbb732b960b91b6064820152608401610d08565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b03831662010000810262010000600160b01b03199092169190911782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91015b60405180910390a150565b6000610e03600683612763565b8015610e87575042826001600160a01b03166351d8044f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4457600080fd5b505afa158015610e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7c91906152a3565b6001600160401b0316105b8015610f015750816001600160a01b0316633f6fa6556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ec757600080fd5b505afa158015610edb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eff9190614fec565b155b92915050565b610f0f6127e5565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290602001610deb565b610f656127e5565b60035460ff1615158115151415610f795750565b6003805460ff191682151590811790915560ff1615610f9757426002555b60035460405160ff909116151581527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec590602001610deb565b50565b600160046000828254610fe6919061587c565b909155505060045460035460ff16156110115760405162461bcd60e51b8152600401610d0890615626565b6110248461101f8486615915565b61285f565b60045481146110455760405162461bcd60e51b8152600401610d0890615683565b50505050565b336000908152601b602052604090205460ff166110a55760405162461bcd60e51b815260206004820152601860248201527714995cdbdb1d995c881b9bdd081dda1a5d195b1a5cdd195960421b6044820152606401610d08565b60005b83811015611171576110e88585838181106110d357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906105249190614c18565b1561115f5761115f85858381811061111057634e487b7160e01b600052603260045260246000fd5b90506020020160208101906111259190614c18565b84848481811061114557634e487b7160e01b600052603260045260246000fd5b905060200201602081019061115a9190615104565b612c81565b8061116981615a06565b9150506110a8565b5050505050565b6111806127e5565b61118982610df6565b6111c75760405162461bcd60e51b815260206004820152600f60248201526e43616e206e6f74207265736f6c766560881b6044820152606401610d08565b6111d18282612e42565b5050565b6111dd6127e5565b60128690556013859055601084905560118390556017805467ffffffffffffffff60a01b1916600160a01b6001600160401b0385811691820292909217909255601f805467ffffffffffffffff19169184169182179055604080518981526020810189905290810187905260608101869052608081019290925260a08201527fcb4727945d0c9bf77ea3b48c6c630e5b0e5016c1fe67c9508feafe8fc265cdba9060c0015b60405180910390a1505050505050565b600054610100900460ff166112ad5760005460ff16156112b1565b303b155b6113145760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d08565b600054610100900460ff16158015611336576000805461ffff19166101011790555b61133f83610cb6565b6113476124f3565b600a80546001600160a01b0319166001600160a01b0384161790558015611374576000805461ff00191690555b505050565b6023818154811061138957600080fd5b600091825260209091200154905081565b6022818154811061138957600080fd5b6113b26127e5565b60265460408051639a618c0f60e01b815290516000926001600160a01b031691639a618c0f916004808301926020929190829003018186803b1580156113f757600080fd5b505afa15801561140b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142f9190614c34565b90506001600160a01b038116156114e257600a546001600160a01b031663095ea7b3828461145e576000611462565b6000195b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156114a857600080fd5b505af11580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e09190614fec565b505b601c8054831515600160a01b0260ff60a01b199091161790556040517fb76eab56cfa3088dda43a9a4b3ea4bb7685b8007428d4a65248fdaa763d339f89061152f90841515815260200190565b60405180910390a15050565b6115436127e5565b600b80546001600160a01b038581166001600160a01b0319928316811790935560248054868316908416811790915560268054928616929093168217909255604080519384526020840192909252908201527fbf934b81354c7e34eda71aa08a74419a5682a0737282cc3f448b353a1893c41f906060015b60405180910390a1505050565b6001546001600160a01b031633146116405760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b6064820152608401610d08565b60005460015460408051620100009093046001600160a01b03908116845290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a1600180546000805462010000600160b01b0319166001600160a01b03831662010000021790556001600160a01b0319169055565b6116cd6127e5565b6000828152600f6020908152604091829020805460ff19168415159081179091558251858152918201527f6af8d0ea20290a2d8dcbb43a77926d5993cd89bac2c6a72cd7813c4eacc2124b910161152f565b6060610caf6008848461261f565b6001600160a01b0381166000908152601a60205260409020606090610cac90858561261f565b600160046000828254611766919061587c565b909155505060045460035460ff16156117915760405162461bcd60e51b8152600401610d0890615626565b60005b848110156118d7576117bf8686838181106110d357634e487b7160e01b600052603260045260246000fd5b156118c557604080516001808252818301909252600091816020015b60608152602001906001900390816117db57905050905084848381811061181257634e487b7160e01b600052603260045260246000fd5b905060200281019061182491906157bd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525085518694509092501515905061187a57634e487b7160e01b600052603260045260246000fd5b60200260200101819052506118c38787848181106118a857634e487b7160e01b600052603260045260246000fd5b90506020020160208101906118bd9190614c18565b8261285f565b505b806118cf81615a06565b915050611794565b5060045481146111715760405162461bcd60e51b8152600401610d0890615683565b336000908152601b602052604090205460ff166119535760405162461bcd60e51b815260206004820152601860248201527714995cdbdb1d995c881b9bdd081dda1a5d195b1a5cdd195960421b6044820152606401610d08565b6111d18282612c81565b6119656127e5565b8382146119c55760405162461bcd60e51b815260206004820152602860248201527f54696d657320616e642066656573206d7573742068617665207468652073616d6044820152670ca40d8cadccee8d60c31b6064820152608401610d08565b6119d160226000614b17565b6119dd60236000614b17565b60005b84811015611a82576022868683818110611a0a57634e487b7160e01b600052603260045260246000fd5b835460018101855560009485526020948590209190940292909201359190920155506023848483818110611a4e57634e487b7160e01b600052603260045260246000fd5b8354600181018555600094855260209485902091909402929092013591909201555080611a7a81615a06565b9150506119e0565b50600d8190556040517f97b8e3f33b113d945b11628418dc7b155d05943a8a517a937a9d88f4eda67a6b90611ac090879087908790879087906155d9565b60405180910390a15050505050565b611ad76127e5565b6001600160a01b038216611aea57600080fd5b6001600160a01b0382166000818152601b6020908152604091829020805460ff19168515159081179091558251938452908301527f58d7a3ccc34541e162fcfc87b84be7b78c34d1e1e7f15de6e4dd67d0fe70aecd910161152f565b611b4e6127e5565b6001600160a01b038116611b965760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610d08565b600154600160a81b900460ff1615611be65760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481d1c985b9cd9995c9c9959606a1b6044820152606401610d08565b600080546001600160a01b038381166201000081810262010000600160b01b031990941693909317938490556001805460ff60a81b1916600160a81b1790556040805193909404909116825260208201527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9101610deb565b611c676127e5565b600a54611c7e906001600160a01b03168383613427565b604080516001600160a01b0384168152602081018390527fc3ce4eeef579533b0a2d7ae2e50eb68dccae3b183dc8cce60267f3c9fa4935c0910161152f565b600160046000828254611cd0919061587c565b909155505060045460035460ff1615611cfb5760405162461bcd60e51b8152600401610d0890615626565b601c54600160a01b900460ff16611d605760405162461bcd60e51b815260206004820152602360248201527f4d756c7469636f6c6c61746572616c206f666672616d70206e6f7420656e61626044820152621b195960ea1b6064820152608401610d08565b6000866001600160a01b0316634f8632ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d9b57600080fd5b505afa158015611daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd39190614c34565b9050336001600160a01b03821614611e2d5760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c7920616c6c6f7765642066726f6d206d61726b6574206f776e657200006044820152606401610d08565b600a546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a082319060240160206040518083038186803b158015611e7357600080fd5b505afa158015611e87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eab9190615020565b9050611ebb8861101f888a615915565b600a546040516370a0823160e01b81526001600160a01b03848116600483015260009284929116906370a082319060240160206040518083038186803b158015611f0457600080fd5b505afa158015611f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3c9190615020565b611f4691906158fe565b600a54909150611f61906001600160a01b031684308461348a565b80156121835760265460408051639a618c0f60e01b815290516000926001600160a01b031691639a618c0f916004808301926020929190829003018186803b158015611fac57600080fd5b505afa158015611fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe49190614c34565b905085156120e35760405163b45e98d960e01b8152600481018390526000906001600160a01b0383169063b45e98d990602401602060405180830381600087803b15801561203157600080fd5b505af1158015612045573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120699190615020565b60405190915085906000906001600160a01b0383169084156108fc0290859084818181858888f193505050509050806120db5760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b6044820152606401610d08565b505050612181565b604051630992646d60e31b81526001600160a01b0388811660048301526024820184905260009190831690634c93236890604401602060405180830381600087803b15801561213157600080fd5b505af1158015612145573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121699190615020565b905061217f6001600160a01b0389168683613427565b505b505b50505060045481146121a75760405162461bcd60e51b8152600401610d0890615683565b505050505050565b6001600460008282546121c2919061587c565b909155505060045460035460ff16156121ed5760405162461bcd60e51b8152600401610d0890615626565b60265460405163bf40fac160e01b815260206004820152601660248201527529b832b2b226b0b935b2ba39a0a6a6a1b932b0ba37b960511b60448201526000916001600160a01b03169063bf40fac19060640160206040518083038186803b15801561225857600080fd5b505afa15801561226c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122909190614c34565b9050336001600160a01b038216146122de5760405162461bcd60e51b815260206004820152601160248201527037b7363c90333937b69021b932b0ba37b960791b6044820152606401610d08565b602654604080516351cfd60960e11b815290516000926001600160a01b03169163a39fac129160048083019260c0929190829003018186803b15801561232357600080fd5b505afa158015612337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235b919061513c565b905060008061237261014087016101208801614c18565b6001600160a01b031614905060006123906060870160408801615287565b6001600160401b0316156123b3576123ae6060870160408801615287565b6123d6565b6123c36080870160608801615287565b6123d6906001600160401b03164261587c565b90506000826124135761240e6123ef6020890189614c18565b6124016101408a016101208b01614c18565b89610140013585886134c2565b61241a565b8661014001355b905061246a61242c6020890189614c18565b60208901358460808b016124486101208d016101008e016150cc565b86898e61016001602081019061245e9190614c18565b8f61018001358d613895565b505050505060045481146111d15760405162461bcd60e51b8152600401610d0890615683565b6060610caf6006848461261f565b6124a66127e5565b600c8390556027829055602881905560408051848152602081018490529081018290527faa4fb0e426c89ca5b40184bc99ab0d12c722021c90689decd8f7b901d3f82b34906060016115bb565b60055460ff161561253c5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610d08565b6005805460ff19166001908117909155600455565b6125596127e5565b600083815260146020908152604080832085905560158252808320839055601d82528083208380528252808320849055600183529182902083905581518581529081018490529081018290527facbec488a49aaa9d1b3799159ede0349850bc1a73c0e90913ff03dd4354a34a8906060016115bb565b6125d76127e5565b60008281526016602090815260409182902083905581518481529081018390527fbe9b5564f6075c4b92cab3a707053c7e8828f045a5d233c3157bc3407cb00963910161152f565b6060600061262d838561587c565b855490915081111561263d575083545b83811161265a575050604080516000815260208101909152610caf565b600061266685836158fe565b90506000816001600160401b0381111561269057634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156126b9578160200160208202803683370190505b50905060005b8281101561275857876126d2888361587c565b815481106126f057634e487b7160e01b600052603260045260246000fd5b9060005260206000200160009054906101000a90046001600160a01b031682828151811061272e57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03909216602092830291909101909101528061275081615a06565b9150506126bf565b509695505050505050565b815460009061277457506000610f01565b6001600160a01b0382166000908152600184016020526040902054801515806127dd5750826001600160a01b0316846000016000815481106127c657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316145b949350505050565b6000546201000090046001600160a01b0316331461285d5760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610d08565b565b61286882610df6565b6128a65760405162461bcd60e51b815260206004820152600f60248201526e43616e206e6f74207265736f6c766560881b6044820152606401610d08565b60265460408051630f98d06f60e41b815290516000926001600160a01b03169163f98d06f0916004808301926020929190829003018186803b1580156128eb57600080fd5b505afa1580156128ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129239190614c34565b604080516001808252818301909252919250600091906020808301908036833701905050905060166000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561298657600080fd5b505afa15801561299a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129be9190615020565b815260200190815260200160002054816000815181106129ee57634e487b7160e01b600052603260045260246000fd5b602090810291909101015260405163d47eed4560e01b81526000906001600160a01b03841690634716e9c590829063d47eed4590612a30908990600401615523565b60206040518083038186803b158015612a4857600080fd5b505afa158015612a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a809190615020565b8685896001600160a01b03166351d8044f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612abb57600080fd5b505afa158015612acf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af391906152a3565b601f60009054906101000a90046001600160401b03168b6001600160a01b03166351d8044f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b4257600080fd5b505afa158015612b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7a91906152a3565b612b849190615894565b6040518663ffffffff1660e01b8152600401612ba39493929190615536565b6000604051808303818588803b158015612bbc57600080fd5b505af1158015612bd0573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612bf99190810190614e8b565b9050600081600081518110612c1e57634e487b7160e01b600052603260045260246000fd5b60200260200101516020015190506000816000015160070b13612c735760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420707269636560981b6044820152606401610d08565b6121a7868260000151612e42565b6000826001600160a01b031663645539ed6040518163ffffffff1660e01b815260040160206040518083038186803b158015612cbc57600080fd5b505afa158015612cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf491906150e8565b90506000836001600160a01b031663c52987cf6040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3157600080fd5b505afa158015612d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d699190615120565b905060008160070b8460070b128015612da157506001836001811115612d9f57634e487b7160e01b600052602160045260246000fd5b145b80612ddb57508160070b8460070b138015612ddb57506000836001811115612dd957634e487b7160e01b600052602160045260246000fd5b145b9050612de685610df6565b8015612df0575080155b612e3c5760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f74207265736f6c7665206d616e75616c6c7900000000000000006044820152606401610d08565b61117185855b604051631f67c49160e01b8152600782900b60048201526001600160a01b03831690631f67c49190602401600060405180830381600087803b158015612e8757600080fd5b505af1158015612e9b573d6000803e3d6000fd5b50505050612eb3826006613d6690919063ffffffff16565b612ebe600883613ee9565b6000826001600160a01b0316634f8632ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015612ef957600080fd5b505afa158015612f0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f319190614c34565b6001600160a01b0381166000908152601960205260409020909150612f569084612763565b15612f7d576001600160a01b0381166000908152601960205260409020612f7d9084613d66565b6001600160a01b0381166000908152601a60205260409020612f9f9084613ee9565b6000836001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612fda57600080fd5b505afa158015612fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130129190615020565b90506000846001600160a01b0316631fcc8bb26040518163ffffffff1660e01b815260040160206040518083038186803b15801561304f57600080fd5b505afa158015613063573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130879190615020565b90506000856001600160a01b031663645539ed6040518163ffffffff1660e01b815260040160206040518083038186803b1580156130c457600080fd5b505afa1580156130d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130fc91906150e8565b6000848152601e6020526040812091925083919083600181111561313057634e487b7160e01b600052602160045260246000fd5b600181111561314f57634e487b7160e01b600052602160045260246000fd5b81526020019081526020016000205411156131db576000838152601e60205260408120839183600181111561319457634e487b7160e01b600052602160045260246000fd5b60018111156131b357634e487b7160e01b600052602160045260246000fd5b815260200190815260200160002060008282546131d091906158fe565b9091555061323b9050565b6000838152601e602052604081208183600181111561320a57634e487b7160e01b600052602160045260246000fd5b600181111561322957634e487b7160e01b600052602160045260246000fd5b81526020810191909152604001600020555b856001600160a01b0316633a2c1e556040518163ffffffff1660e01b815260040160206040518083038186803b15801561327457600080fd5b505afa158015613288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ac9190614fec565b613314576132bb8260026158df565b6000848152601560205260409020541115613304576132db8260026158df565b600084815260156020526040812080549091906132f99084906158fe565b909155506133149050565b6000838152601560205260408120555b7f738ac9ca76b7fd50246d5acdc827b2852e656ed2c287d6538e57b046f0ecf64b86876001600160a01b031663653721476040518163ffffffff1660e01b815260040160206040518083038186803b15801561336f57600080fd5b505afa158015613383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133a791906150e8565b886001600160a01b0316633a2c1e556040518163ffffffff1660e01b815260040160206040518083038186803b1580156133e057600080fd5b505afa1580156133f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134189190614fec565b604051611282939291906154a9565b6040516001600160a01b03831660248201526044810182905261137490849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613f3b565b6040516001600160a01b03808516602483015283166044820152606481018290526110459085906323b872dd60e01b90608401613453565b601c54600090600160a01b900460ff166135295760405162461bcd60e51b815260206004820152602260248201527f4d756c7469636f6c6c61746572616c206f6e72616d70206e6f7420656e61626c604482015261195960f21b6064820152608401610d08565b600a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561356d57600080fd5b505afa158015613581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a59190615020565b60608401519091506135c26001600160a01b03881689308961348a565b60405163095ea7b360e01b81526001600160a01b0382811660048301526024820188905288169063095ea7b390604401602060405180830381600087803b15801561360c57600080fd5b505af1158015613620573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136449190614fec565b506040516322ceb11360e21b81526001600160a01b0388811660048301526024820188905260009190831690638b3ac44c90604401602060405180830381600087803b15801561369357600080fd5b505af11580156136a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136cb9190615020565b6024549091506000906001600160a01b031663336ef50d6136f5426001600160401b038b166158fe565b60226023600d546040518563ffffffff1660e01b815260040161371b9493929190615777565b60206040518083038186803b15801561373357600080fd5b505afa158015613747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376b9190615020565b905080600c54670de0b6b3a7640000613784919061587c565b61378e919061587c565b6137a0670de0b6b3a7640000846158df565b6137aa91906158bf565b600a546040516370a0823160e01b815230600482015291965060009186916001600160a01b0316906370a082319060240160206040518083038186803b1580156137f357600080fd5b505afa158015613807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061382b9190615020565b61383591906158fe565b9050858110156138875760405162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f75676820726563656976656420766961206f6e72616d7000006044820152606401610d08565b505050505095945050505050565b6000898152600f602052604090205460ff166138ec5760405162461bcd60e51b8152602060048201526016602482015275105cdcd95d081a5cc81b9bdd081cdd5c1c1bdc9d195960521b6044820152606401610d08565b601254851015801561390057506013548511155b6139425760405162461bcd60e51b815260206004820152601360248201527215dc9bdb99c8189d5e481a5b88185b5bdd5b9d606a1b6044820152606401610d08565b60105461394f904261587c565b886001600160401b031610156139a75760405162461bcd60e51b815260206004820152601760248201527f537472696b652074696d65206e6f7420616c6c6f7765640000000000000000006044820152606401610d08565b6011546139b4904261587c565b886001600160401b03161115613a0c5760405162461bcd60e51b815260206004820152601c60248201527f54696d6520746f6f2066617220696e746f2074686520667574757265000000006044820152606401610d08565b6000613a1b8a88888c8761400d565b90508415613a80576000670de0b6b3a764000082600c54670de0b6b3a7640000613a45919061587c565b613a4f919061587c565b613a5990896158df565b613a6391906158bf565b600a54909150613a7e906001600160a01b03168d308461348a565b505b600b54600090613a98906001600160a01b031661457e565b9050806001600160a01b031663ddf338f5604051806101400160405280306001600160a01b031681526020018f6001600160a01b031681526020018e81526020018d6001600160401b031681526020018c6000016020810190613afb9190615104565b60070b81526020018c606001356001600160401b031681526020018b6001811115613b3657634e487b7160e01b600052602160045260246000fd5b81526020018a8152602001600c548152602001858152506040518263ffffffff1660e01b8152600401613b6991906156ba565b600060405180830381600087803b158015613b8357600080fd5b505af1158015613b97573d6000803e3d6000fd5b50505050613bbf81886002613bac91906158df565b600a546001600160a01b03169190613427565b613bcb8c86898661461b565b50613bd7600682613ee9565b6001600160a01b038c166000908152601960205260409020613bf99082613ee9565b60408301516001600160a01b031615613c755760408084015190516302c7739b60e01b81526001600160a01b038e81166004830152602482018a9052909116906302c7739b90604401600060405180830381600087803b158015613c5c57600080fd5b505af1158015613c70573d6000803e3d6000fd5b505050505b6001600160a01b0381166000908152602080805260408083208054600160ff199182168117909255602584529190932080549091169092179091557f4fb5dd0be05638074eabb1b37a9bdf9ab8cbad8d83c7bce9298aca16de5b79c39082908e908e908e90613ce6908f018f615104565b8d8d604051613cfb97969594939291906153eb565b60405180910390a17f51f385a862a654703b4b7a2e647518a58930354129b8364d5dbe945752df3646818d8d8d613d3560208f018f615104565b8d8d600c548a604051613d5099989796959493929190615442565b60405180910390a1505050505050505050505050565b613d708282612763565b613db25760405162461bcd60e51b815260206004820152601360248201527222b632b6b2b73a103737ba1034b71039b2ba1760691b6044820152606401610d08565b6001600160a01b0381166000908152600180840160205260408220548454909291613ddc916158fe565b9050808214613e84576000846000018281548110613e0a57634e487b7160e01b600052603260045260246000fd5b60009182526020909120015485546001600160a01b0390911691508190869085908110613e4757634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018601909152604090208290555b8354849080613ea357634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0394909416815260019490940190925250506040812055565b613ef38282612763565b6111d15781546001600160a01b038216600081815260018086016020908152604083208590559084018655858252902090910180546001600160a01b03191690911790555050565b6000613f90826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166148899092919063ffffffff16565b8051909150156113745780806020019051810190613fae9190614fec565b6113745760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d08565b60008061401a8787614898565b90506028548361402a919061587c565b8111156140725760405162461bcd60e51b815260206004820152601660248201527514dad95dc81cdb1a5c1c1859d948195e18d95959195960521b6044820152606401610d08565b60008087600181111561409557634e487b7160e01b600052602160045260246000fd5b146140a15760006140a4565b60015b9050600082156140b55760006140cb565b60026140c18a84614898565b6140cb91906158bf565b60008a8152601e602052604081209192508891908460018111156140ff57634e487b7160e01b600052602160045260246000fd5b600181111561411e57634e487b7160e01b600052602160045260246000fd5b81526020019081526020016000205411156141aa576000898152601e60205260408120889184600181111561416357634e487b7160e01b600052602160045260246000fd5b600181111561418257634e487b7160e01b600052602160045260246000fd5b8152602001908152602001600020600082825461419f91906158fe565b909155506143f69050565b6000898152601e60205260408120908360018111156141d957634e487b7160e01b600052602160045260246000fd5b60018111156141f857634e487b7160e01b600052602160045260246000fd5b8152602001908152602001600020548761421291906158fe565b60008a8152601e60205260408120908a600181111561424157634e487b7160e01b600052602160045260246000fd5b600181111561426057634e487b7160e01b600052602160045260246000fd5b8152602001908152602001600020600082825461427d919061587c565b90915550506000898152601e60205260408120818460018111156142b157634e487b7160e01b600052602160045260246000fd5b60018111156142d057634e487b7160e01b600052602160045260246000fd5b815260200190815260200160002081905550601d60008a8152602001908152602001600020600089600181111561431757634e487b7160e01b600052602160045260246000fd5b600181111561433657634e487b7160e01b600052602160045260246000fd5b815260200190815260200160002054601e60008b815260200190815260200160002060008a600181111561437a57634e487b7160e01b600052602160045260246000fd5b600181111561439957634e487b7160e01b600052602160045260246000fd5b81526020019081526020016000205411156143f65760405162461bcd60e51b815260206004820152601b60248201527f5269736b2070657220646972656374696f6e20657863656564656400000000006044820152606401610d08565b602454819084906001600160a01b031663336ef50d61441e426001600160401b038c166158fe565b60226023600d546040518563ffffffff1660e01b81526004016144449493929190615777565b60206040518083038186803b15801561445c57600080fd5b505afa158015614470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144949190615020565b61449e919061587c565b6144a891906158fe565b9350670de0b6b3a76400006144bd858261587c565b6144c790896158df565b6144d191906158bf565b6144dc8860026158df565b6144e691906158fe565b60008a8152601560205260408120805490919061450490849061587c565b909155505060008981526014602090815260408083205460159092529091205411156145725760405162461bcd60e51b815260206004820152601760248201527f5269736b207065722061737365742065786365656465640000000000000000006044820152606401610d08565b50505095945050505050565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528260601b60148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09150506001600160a01b0381166146165760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401610d08565b919050565b60208101516000906001600160a01b0381161561484c5760006001600160a01b038616156146ae5760405163bbddaca360e01b81526001600160a01b038781166004830152888116602483015283169063bbddaca390604401600060405180830381600087803b15801561468e57600080fd5b505af11580156146a2573d6000803e3d6000fd5b5050505085905061472a565b604051639ca423b360e01b81526001600160a01b038881166004830152831690639ca423b39060240160206040518083038186803b1580156146ef57600080fd5b505afa158015614703573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147279190614c34565b90505b6001600160a01b0381161561484a5760405163c7d1f5f160e01b81526001600160a01b0382811660048301526000919084169063c7d1f5f19060240160206040518083038186803b15801561477e57600080fd5b505afa158015614792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147b69190615020565b9050801561484857670de0b6b3a76400006147d182886158df565b6147db91906158bf565b600a549094506147f5906001600160a01b03168386613427565b604080516001600160a01b0380851682528a166020820152908101859052606081018790527f8fa68a6a8e2fc9ff758a6e64afba8bc2f66fb082999a2c5225c8c49633faded49060800160405180910390a15b505b505b614880836000015183670de0b6b3a7640000600c548861486c91906158df565b61487691906158bf565b613bac91906158fe565b50949350505050565b6060610cac8484600085614998565b6027546000838152601d602052604081209091670de0b6b3a764000091838560018111156148d657634e487b7160e01b600052602160045260246000fd5b60018111156148f557634e487b7160e01b600052602160045260246000fd5b815260200190815260200160002054670de0b6b3a7640000601e6000888152602001908152602001600020600087600181111561494257634e487b7160e01b600052602160045260246000fd5b600181111561496157634e487b7160e01b600052602160045260246000fd5b81526020019081526020016000205461497a91906158df565b61498491906158bf565b61498e91906158df565b610caf91906158bf565b6060824710156149f95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610d08565b843b614a475760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d08565b600080866001600160a01b03168587604051614a6391906153cf565b60006040518083038185875af1925050503d8060008114614aa0576040519150601f19603f3d011682016040523d82523d6000602084013e614aa5565b606091505b5091509150614ab5828286614ac0565b979650505050505050565b60608315614acf575081610caf565b825115614adf5782518084602001fd5b8160405162461bcd60e51b8152600401610d089190615613565b6040518060a001604052806005906020820280368337509192915050565b5080546000825590600052602060002090810190610fd091905b80821115614b455760008155600101614b31565b5090565b60008083601f840112614b5a578182fd5b5081356001600160401b03811115614b70578182fd5b6020830191508360208260051b8501011115614b8b57600080fd5b9250929050565b600060808284031215614ba3578081fd5b604051608081018181106001600160401b0382111715614bc557614bc5615a37565b80604052508091508251614bd881615a7d565b81526020830151614be881615a8c565b60208201526040830151600381900b8114614c0257600080fd5b6040820152606092830151920191909152919050565b600060208284031215614c29578081fd5b8135610caf81615a4d565b600060208284031215614c45578081fd5b8151610caf81615a4d565b600080600060408486031215614c64578182fd5b8335614c6f81615a4d565b925060208401356001600160401b03811115614c89578283fd5b614c9586828701614b49565b9497909650939450505050565b600080600080600060808688031215614cb9578283fd5b8535614cc481615a4d565b945060208601356001600160401b03811115614cde578384fd5b614cea88828901614b49565b9095509350506040860135614cfe81615a4d565b91506060860135614d0e81615a62565b809150509295509295909350565b60008060408385031215614d2e578182fd5b8235614d3981615a4d565b91506020830135614d4981615a62565b809150509250929050565b60008060408385031215614d66578182fd5b8235614d7181615a4d565b91506020830135614d4981615a4d565b600080600060608486031215614d95578081fd5b8335614da081615a4d565b92506020840135614db081615a4d565b91506040840135614dc081615a4d565b809150509250925092565b60008060408385031215614ddd578182fd5b8235614de881615a4d565b91506020830135614d4981615a7d565b60008060408385031215614e0a578182fd5b8235614e1581615a4d565b946020939093013593505050565b60008060008060408587031215614e38578182fd5b84356001600160401b0380821115614e4e578384fd5b614e5a88838901614b49565b90965094506020870135915080821115614e72578384fd5b50614e7f87828801614b49565b95989497509550505050565b60006020808385031215614e9d578182fd5b82516001600160401b03811115614eb2578283fd5b8301601f81018513614ec2578283fd5b8051614ed5614ed082615859565b615829565b81815283810190838501610120808502860187018a1015614ef4578788fd5b8795505b84861015614f525780828b031215614f0e578788fd5b614f16615801565b82518152614f268b898501614b92565b88820152614f378b60a08501614b92565b60408201528452600195909501949286019290810190614ef8565b509098975050505050505050565b600080600080600060608688031215614f77578283fd5b85356001600160401b0380821115614f8d578485fd5b614f9989838a01614b49565b90975095506020880135915080821115614fb1578485fd5b50614fbe88828901614b49565b96999598509660400135949350505050565b600060208284031215614fe1578081fd5b8135610caf81615a62565b600060208284031215614ffd578081fd5b8151610caf81615a62565b600060208284031215615019578081fd5b5035919050565b600060208284031215615031578081fd5b5051919050565b6000806040838503121561504a578182fd5b823591506020830135614d4981615a62565b6000806040838503121561506e578182fd5b50508035926020909101359150565b6000806040838503121561508f578182fd5b823591506020830135614d4981615a70565b6000806000606084860312156150b5578081fd5b505081359360208301359350604090920135919050565b6000602082840312156150dd578081fd5b8135610caf81615a70565b6000602082840312156150f9578081fd5b8151610caf81615a70565b600060208284031215615115578081fd5b8135610caf81615a7d565b600060208284031215615131578081fd5b8151610caf81615a7d565b600060c0828403121561514d578081fd5b60405160c081018181106001600160401b038211171561516f5761516f615a37565b604052825161517d81615a4d565b8152602083015161518d81615a4d565b602082015260408301516151a081615a4d565b604082015260608301516151b381615a4d565b606082015260808301516151c681615a4d565b608082015260a08301516151d981615a4d565b60a08201529392505050565b60006101a082840312156151f7578081fd5b50919050565b600080600060608486031215615211578081fd5b83359250602084013591506040840135614dc081615a4d565b60008060008060008060c08789031215615242578384fd5b86359550602087013594506040870135935060608701359250608087013561526981615a8c565b915060a087013561527981615a8c565b809150509295509295509295565b600060208284031215615298578081fd5b8135610caf81615a8c565b6000602082840312156152b4578081fd5b8151610caf81615a8c565b6000815180845260208085019450848260051b8601828601855b858110156153035783830389526152f1838351615381565b988501989250908401906001016152d9565b5090979650505050505050565b81835260006001600160fb1b03831115615328578081fd5b8260051b80836020870137939093016020019283525090919050565b6000815480845260208085019450838352808320835b838110156153765781548752958201956001918201910161535a565b509495945050505050565b600081518084526153998160208601602086016159da565b601f01601f19169290920160200192915050565b600281106153cb57634e487b7160e01b600052602160045260246000fd5b9052565b600082516153e18184602087016159da565b9190910192915050565b6001600160a01b03888116825287166020820152604081018690526001600160401b0385166060820152600784900b608082015260e0810161543060a08301856153ad565b8260c083015298975050505050505050565b6001600160a01b038a8116825289166020820152604081018890526001600160401b0387166060820152600786900b6080820152610120810161548860a08301876153ad565b8460c08301528360e0830152826101008301529a9950505050505050505050565b6001600160a01b0384168152606081016154c660208301856153ad565b8215156040830152949350505050565b6020808252825182820181905260009190848201906040850190845b818110156155175783516001600160a01b0316835292840192918401916001016154f2565b50909695505050505050565b602081526000610caf60208301846152bf565b60808152600061554960808301876152bf565b828103602084810191909152865180835287820192820190845b8181101561557f57845183529383019391830191600101615563565b50506001600160401b039687166040860152949095166060909301929092525090949350505050565b60a08101818360005b60058110156155d05781518352602092830192909101906001016155b1565b50505092915050565b6060815260006155ed606083018789615310565b8281036020840152615600818688615310565b9150508260408301529695505050505050565b602081526000610caf6020830184615381565b6020808252603c908201527f5468697320616374696f6e2063616e6e6f7420626520706572666f726d65642060408201527f7768696c652074686520636f6e74726163742069732070617573656400000000606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b81516001600160a01b03168152610140810160208301516156e660208401826001600160a01b03169052565b5060408301516040830152606083015161570b60608401826001600160401b03169052565b506080830151615720608084018260070b9052565b5060a083015161573b60a08401826001600160401b03169052565b5060c083015161574e60c08401826153ad565b5060e083015160e083015261010080840151818401525061012080840151818401525092915050565b6001600160401b03851681526080602082015260006157996080830186615344565b82810360408401526157ab8186615344565b91505082606083015295945050505050565b6000808335601e198436030181126157d3578283fd5b8301803591506001600160401b038211156157ec578283fd5b602001915036819003821315614b8b57600080fd5b604051606081016001600160401b038111828210171561582357615823615a37565b60405290565b604051601f8201601f191681016001600160401b038111828210171561585157615851615a37565b604052919050565b60006001600160401b0382111561587257615872615a37565b5060051b60200190565b6000821982111561588f5761588f615a21565b500190565b60006001600160401b038083168185168083038211156158b6576158b6615a21565b01949350505050565b6000826158da57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156158f9576158f9615a21565b500290565b60008282101561591057615910615a21565b500390565b6000615923614ed084615859565b808482526020808301925084368760051b87011115615940578485fd5b845b878110156159ce5781356001600160401b0380821115615960578788fd5b90880190601f3681840112615973578889fd5b82358281111561598557615985615a37565b615996818301601f19168801615829565b925080835236878286010111156159ab57898afd5b808785018885013782018601899052508652509382019390820190600101615942565b50919695505050505050565b60005b838110156159f55781810151838201526020016159dd565b838111156110455750506000910152565b6000600019821415615a1a57615a1a615a21565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610fd057600080fd5b8015158114610fd057600080fd5b60028110610fd057600080fd5b8060070b8114610fd057600080fd5b6001600160401b0381168114610fd057600080fdfea2646970667358221220af8729600201b9bc977129c2ca63fbfac3a946836ae565b53fb5b736847b4ea064736f6c63430008040033