0 txs
4 calls
constructor
No constructor.
functions
admin
viewfunction admin(address) view returns (bool)
allUsersWithNetBuy
viewfunction allUsersWithNetBuy(uint256) view returns (address)
btbConfig
viewfunction btbConfig() view returns (address)
btbPackAddress
viewfunction btbPackAddress() view returns (address)
buyEnabled
viewfunction buyEnabled() view returns (bool)
canSell
viewfunction canSell() view returns (bool)
canUserBuy
viewfunction canUserBuy(address user) view returns (bool canBuy, string reason, uint256 userBalance, uint256 allowance)
checkBuyStatus
viewfunction checkBuyStatus() view returns (bool canBuy, string reason, bool buyEnabledStatus, bool configValid, address communityAddr, address techAddr)
checkPriceProtectionDetails
viewfunction checkPriceProtectionDetails() view returns (bool protectionEnabled, address protectionContract, uint256 weightedAveragePrice, bool hasAnomaly, string anomalyReason, uint256 deviation, bool flashLoanAttack, bool comprehensiveSafe, string safetyReason, uint256 riskLevel)
checkSellStatus
viewfunction checkSellStatus(address user) view returns (bool canSell, string reason, bool sellEnabledStatus, bool timeAllowed, uint256 currentHour, uint256 nextTradeTime, uint256 timeRemaining)
communityAddress
viewfunction communityAddress() view returns (address)
getAmountOut
purefunction getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns (uint256 amountOut)
getContractStatus
viewfunction getContractStatus() view returns (bool _buyEnabled, bool _sellEnabled, bool _rankingEnabled, uint256 _usdtBalance, uint256 _btbBalance, uint256 _top50Count)
getExchangeAmount
viewfunction getExchangeAmount(uint256 usdtAmount) view returns (uint256)
getPrice
viewfunction getPrice() view returns (uint256)
getPriceProtectionStatus
viewfunction getPriceProtectionStatus() view returns (address protectionAddress, bool enabled, uint256 threshold, uint256 safePrice, uint256 originalPrice, bool isPriceSafe, string safetyReason)
getRankingStats
viewfunction getRankingStats() view returns (uint256 totalUsers, uint256 totalNetBuyAmount, address topUser, int256 topNetAmount)
getRankingTargetStatus
viewfunction getRankingTargetStatus() view returns (uint256 target, uint256 currentTotal, bool targetReached, bool rankingActive, uint256 remainingAmount)
getSafePrice
viewfunction getSafePrice() view returns (uint256)
getSellExchangeAmount
viewfunction getSellExchangeAmount(uint256 btbAmount) view returns (uint256)
getTop50Addresses
viewfunction getTop50Addresses() view returns (address[], int256[])
getTop50Details
viewfunction getTop50Details() view returns (address[] addresses, int256[] netAmounts, uint256[] rankings)
getTop50Ranking
viewfunction getTop50Ranking() view returns (string[], int256[])
getUserRank
viewfunction getUserRank(address user) view returns (uint256 rank)
getUserVueStatus
viewfunction getUserVueStatus(address user) view returns (bool canBuy, bool canSell, string buyMessage, string sellMessage, uint256 userUsdtBalance, uint256 userBtbBalance, uint256 userUsdtAllowance, int256 userNetBuyAmount, uint256 userRank)
hasNetBuyRecord
viewfunction hasNetBuyRecord(address) view returns (bool)
isAdmin
viewfunction isAdmin(address user) view returns (bool)
lastTradeTime
viewfunction lastTradeTime(address) view returns (uint256)
MIN_POOL_BALANCE
viewfunction MIN_POOL_BALANCE() view returns (uint256)
NET_BUY_TARGET
viewfunction NET_BUY_TARGET() view returns (uint256)
netBuyAmount
viewfunction netBuyAmount(address) view returns (int256)
owner
viewfunction owner() view returns (address)
priceProtection
viewfunction priceProtection() view returns (address)
priceProtectionEnabled
viewfunction priceProtectionEnabled() view returns (bool)
priceProtectionThreshold
viewfunction priceProtectionThreshold() view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
rankingEnabled
viewfunction rankingEnabled() view returns (bool)
rankingTargetReached
viewfunction rankingTargetReached() view returns (bool)
SELL_LIMIT
viewfunction SELL_LIMIT() view returns (uint256)
sellEnabled
viewfunction sellEnabled() view returns (bool)
techAddress
viewfunction techAddress() view returns (address)
top50Addresses
viewfunction top50Addresses(uint256) view returns (address)
totalNetBuyAmount
viewfunction totalNetBuyAmount() view returns (uint256)
TRADE_INTERVAL
viewfunction TRADE_INTERVAL() view returns (uint256)
userRankingIndex
viewfunction userRankingIndex(address) view returns (uint256)
buyBTB
nonpayablefunction buyBTB(uint256 usdtAmount)
emergencyStop
nonpayablefunction emergencyStop()
forceClearRanking
nonpayablefunction forceClearRanking()
forceUpdateRanking
nonpayablefunction forceUpdateRanking(address user)
initialize
nonpayablefunction initialize(address _btbConfig, address _btbPackAddress, address _communityAddress, address _techAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
reorderRanking
nonpayablefunction reorderRanking()
resumeTrading
nonpayablefunction resumeTrading()
sellBTB
nonpayablefunction sellBTB(uint256 btbAmount)
setAdmin
nonpayablefunction setAdmin(address user, bool auth)
setAdmins
nonpayablefunction setAdmins(address[] users, bool auth)
setBuyEnabled
nonpayablefunction setBuyEnabled(bool enabled)
setCommunityAddress
nonpayablefunction setCommunityAddress(address addr)
setPriceProtection
nonpayablefunction setPriceProtection(address protectionAddress)
setPriceProtectionEnabled
nonpayablefunction setPriceProtectionEnabled(bool enabled)
setPriceProtectionThreshold
nonpayablefunction setPriceProtectionThreshold(uint256 threshold)
setRankingEnabled
nonpayablefunction setRankingEnabled(bool enabled)
setRankingTarget
nonpayablefunction setRankingTarget(uint256 newTarget)
setSellEnabled
nonpayablefunction setSellEnabled(bool enabled)
setTechAddress
nonpayablefunction setTechAddress(address addr)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdrawTokens
nonpayablefunction withdrawTokens(address token, uint256 amount)
zsetRankingTargetReached
nonpayablefunction zsetRankingTargetReached(bool reached)
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
AdminSet
event AdminSet(address indexed user, bool auth)
AllNetBuyDataCleared
event AllNetBuyDataCleared()
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
Buy
event Buy(address indexed user, uint256 usdtAmount, uint256 btbAmount)
Initialized
event Initialized(uint8 version)
NetBuyDataCleared
event NetBuyDataCleared(address indexed user)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PriceProtectionConfigUpdated
event PriceProtectionConfigUpdated(address protectionAddress, bool enabled, uint256 threshold)
PriceProtectionTriggered
event PriceProtectionTriggered(string reason, uint256 riskLevel)
RankingCleared
event RankingCleared()
RankingResumed
event RankingResumed(uint256 currentTotal)
RankingTargetChanged
event RankingTargetChanged(uint256 oldTarget, uint256 newTarget)
RankingTargetReached
event RankingTargetReached(uint256 totalNetBuyAmount)
RankingUpdated
event RankingUpdated(address indexed user, uint256 rank, int256 netAmount)
Sell
event Sell(address indexed user, uint256 btbAmount, uint256 usdtAmount)
Upgraded
event Upgraded(address indexed implementation)
errors
No errors.
creation bytecode
0x60a0604052306080526910f0cf064dd59200000061010955348015602257600080fd5b50608051615e7361005a60003960008181611b9201528181611bd201528181611f0d01528181611f4d01526121500152615e736000f3fe6080604052600436106104055760003560e01c806386e476dd11610213578063c5fa640411610123578063e50c4c86116100ab578063f582d2931161007a578063f582d29314610cf5578063f7ce447914610d10578063f8c8765e14610d30578063fa3afbbf14610d50578063fdaef40914610d6557600080fd5b8063e50c4c8614610c76578063e70a195414610c8d578063e9c8f10414610cb5578063f2fde38b14610cd557600080fd5b8063d6f15469116100f2578063d6f1546914610bd7578063d9e7c93814610bf7578063dba4d6c114610c17578063dbf5e66f14610c4c578063e44efc6c14610c6157600080fd5b8063c5fa640414610b62578063c7b501b614610b77578063cd5584a914610b97578063d35afcce14610bb757600080fd5b8063a6ab8121116101a6578063b4b9049511610175578063b4b9049514610a90578063b6bc254614610aad578063b76c552614610acd578063c032846b14610aed578063c57d349b14610b3757600080fd5b8063a6ab812114610a0f578063ad1a7c9414610a30578063b0cb1b0d14610a50578063b2d1573f14610a7057600080fd5b806398d5fdca116101e257806398d5fdca1461098957806399d4de831461099e578063a3e42c6f146109cc578063a3e871b0146109ec57600080fd5b806386e476dd1461090e5780638da5cb5b1461092e57806391f899191461094c57806394ad511b1461096c57600080fd5b80634f1ef286116103195780635dd11a6e116102a1578063707eb02a11610270578063707eb02a1461087e578063715018a61461089557806377d8d158146108aa5780637d993c46146108ce57806384c87340146108ee57600080fd5b80635dd11a6e146107f357806363a599a41461082157806363a846f8146108365780636d5eba171461086757600080fd5b80635589f22b116102e85780635589f22b1461075757806355b1560314610777578063568e48f71461079257806358197a9d146107b25780635b937510146107d257600080fd5b80634f1ef286146106c957806351318d79146106dc57806352d1902d146106ff57806354e5e3211461071457600080fd5b806324d7806c1161039c5780633659cfe61161036b5780633659cfe6146105f25780633c7899b31461061257806340cc6bae14610645578063442a8ce8146106655780634b0bddd2146106a957600080fd5b806324d7806c1461054a578063272f14671461057a5780632a103261146105a15780632db687b0146105d257600080fd5b806306b091f9116103d857806306b091f9146104a257806309c07a2a146104c25780631d757cfe146104e25780631e56cfab1461051257600080fd5b8063030e2c881461040a57806303186eef1461042c578063054d50d41461046d5780630694db1e1461048d575b600080fd5b34801561041657600080fd5b5061042a610425366004615170565b610d7b565b005b34801561043857600080fd5b5061045a61044736600461520c565b6101066020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561047957600080fd5b5061045a610488366004615229565b610e5c565b34801561049957600080fd5b5061042a610f55565b3480156104ae57600080fd5b5061042a6104bd366004615255565b610fae565b3480156104ce57600080fd5b5061042a6104dd36600461520c565b611101565b3480156104ee57600080fd5b506105026104fd36600461520c565b6111b8565b60405161046494939291906152d1565b34801561051e57600080fd5b5060fc54610532906001600160a01b031681565b6040516001600160a01b039091168152602001610464565b34801561055657600080fd5b5061056a61056536600461520c565b611446565b6040519015158152602001610464565b34801561058657600080fd5b5061058f611481565b604051610464969594939291906152ff565b3480156105ad57600080fd5b5061056a6105bc36600461520c565b6101046020526000908152604090205460ff1681565b3480156105de57600080fd5b5061042a6105ed366004615348565b611597565b3480156105fe57600080fd5b5061042a61060d36600461520c565b611b88565b34801561061e57600080fd5b5061063261062d36600461520c565b611c64565b6040516104649796959493929190615361565b34801561065157600080fd5b5061042a61066036600461520c565b611dcd565b34801561067157600080fd5b5061067a611e1b565b604051610464949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b3480156106b557600080fd5b5061042a6106c43660046153a6565b611e9b565b61042a6106d736600461544c565b611f03565b3480156106e857600080fd5b506106f1611fcf565b604051610464929190615555565b34801561070b57600080fd5b5061045a612143565b34801561072057600080fd5b506107296121f6565b604080519586526020860194909452911515928401929092529015156060830152608082015260a001610464565b34801561076357600080fd5b50610532610772366004615348565b612239565b34801561078357600080fd5b5061010b5461056a9060ff1681565b34801561079e57600080fd5b5061042a6107ad366004615583565b612264565b3480156107be57600080fd5b506101075461056a90610100900460ff1681565b3480156107de57600080fd5b5060ff805461056a91600160a01b9091041681565b3480156107ff57600080fd5b5061045a61080e36600461520c565b6101036020526000908152604090205481565b34801561082d57600080fd5b5061042a612322565b34801561084257600080fd5b5061056a61085136600461520c565b6101086020526000908152604090205460ff1681565b34801561087357600080fd5b5061045a6101005481565b34801561088a57600080fd5b5061045a6101095481565b3480156108a157600080fd5b5061042a612376565b3480156108b657600080fd5b506108bf61238a565b604051610464939291906155a0565b3480156108da57600080fd5b5061042a6108e9366004615348565b612564565b3480156108fa57600080fd5b5060fd54610532906001600160a01b031681565b34801561091a57600080fd5b5060fb54610532906001600160a01b031681565b34801561093a57600080fd5b506033546001600160a01b0316610532565b34801561095857600080fd5b5061042a610967366004615583565b61264b565b34801561097857600080fd5b5061045a680ad78ebc5ac620000081565b34801561099557600080fd5b5061045a6126ad565b3480156109aa57600080fd5b5061045a6109b936600461520c565b6101016020526000908152604090205481565b3480156109d857600080fd5b5061042a6109e7366004615348565b6127b8565b3480156109f857600080fd5b50610a01612893565b60405161046492919061560b565b348015610a1b57600080fd5b506101075461056a9062010000900460ff1681565b348015610a3c57600080fd5b5061042a610a4b366004615583565b6129f0565b348015610a5c57600080fd5b5060fe54610532906001600160a01b031681565b348015610a7c57600080fd5b5061045a610a8b36600461520c565b612a49565b348015610a9c57600080fd5b5061045a68056bc75e2d6310000081565b348015610ab957600080fd5b5061042a610ac8366004615583565b612ac5565b348015610ad957600080fd5b5060ff54610532906001600160a01b031681565b348015610af957600080fd5b50610b02612b25565b6040805196151587529415156020870152921515938501939093526060840152608083019190915260a082015260c001610464565b348015610b4357600080fd5b50610b4c612d1f565b6040516104649a9998979695949392919061567a565b348015610b6e57600080fd5b5061045a6131c6565b348015610b8357600080fd5b5061042a610b92366004615348565b6132e7565b348015610ba357600080fd5b5061045a610bb2366004615348565b6137a7565b348015610bc357600080fd5b5061042a610bd236600461520c565b6137ce565b348015610be357600080fd5b5061042a610bf2366004615583565b613835565b348015610c0357600080fd5b5061045a610c12366004615348565b61388e565b348015610c2357600080fd5b50610c37610c3236600461520c565b6138aa565b604051610464999897969594939291906156f5565b348015610c5857600080fd5b5061042a613b13565b348015610c6d57600080fd5b5061042a613b60565b348015610c8257600080fd5b5061045a61010a5481565b348015610c9957600080fd5b50610ca2613bad565b604051610464979695949392919061575a565b348015610cc157600080fd5b50610532610cd0366004615348565b613bff565b348015610ce157600080fd5b5061042a610cf036600461520c565b613c10565b348015610d0157600080fd5b506101075461056a9060ff1681565b348015610d1c57600080fd5b5061042a610d2b36600461520c565b613c86565b348015610d3c57600080fd5b5061042a610d4b3660046157aa565b613ced565b348015610d5c57600080fd5b5061056a613e79565b348015610d7157600080fd5b5061045a610e1081565b610d83613ed6565b60005b82811015610e5657816101086000868685818110610da657610da6615806565b9050602002016020810190610dbb919061520c565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055838382818110610df557610df5615806565b9050602002016020810190610e0a919061520c565b6001600160a01b03167fe68d2c359a771606c400cf8b87000cf5864010363d6a736e98f5047b7bbe18e983604051610e46911515815260200190565b60405180910390a2600101610d86565b50505050565b6000808411610eb25760405162461bcd60e51b815260206004820152601960248201527f494e53554646494349454e545f494e5055545f414d4f554e540000000000000060448201526064015b60405180910390fd5b600083118015610ec25750600082115b610f075760405162461bcd60e51b8152602060048201526016602482015275494e53554646494349454e545f4c495155494449545960501b6044820152606401610ea9565b6000610f15856103e5615832565b90506000610f238483615832565b9050600082610f34876103e8615832565b610f3e9190615849565b9050610f4a8183615872565b979650505050505050565b336000908152610108602052604090205460ff1680610f7e57506033546001600160a01b031633145b610f9a5760405162461bcd60e51b8152600401610ea990615886565b610107805462ffffff191662010101179055565b336000908152610108602052604090205460ff1680610fd757506033546001600160a01b031633145b610ff35760405162461bcd60e51b8152600401610ea990615886565b600081116110435760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610ea9565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad91906158a9565b10156110f25760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610ea9565b6110fd823383613f30565b5050565b336000908152610108602052604090205460ff168061112a57506033546001600160a01b031633145b6111465760405162461bcd60e51b8152600401610ea990615886565b60ff80546001600160a01b0319166001600160a01b0383169081178083556101005460408051938452600160a01b909204909316151560208301528101919091527fff5c520f6a80b82e424b57bd14b9958fd055ddd46d0d09af916d7039619ff7a4906060015b60405180910390a150565b60006060600080306001600160a01b031663272f14676040518163ffffffff1660e01b8152600401600060405180830381865afa1580156111fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112259190810190615907565b50939750919550508515915061143f90505760fe60009054906101000a90046001600160a01b03166001600160a01b0316632f48ab7d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae91906159a5565b6040516370a0823160e01b81526001600160a01b03878116600483015291909116906370a0823190602401602060405180830381865afa1580156112f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131a91906158a9565b915060fe60009054906101000a90046001600160a01b03166001600160a01b0316632f48ab7d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561136f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139391906159a5565b604051636eb1769f60e11b81526001600160a01b038781166004830152306024830152919091169063dd62ed3e90604401602060405180830381865afa1580156113e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140591906158a9565b90508160000361143f57600093506040518060400160405280601081526020016f55534454e4bd99e9a29de4b88de8b6b360801b81525092505b9193509193565b6001600160a01b0381166000908152610108602052604081205460ff168061147b57506033546001600160a01b038381169116145b92915050565b60408051808201909152600c81526be58fafe4bba5e4b9b0e585a560a01b6020820152610107546001919060009081908190819060ff166114ee576000955060405180604001604052806012815260200171e5bd93e5898de697a0e6b395e4b9b0e585a560701b81525094505b60fb546001600160a01b0316158061150f575060fc546001600160a01b0316155b15611546576000955060405180604001604052806012815260200171e59088e7baa6e9858de7bdaee99499e8afaf60701b81525094505b6101075460fb5460ff90911694506001600160a01b031615801590611575575060fc546001600160a01b031615155b60fb5460fc5497989697959691956001600160a01b0391821695501692509050565b61159f613fa3565b6115a7613e79565b6115ea5760405162461bcd60e51b815260206004820152601460248201527353656c6c206e6f7420616c6c6f776564206e6f7760601b6044820152606401610ea9565b336000908152610106602052604090205461160890610e1090615849565b421161164b5760405162461bcd60e51b8152602060048201526012602482015271151c985919481d1bdbc8199c995c5d595b9d60721b6044820152606401610ea9565b600080611656613ffc565b91509150818160405160200161166c91906159c2565b604051602081830303815290604052906116995760405162461bcd60e51b8152600401610ea99190615a07565b506000670de0b6b3a76400006116ad6131c6565b6116b79086615832565b6116c19190615872565b9050680ad78ebc5ac62000008111156117105760405162461bcd60e51b8152602060048201526011602482015270115e18d95959081cd95b1b081b1a5b5a5d607a1b6044820152606401610ea9565b60fe5460408051632f48ab7d60e01b8152905183926001600160a01b031691632f48ab7d9160048083019260209291908290030181865afa158015611759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177d91906159a5565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156117c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e791906158a9565b10156118295760405162461bcd60e51b8152602060048201526011602482015270125b9cdd59999a58da595b9d081c1bdbdb607a1b6044820152606401610ea9565b60fe5460408051630634626760e51b815290516118a0926001600160a01b03169163c68c4ce09160048083019260209291908290030181865afa158015611874573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189891906159a5565b3330876141e4565b60fe5460408051632f48ab7d60e01b81529051611916926001600160a01b031691632f48ab7d9160048083019260209291908290030181865afa1580156118eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190f91906159a5565b3383613f30565b60fe5460408051630634626760e51b8152905161198d926001600160a01b03169163c68c4ce09160048083019260209291908290030181865afa158015611961573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198591906159a5565b600186613f30565b33600090815261010660209081526040808320429055610101909152812054906119b78383615a1a565b9050600081136119c85760006119ca565b805b3360009081526101016020526040812091909155821315611a3457600080821315611a00576119f98284615a1a565b9050611a03565b50815b8061010a5410611a2b578061010a6000828254611a209190615a41565b90915550611a329050565b600061010a555b505b61010b5460ff16611a4857611a483361425f565b604080518781526020810185905233917fed7a144fad14804d5c249145e3e0e2b63a9eb455b76aee5bc92d711e9bba3e4a910160405180910390a260fe5460408051632f48ab7d60e01b8152905168056bc75e2d63100000926001600160a01b031691632f48ab7d9160048083019260209291908290030181865afa158015611ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af991906159a5565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611b3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6391906158a9565b1015611b7657610107805461ffff191690555b5050505050611b85600160c955565b50565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611bd05760405162461bcd60e51b8152600401610ea990615a54565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611c19600080516020615dbf833981519152546001600160a01b031690565b6001600160a01b031614611c3f5760405162461bcd60e51b8152600401610ea990615aa0565b611c48816144f3565b60408051600080825260208201909252611b85918391906144fb565b60408051808201909152600c81526b72c7d7f25dd2f2c6cb72c3dd60a11b602082015261010754600191906000908190819081908190610100900460ff16611cd857600096506040518060400160405280601281526020017172dec9f2c4c6f34bd07359caf2c6cb72c3dd60711b81525095505b60006018603c611ce88142615872565b611cf29190615872565b611cfd906008615849565b611d079190615aec565b90506008811080611d19575060188110155b15611d3e5760009750604051806060016040528060388152602001615e066038913996505b6001600160a01b0389166000908152610106602052604081205490611d65610e1083615849565b9050804211611d9a5760009950611d7c4282615a41565b9350604051806060016040528060388152602001615e066038913998505b61010754610100900460ff16975060088310801590611db95750601883105b999b989a5096989791969550919350915050565b336000908152610108602052604090205460ff1680611df657506033546001600160a01b031633145b611e125760405162461bcd60e51b8152600401610ea990615886565b611b858161425f565b6101025460008080805b61010254811015611e945760006101028281548110611e4657611e46615806565b60009182526020808320909101546001600160a01b0316808352610101909152604090912054909150611e798187615849565b955083811315611e8a578093508194505b5050600101611e25565b5090919293565b611ea3613ed6565b6001600160a01b03821660008181526101086020908152604091829020805460ff191685151590811790915591519182527fe68d2c359a771606c400cf8b87000cf5864010363d6a736e98f5047b7bbe18e9910160405180910390a25050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611f4b5760405162461bcd60e51b8152600401610ea990615a54565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611f94600080516020615dbf833981519152546001600160a01b031690565b6001600160a01b031614611fba5760405162461bcd60e51b8152600401610ea990615aa0565b611fc3826144f3565b6110fd828260016144fb565b6101025460609081906000816001600160401b03811115611ff257611ff26153df565b60405190808252806020026020018201604052801561201b578160200160208202803683370190505b5090506000826001600160401b03811115612038576120386153df565b604051908082528060200260200182016040528015612061578160200160208202803683370190505b50905060005b8381101561213857610102818154811061208357612083615806565b9060005260206000200160009054906101000a90046001600160a01b03168382815181106120b3576120b3615806565b60200260200101906001600160a01b031690816001600160a01b031681525050610101600061010283815481106120ec576120ec615806565b60009182526020808320909101546001600160a01b03168352820192909252604001902054825183908390811061212557612125615806565b6020908102919091010152600101612067565b509094909350915050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146121e35760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ea9565b50600080516020615dbf83398151915290565b6101095461010a5461010b546101075460ff91821691620100009091041660008484101561222d576122288486615a41565b612230565b60005b90509091929394565b610102818154811061224a57600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152610108602052604090205460ff168061228d57506033546001600160a01b031633145b6122a95760405162461bcd60e51b8152600401610ea990615886565b60ff8054821515600160a01b0260ff60a01b1982168117909255610100546040517fff5c520f6a80b82e424b57bd14b9958fd055ddd46d0d09af916d7039619ff7a4936111ad936001600160a01b039182169116179185916001600160a01b039390931683529015156020830152604082015260600190565b336000908152610108602052604090205460ff168061234b57506033546001600160a01b031633145b6123675760405162461bcd60e51b8152600401610ea990615886565b610107805462ffffff19169055565b61237e613ed6565b612388600061466b565b565b6101025460609081908190806001600160401b038111156123ad576123ad6153df565b6040519080825280602002602001820160405280156123d6578160200160208202803683370190505b509350806001600160401b038111156123f1576123f16153df565b60405190808252806020026020018201604052801561241a578160200160208202803683370190505b509250806001600160401b03811115612435576124356153df565b60405190808252806020026020018201604052801561245e578160200160208202803683370190505b50915060005b8181101561255d57610102818154811061248057612480615806565b9060005260206000200160009054906101000a90046001600160a01b03168582815181106124b0576124b0615806565b60200260200101906001600160a01b031690816001600160a01b031681525050610101600061010283815481106124e9576124e9615806565b60009182526020808320909101546001600160a01b03168352820192909252604001902054845185908390811061252257612522615806565b6020908102919091010152612538816001615849565b83828151811061254a5761254a615806565b6020908102919091010152600101612464565b5050909192565b336000908152610108602052604090205460ff168061258d57506033546001600160a01b031633145b6125a95760405162461bcd60e51b8152600401610ea990615886565b60328111156125ef5760405162461bcd60e51b81526020600482015260126024820152710a8d0e4cae6d0ded8c840e8dede40d0d2ced60731b6044820152606401610ea9565b61010081905560ff8054604080516001600160a01b0383168152600160a01b909204909216151560208201529081018290527fff5c520f6a80b82e424b57bd14b9958fd055ddd46d0d09af916d7039619ff7a4906060016111ad565b336000908152610108602052604090205460ff168061267457506033546001600160a01b031633145b6126905760405162461bcd60e51b8152600401610ea990615886565b6101078054911515620100000262ff000019909216919091179055565b60fd5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac916004808201926060929091908290030181865afa1580156126fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127229190615b17565b50915091506000816001600160701b03161161278b5760405162461bcd60e51b815260206004820152602260248201527f5265736572766531206d7573742062652067726561746572207468616e207a65604482015261726f60f01b6064820152608401610ea9565b6127b0670de0b6b3a7640000836001600160701b0316836001600160701b0316610e5c565b935050505090565b336000908152610108602052604090205460ff16806127e157506033546001600160a01b031633145b6127fd5760405162461bcd60e51b8152600401610ea990615886565b6000811161284d5760405162461bcd60e51b815260206004820181905260248201527f546172676574206d7573742062652067726561746572207468616e207a65726f6044820152606401610ea9565b61010980549082905560408051828152602081018490527fb21b06e36384b0148661b7dc1612ef58b5c3e79cb8ef76814d8ee7c3a973789d910160405180910390a15050565b6101025460609081906000816001600160401b038111156128b6576128b66153df565b6040519080825280602002602001820160405280156128e957816020015b60608152602001906001900390816128d45790505b5090506000826001600160401b03811115612906576129066153df565b60405190808252806020026020018201604052801561292f578160200160208202803683370190505b50905060005b838110156121385761296e610102828154811061295457612954615806565b6000918252602090912001546001600160a01b03166146bd565b83828151811061298057612980615806565b6020026020010181905250610101600061010283815481106129a4576129a4615806565b60009182526020808320909101546001600160a01b0316835282019290925260400190205482518390839081106129dd576129dd615806565b6020908102919091010152600101612935565b336000908152610108602052604090205460ff1680612a1957506033546001600160a01b031633145b612a355760405162461bcd60e51b8152600401610ea990615886565b61010b805460ff1916911515919091179055565b6001600160a01b038116600090815261010360205260408120546101025481108015612aa55750826001600160a01b03166101028281548110612a8e57612a8e615806565b6000918252602090912001546001600160a01b0316145b15612abc57612ab5816001615849565b9392505050565b50600092915050565b336000908152610108602052604090205460ff1680612aee57506033546001600160a01b031633145b612b0a5760405162461bcd60e51b8152600401610ea990615886565b61010780549115156101000261ff0019909216919091179055565b6101075460fe5460408051632f48ab7d60e01b815290516000938493849384938493849360ff80831694610100840482169462010000909404909116926001600160a01b0390921691632f48ab7d916004808201926020929091908290030181865afa158015612b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbd91906159a5565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015612c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2791906158a9565b60fe60009054906101000a90046001600160a01b03166001600160a01b031663c68c4ce06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9e91906159a5565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015612ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0891906158a9565b61010254949b939a50919850965094509092509050565b60ff8054600160a01b8104909116906001600160a01b031660008060608180808381898015612d58575060ff546001600160a01b031615155b156131675760ff5460fe5460408051630634626760e51b815290516001600160a01b039384169363ede1468193169163c68c4ce09160048083019260209291908290030181865afa158015612db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd591906159a5565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa925050508015612e35575060408051601f3d908101601f19168201909252612e32918101906158a9565b60015b612e425760009750612e45565b97505b60ff5460fe5460408051630634626760e51b815290516001600160a01b039384169363ccc1de4b93169163c68c4ce09160048083019260209291908290030181865afa158015612e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebd91906159a5565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381865afa925050508015612f2257506040513d6000823e601f3d908101601f19168201604052612f1f9190810190615b5c565b60015b612f5a57600096506040518060400160405280600c81526020016b10da1958dac819985a5b195960a21b815250955060009450612f62565b919850965094505b60ff5460fe5460408051630634626760e51b815290516001600160a01b0393841693630a83101c93169163c68c4ce09160048083019260209291908290030181865afa158015612fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fda91906159a5565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa92505050801561303a575060408051601f3d908101601f1916820190925261303791810190615bb8565b60015b613047576000935061304a565b93505b60ff5460fe5460408051630634626760e51b815290516001600160a01b039384169363d6bc8f4893169163c68c4ce09160048083019260209291908290030181865afa15801561309e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c291906159a5565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381865afa92505050801561312757506040513d6000823e601f3d908101601f191682016040526131249190810190615b5c565b60015b61315b57505060408051808201909152600c81526b10da1958dac819985a5b195960a21b60208201526000915060646131ba565b919450925090506131ba565b5050604080518082018252601380825272141c9bdd1958dd1a5bdb88191a5cd8589b1959606a1b602080840182905284518086019095529184529083015260009750879650945085935083925060019150825b90919293949596979899565b60ff8054600091600160a01b9091041680156131ec575060ff546001600160a01b031615155b156132df5760ff5460fe5460408051630634626760e51b815290516001600160a01b039384169363ede1468193169163c68c4ce09160048083019260209291908290030181865afa158015613245573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326991906159a5565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa9250505080156132c9575060408051601f3d908101601f191682019092526132c6918101906158a9565b60015b6132da576132d56126ad565b905090565b919050565b6132d56126ad565b6132ef613fa3565b6101075460ff166133315760405162461bcd60e51b815260206004820152600c60248201526b109d5e48191a5cd8589b195960a21b6044820152606401610ea9565b60fb546001600160a01b031615801590613355575060fc546001600160a01b031615155b6133905760405162461bcd60e51b815260206004820152600c60248201526b21b7b73334b39032b93937b960a11b6044820152606401610ea9565b60008061339b613ffc565b9150915081816040516020016133b191906159c2565b604051602081830303815290604052906133de5760405162461bcd60e51b8152600401610ea99190615a07565b5060006133ea8461388e565b9050600060646133fb866004615832565b6134059190615872565b905060006064613416876001615832565b6134209190615872565b90506134a460fe60009054906101000a90046001600160a01b03166001600160a01b0316632f48ab7d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349c91906159a5565b3330896141e4565b60fe5460408051632f48ab7d60e01b81529051613525926001600160a01b031691632f48ab7d9160048083019260209291908290030181865afa1580156134ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061351391906159a5565b60fb546001600160a01b031684613f30565b60fe5460408051632f48ab7d60e01b815290516135a6926001600160a01b031691632f48ab7d9160048083019260209291908290030181865afa158015613570573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359491906159a5565b60fc546001600160a01b031683613f30565b60fe5460408051630634626760e51b8152905161361c926001600160a01b03169163c68c4ce09160048083019260209291908290030181865afa1580156135f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061361591906159a5565b3385613f30565b33600090815261010160205260408120805488929061363c908490615bd5565b9091555050336000908152610104602052604090205460ff166136b85733600081815261010460205260408120805460ff19166001908117909155610105805491820181559091527ffc62abc8c0fc47c2d92f5aec99bf8b60f375828e14394d89345cae11a98673710180546001600160a01b03191690911790555b8561010a60008282546136cb9190615849565b909155505061010b5460ff161580156136ea57506101095461010a5410155b156137495761010b805460ff19166001179055610107805462ff00001916905561010a546040517f299e165a854869e0bfae6e4f932514c2d306526d8adde944fbc77785ea12829d916137409190815260200190565b60405180910390a15b61010b5460ff1661375d5761375d3361425f565b604080518781526020810185905233917f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed910160405180910390a25050505050611b85600160c955565b6000670de0b6b3a76400006137ba6131c6565b6137c49084615832565b61147b9190615872565b336000908152610108602052604090205460ff16806137f757506033546001600160a01b031633145b6138135760405162461bcd60e51b8152600401610ea990615886565b60fc80546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152610108602052604090205460ff168061385e57506033546001600160a01b031633145b61387a5760405162461bcd60e51b8152600401610ea990615886565b610107805460ff1916911515919091179055565b60006138986131c6565b6137c483670de0b6b3a7640000615832565b604051630ebabe7f60e11b81526001600160a01b038216600482015260009081906060908190839081908190819081903090631d757cfe90602401600060405180830381865afa158015613902573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261392a9190810190615bfd565b604051633c7899b360e01b81526001600160a01b038f166004820152939c50919950965093503090633c7899b390602401600060405180830381865afa158015613978573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139a09190810190615c5d565b505060fe5460408051630634626760e51b81529051969e50949b506001600160a01b03169463c68c4ce09460048082019550602094509192508290030181865afa1580156139f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1691906159a5565b6040516370a0823160e01b81526001600160a01b038c8116600483015291909116906370a0823190602401602060405180830381865afa158015613a5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a8291906158a9565b6001600160a01b038b16600081815261010160205260409081902054905163b2d1573f60e01b81526004810192909252919550909250309063b2d1573f90602401602060405180830381865afa158015613ae0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0491906158a9565b90509193959799909294969850565b336000908152610108602052604090205460ff1680613b3c57506033546001600160a01b031633145b613b585760405162461bcd60e51b8152600401610ea990615886565b612388614791565b336000908152610108602052604090205460ff1680613b8957506033546001600160a01b031633145b613ba55760405162461bcd60e51b8152600401610ea990615886565b612388614867565b60ff8054610100546001600160a01b03821692600160a01b90920490911690600080806060613bda6131c6565b9350613be46126ad565b9250613bee6149fc565b809250819350505090919293949596565b610105818154811061224a57600080fd5b613c18613ed6565b6001600160a01b038116613c7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ea9565b611b858161466b565b336000908152610108602052604090205460ff1680613caf57506033546001600160a01b031633145b613ccb5760405162461bcd60e51b8152600401610ea990615886565b60fb80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1615808015613d0d5750600054600160ff909116105b80613d275750303b158015613d27575060005460ff166001145b613d8a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ea9565b6000805460ff191660011790558015613dad576000805461ff0019166101001790555b613db5614b78565b613dbd614ba7565b60fe80546001600160a01b03199081166001600160a01b038881169190911790925560fd8054821687841617905560fb8054821686841617905560fc8054909116918416919091179055610107805462ffffff19166201010117905560ff805460ff60a01b19169055600f610100558015613e72576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000806018603c613e8a8142615872565b613e949190615872565b613e9f906008615849565b613ea99190615aec565b905060088110158015613ebc5750601881105b8015613ed0575061010754610100900460ff165b91505090565b6033546001600160a01b031633146123885760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ea9565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015613f7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190615bb8565b600260c95403613ff55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ea9565b600260c955565b60ff8054600091606091600160a01b9004161580614023575060ff546001600160a01b0316155b1561406357505060408051808201909152601c81527f50726963652070726f74656374696f6e206e6f7420656e61626c6564000000006020820152600191565b60ff5460fe5460408051630634626760e51b815290516001600160a01b039384169363d6bc8f4893169163c68c4ce09160048083019260209291908290030181865afa1580156140b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140db91906159a5565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381865afa92505050801561414057506040513d6000823e601f3d908101601f1916820160405261413d9190810190615b5c565b60015b6141675760016040518060600160405280602d8152602001615d92602d9139915091509091565b826141b1577f02f3986a93fea942973ee1fa69c725bdbb0e10415bcbea80d9a2fdee8b8470e8828260405161419d929190615cf2565b60405180910390a150600094909350915050565b60016040518060400160405280600d81526020016c5072696365206973207361666560981b815250945094505050509091565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390528516906323b872dd906064016020604051808303816000875af115801561423b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e729190615bb8565b6101075462010000900460ff166142735750565b6001600160a01b038116600090815261010160205260408120549081121561429e576110fd82614bd6565b6001600160a01b0382166000908152610103602052604081205461010254909190821080156142fd5750836001600160a01b031661010283815481106142e6576142e6615806565b6000918252602090912001546001600160a01b0316145b9050806144675761010254603211156143915761010280546001808201835560008390527f93bdaa6a4190909b7c3fbe8d42169ffe1cab19f51dfc8db24c71abf849eced4a90910180546001600160a01b0319166001600160a01b038816179055905461436a9190615a41565b6001600160a01b0385166000908152610103602052604090205561438c614867565b61446f565b610102546000906143a490600190615a41565b9050600061010282815481106143bc576143bc615806565b60009182526020808320909101546001600160a01b0316808352610101909152604090912054909150851315614460576001600160a01b0381166000908152610103602052604081205561010280548791908490811061441e5761441e615806565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918816815261010390915260409020829055614460614867565b505061446f565b61446f614867565b6001600160a01b03841660009081526101036020526040812054614494906001615849565b610102549091508111613e725760408051828152602081018690526001600160a01b038716917f4ee6ba0bd112212c7eec914fa89dd7bcdc4d303f6c31672b6e5a4d98d57e997c910160405180910390a25050505050565b600160c955565b611b85613ed6565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156145335761452e83614d08565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561458d575060408051601f3d908101601f1916820190925261458a918101906158a9565b60015b6145f05760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ea9565b600080516020615dbf833981519152811461465f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ea9565b5061452e838383614da4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051606082811b6bffffffffffffffffffffffff191660208301529060009060340160408051808303601f19018152600680845283830190925292506000919060208201818036833701905050905060005b600681101561477f578281600685516147299190615a41565b6147339190615849565b8151811061474357614743615806565b602001015160f81c60f81b82828151811061476057614760615806565b60200101906001600160f81b031916908160001a905350600101614710565b5061478981614dc9565b949350505050565b60005b610105548110156147ff57600061010582815481106147b5576147b5615806565b60009182526020808320909101546001600160a01b031682526101038152604080832083905561010182528083208390556101049091529020805460ff1916905550600101614794565b5061480d6101026000615130565b61481a6101056000615130565b600061010a81905561010b805460ff19169055610107805462ff00001916620100001790556040517e96a4ada6b93038a711dd467a1dd23a8408364402693cc3bebb2d27baa49d1b9190a1565b61010254600181116148765750565b60005b614884600183615a41565b8110156110fd5760005b600161489a8385615a41565b6148a49190615a41565b8110156149f357600061010282815481106148c1576148c1615806565b60009182526020822001546001600160a01b031691506101026148e5846001615849565b815481106148f5576148f5615806565b60009182526020808320909101546001600160a01b0390811680845261010190925260408084205491861684529092205490925012156149e95780610102848154811061494457614944615806565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790558161010261497c856001615849565b8154811061498c5761498c615806565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556149c0836001615849565b6001600160a01b0380841660009081526101036020526040808220939093559083168152208390555b505060010161488e565b50600101614879565b60ff8054600091606091600160a01b9004161580614a23575060ff546001600160a01b0316155b15614a6357505060408051808201909152601c81527f50726963652070726f74656374696f6e206e6f7420656e61626c6564000000006020820152600191565b60ff5460fe5460408051630634626760e51b815290516001600160a01b039384169363d6bc8f4893169163c68c4ce09160048083019260209291908290030181865afa158015614ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614adb91906159a5565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381865afa925050508015614b4057506040513d6000823e601f3d908101601f19168201604052614b3d9190810190615b5c565b60015b614b675760016040518060600160405280602d8152602001615d92602d9139915091509091565b826141b15750600094909350915050565b600054610100900460ff16614b9f5760405162461bcd60e51b8152600401610ea990615d14565b612388614f63565b600054610100900460ff16614bce5760405162461bcd60e51b8152600401610ea990615d14565b612388614f93565b6001600160a01b038116600090815261010360205260409020546101025481108015614c325750816001600160a01b03166101028281548110614c1b57614c1b615806565b6000918252602090912001546001600160a01b0316145b156110fd57610102805460009190614c4c90600190615a41565b81548110614c5c57614c5c615806565b60009182526020909120015461010280546001600160a01b039092169250829184908110614c8c57614c8c615806565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055838316825261010390526040808220859055918516815290812055610102805480614ce157614ce1615d5f565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b6001600160a01b0381163b614d755760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ea9565b600080516020615dbf83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b614dad83614fba565b600082511180614dba5750805b1561452e57610e568383614ffa565b60408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b6020820152815160609190600090614e04906002615832565b6001600160401b03811115614e1b57614e1b6153df565b6040519080825280601f01601f191660200182016040528015614e45576020820181803683370190505b50905060005b8451811015614f5b57826004868381518110614e6957614e69615806565b016020015182516001600160f81b031990911690911c60f81c908110614e9157614e91615806565b01602001516001600160f81b03191682614eac836002615832565b81518110614ebc57614ebc615806565b60200101906001600160f81b031916908160001a90535082858281518110614ee657614ee6615806565b602091010151815160f89190911c600f16908110614f0657614f06615806565b01602001516001600160f81b03191682614f21836002615832565b614f2c906001615849565b81518110614f3c57614f3c615806565b60200101906001600160f81b031916908160001a905350600101614e4b565b509392505050565b600054610100900460ff16614f8a5760405162461bcd60e51b8152600401610ea990615d14565b6123883361466b565b600054610100900460ff166144ec5760405162461bcd60e51b8152600401610ea990615d14565b614fc381614d08565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612ab58383604051806060016040528060278152602001615ddf602791396060600080856001600160a01b0316856040516150379190615d75565b600060405180830381855af49150503d8060008114615072576040519150601f19603f3d011682016040523d82523d6000602084013e615077565b606091505b509150915061508886838387615092565b9695505050505050565b606083156151015782516000036150fa576001600160a01b0385163b6150fa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ea9565b5081614789565b61478983838151156151165781518083602001fd5b8060405162461bcd60e51b8152600401610ea99190615a07565b5080546000825590600052602060002090810190611b8591905b8082111561515e576000815560010161514a565b5090565b8015158114611b8557600080fd5b60008060006040848603121561518557600080fd5b83356001600160401b0381111561519b57600080fd5b8401601f810186136151ac57600080fd5b80356001600160401b038111156151c257600080fd5b8660208260051b84010111156151d757600080fd5b6020918201945092508401356151ec81615162565b809150509250925092565b6001600160a01b0381168114611b8557600080fd5b60006020828403121561521e57600080fd5b8135612ab5816151f7565b60008060006060848603121561523e57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561526857600080fd5b8235615273816151f7565b946020939093013593505050565b60005b8381101561529c578181015183820152602001615284565b50506000910152565b600081518084526152bd816020860160208601615281565b601f01601f19169290920160200192915050565b84151581526080602082015260006152ec60808301866152a5565b6040830194909452506060015292915050565b861515815260c06020820152600061531a60c08301886152a5565b95151560408301525092151560608401526001600160a01b0391821660808401521660a09091015292915050565b60006020828403121561535a57600080fd5b5035919050565b871515815260e06020820152600061537c60e08301896152a5565b9615156040830152509315156060850152608084019290925260a083015260c09091015292915050565b600080604083850312156153b957600080fd5b82356153c4816151f7565b915060208301356153d481615162565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561541d5761541d6153df565b604052919050565b60006001600160401b0382111561543e5761543e6153df565b50601f01601f191660200190565b6000806040838503121561545f57600080fd5b823561546a816151f7565b915060208301356001600160401b0381111561548557600080fd5b8301601f8101851361549657600080fd5b80356154a96154a482615425565b6153f5565b8181528660208385010111156154be57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600081518084526020840193506020830160005b828110156155195781516001600160a01b03168652602095860195909101906001016154f2565b5093949350505050565b600081518084526020840193506020830160005b82811015615519578151865260209586019590910190600101615537565b60408152600061556860408301856154de565b828103602084015261557a8185615523565b95945050505050565b60006020828403121561559557600080fd5b8135612ab581615162565b6060815260006155b360608301866154de565b82810360208401526155c58186615523565b83810360408501528451808252602080870193509091019060005b818110156155fe5783518352602093840193909201916001016155e0565b5090979650505050505050565b6000604082016040835280855180835260608501915060608160051b86010192506020870160005b8281101561566457605f1987860301845261564f8583516152a5565b94506020938401939190910190600101615633565b50505050828103602084015261557a8185615523565b8a1515815260018060a01b038a1660208201528860408201528715156060820152610140608082015260006156b36101408301896152a5565b8760a084015286151560c084015285151560e08401528281036101008401526156dc81866152a5565b915050826101208301529b9a5050505050505050505050565b891515815288151560208201526101206040820152600061571a61012083018a6152a5565b828103606084015261572c818a6152a5565b6080840198909852505060a081019490945260c084019290925260e083015261010090910152949350505050565b60018060a01b0388168152861515602082015285604082015284606082015283608082015282151560a082015260e060c0820152600061579d60e08301846152a5565b9998505050505050505050565b600080600080608085870312156157c057600080fd5b84356157cb816151f7565b935060208501356157db816151f7565b925060408501356157eb816151f7565b915060608501356157fb816151f7565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761147b5761147b61581c565b8082018082111561147b5761147b61581c565b634e487b7160e01b600052601260045260246000fd5b6000826158815761588161585c565b500490565b6020808252600990820152683737ba1030b236b4b760b91b604082015260600190565b6000602082840312156158bb57600080fd5b5051919050565b600082601f8301126158d357600080fd5b81516158e16154a482615425565b8181528460208386010111156158f657600080fd5b614789826020830160208701615281565b60008060008060008060c0878903121561592057600080fd5b865161592b81615162565b60208801519096506001600160401b0381111561594757600080fd5b61595389828a016158c2565b955050604087015161596481615162565b606088015190945061597581615162565b6080880151909350615986816151f7565b60a0880151909250615997816151f7565b809150509295509295509295565b6000602082840312156159b757600080fd5b8151612ab5816151f7565b7f50726963652073616665747920636865636b206661696c65643a2000000000008152600082516159fa81601b850160208701615281565b91909101601b0192915050565b602081526000612ab560208301846152a5565b8181036000831280158383131683831282161715615a3a57615a3a61581c565b5092915050565b8181038181111561147b5761147b61581c565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600082615afb57615afb61585c565b500690565b80516001600160701b03811681146132da57600080fd5b600080600060608486031215615b2c57600080fd5b615b3584615b00565b9250615b4360208501615b00565b9150604084015163ffffffff811681146151ec57600080fd5b600080600060608486031215615b7157600080fd5b8351615b7c81615162565b60208501519093506001600160401b03811115615b9857600080fd5b615ba4868287016158c2565b604095909501519396949550929392505050565b600060208284031215615bca57600080fd5b8151612ab581615162565b8082018281126000831280158216821582161715615bf557615bf561581c565b505092915050565b60008060008060808587031215615c1357600080fd5b8451615c1e81615162565b60208601519094506001600160401b03811115615c3a57600080fd5b615c46878288016158c2565b604087015160609097015195989097509350505050565b600080600080600080600060e0888a031215615c7857600080fd5b8751615c8381615162565b60208901519097506001600160401b03811115615c9f57600080fd5b615cab8a828b016158c2565b9650506040880151615cbc81615162565b6060890151909550615ccd81615162565b608089015160a08a015160c0909a0151989b979a509598909795969095945092505050565b604081526000615d0560408301856152a5565b90508260208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052603160045260246000fd5b60008251615d87818460208701615281565b919091019291505056fe50726963652070726f74656374696f6e20636865636b206661696c65642c20616c6c6f77696e67207472616465360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564e5bd93e5898de697b6e997b4e4b88de58fafe58d96e587bae8afb7e59ca838efbc9a30302d3234efbc9a3030e4b98be997b4e6938de4bd9ca26469706673582212207fba6a8742606e507311caf1b25b0e9e46042527b41cb1ce47507de14d5d4c8b64736f6c634300081a0033