21.5k txs
2.95m calls
constructor
constructor()
functions
__getReserves
viewfunction __getReserves() view returns (uint256 rOther, uint256 rThis)
_blackList
viewfunction _blackList(address) view returns (bool)
_buyDestroyFee
viewfunction _buyDestroyFee() view returns (uint256)
_buyFundFee
viewfunction _buyFundFee() view returns (uint256)
_buyLPDividendFee
viewfunction _buyLPDividendFee() view returns (uint256)
_feeDistributor
viewfunction _feeDistributor() view returns (address)
_feeWhiteList
viewfunction _feeWhiteList(address) view returns (bool)
_getReserves
viewfunction _getReserves() view returns (uint256 rOther, uint256 rThis, uint256 balanceOther)
_lockAddress
viewfunction _lockAddress() view returns (address)
_mainPair
viewfunction _mainPair() view returns (address)
_minTotal
viewfunction _minTotal() view returns (uint256)
_removeLPFee
viewfunction _removeLPFee() view returns (uint256)
_removePreLPFee
viewfunction _removePreLPFee() view returns (uint256)
_rewardGas
viewfunction _rewardGas() view returns (uint256)
_sellDestroyFee
viewfunction _sellDestroyFee() view returns (uint256)
_sellFundFee
viewfunction _sellFundFee() view returns (uint256)
_sellLPDividendFee
viewfunction _sellLPDividendFee() view returns (uint256)
_sellPoolDestroyRate
viewfunction _sellPoolDestroyRate() view returns (uint256)
_sellPoolRate
viewfunction _sellPoolRate() view returns (uint256)
_strictCheck
viewfunction _strictCheck() view returns (bool)
_swapPairList
viewfunction _swapPairList(address) view returns (bool)
_swapRouters
viewfunction _swapRouters(address) view returns (bool)
_transferFee
viewfunction _transferFee() view returns (uint256)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
canBuy
viewfunction canBuy() view returns (bool)
currentLPIndex
viewfunction currentLPIndex() view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
excludeLpProvider
viewfunction excludeLpProvider(address) view returns (bool)
fundAddress
viewfunction fundAddress() view returns (address)
getLPHoldCondition
viewfunction getLPHoldCondition() view returns (uint256 lpCondition)
getLPProviderLength
viewfunction getLPProviderLength() view returns (uint256)
getUserInfo
viewfunction getUserInfo(address account) view returns (uint256 lpAmount, uint256 lpBalance, bool excludeLP, uint256 preLPAmount)
lpHoldCondition
viewfunction lpHoldCondition() view returns (uint256)
lpProviderIndex
viewfunction lpProviderIndex(address) view returns (uint256)
lpProviders
viewfunction lpProviders(uint256) view returns (address)
lpRewardCondition
viewfunction lpRewardCondition() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
startAddLPBlock
viewfunction startAddLPBlock() view returns (uint256)
startTradeBlock
viewfunction startTradeBlock() view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
validTotal
viewfunction validTotal() view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
batchSetBlackList
nonpayablefunction batchSetBlackList(address[] addr, bool enable)
batchSetFeeWhiteList
nonpayablefunction batchSetFeeWhiteList(address[] addr, bool enable)
initLPAmounts
nonpayablefunction initLPAmounts(address[] accounts, uint256 lpAmount)
initMkAddr
nonpayablefunction initMkAddr(address adr)
openBuy
nonpayablefunction openBuy()
rebalance
nonpayablefunction rebalance(uint256 amount, address addr)
renounceOwnership
nonpayablefunction renounceOwnership()
retoken
nonpayablefunction retoken(address token, uint256 amount, address addr)
setBuyFee
nonpayablefunction setBuyFee(uint256 fundFee, uint256 lpDividendFee, uint256 destroyFee)
setExcludeLPProvider
nonpayablefunction setExcludeLPProvider(address addr, bool enable)
setFundAddress
nonpayablefunction setFundAddress(address addr)
setLockAddress
nonpayablefunction setLockAddress(address addr)
setLPHoldCondition
nonpayablefunction setLPHoldCondition(uint256 amount)
setLPRewardCondition
nonpayablefunction setLPRewardCondition(uint256 amount)
setMinTotal
nonpayablefunction setMinTotal(uint256 total)
setRemoveLPFee
nonpayablefunction setRemoveLPFee(uint256 fee)
setRemovePreLPFee
nonpayablefunction setRemovePreLPFee(uint256 fee)
setRewardGas
nonpayablefunction setRewardGas(uint256 rewardGas)
setSellFee
nonpayablefunction setSellFee(uint256 fundFee, uint256 lpDividendFee, uint256 destroyFee)
setSellPoolDestroyRate
nonpayablefunction setSellPoolDestroyRate(uint256 rate)
setSellPoolRate
nonpayablefunction setSellPoolRate(uint256 rate)
setSwapPairList
nonpayablefunction setSwapPairList(address addr, bool enable)
setSwapRouter
nonpayablefunction setSwapRouter(address addr, bool enable)
setTransferFee
nonpayablefunction setTransferFee(uint256 fee)
startTrade
nonpayablefunction startTrade()
transfer
nonpayablefunction transfer(address recipient, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address sender, address recipient, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateLPAmount
nonpayablefunction updateLPAmount(address account, uint256 lpAmount)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
No errors.
creation bytecode
0x6101006040525f600c819055600d819055600e819055600f819055601081905560118190556017805460ff1916600117905560188190556127106019819055601a91909155620c3500601b55602355610bb860245534801561005f575f80fd5b506040805180820182526007808252664d454d4542544360c81b6020808401829052845180860186529283528201525f80546001600160a01b03191633908117825593517310ed43c718714eb63d5aa57b78b54704e256024e947355d398326f99059ff775485246999027b31979559493926012926301406f409273d1a325ea795d5fb9fff1dcc2c17766ec6aa685659283928291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060046101278782610823565b5060056101348682610823565b506006805460ff191660ff86161790556001600160a01b03871660a08190528890301161018b5760405162461bcd60e51b81526020600482015260016024820152607360f81b604482015260640160405180910390fd5b6001600160a01b038181166080819052305f90815260026020908152604080832084845282528083205f1990819055601690925291829020805460ff1916600117905560a051915163095ea7b360e01b8152600481019390935260248301529091169063095ea7b3906044016020604051808303815f875af1158015610213573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023791906108dd565b5060a05160405163095ea7b360e01b81523260048201525f1960248201526001600160a01b039091169063095ea7b3906044016020604051808303815f875af1158015610286573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102aa91906108dd565b50305f90815260026020908152604080832032845282528083205f199055805163c45a015560e01b815290516001600160a01b0385169263c45a015592600480820193918290030181865afa158015610305573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103299190610903565b60a0516040516364e329cb60e11b81523060048201526001600160a01b0391821660248201529192505f919083169063c9c65396906044016020604051808303815f875af115801561037d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a19190610903565b6001600160a01b0381165f818152600a602081905260408220805460ff1916600117905560c0929092529192506103d9908990610a22565b90505f6103e68289610a30565b60098190556001600160a01b0388165f818152600160205260408082208490555192935090917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061043b9085815260200190565b60405180910390a3600380546001600160a01b0319166001600160a01b038881169182179092555f908152600760209081526040808320805460ff1990811660019081179092558c861685528285208054821683179055308552828520805482168317905533855282852080548216831790557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df805482168317905561dead85527fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d8054909116909117905560a051815163313ce56760e01b815291519394169263313ce567926004808401939192918290030181865afa158015610542573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105669190610a47565b61057190600a610a22565b905061057e816064610a30565b60205560a0516040516105909061077e565b6001600160a01b039091168152602001604051809103905ff0801580156105b9573d5f803e3d5ffd5b506001600160a01b031660e0526105d2600a5f19610a67565b6001600160a01b0388165f908152601560205260409020556105f3876106b1565b60e0516001600160a01b03165f908152600760205260409020805460ff19166001908117909155610625908290610a30565b60215561063583620f4240610a30565b6025555050601e60205250507f65ce8396b736f5da9d881cc6fbcb11ef9721292dc41ec8c40879fd9edea5744d8054600160ff19918216811790925561dead5f527f8a622fd893f993f50f1795ae2bf707bdf4143f678ec4998626679a2f447616df8054909116909117905550610a9a98505050505050505050565b6001600160a01b0381165f908152601d6020526040812054900361077b57601c54158061070d5750806001600160a01b0316601c5f815481106106f6576106f6610a86565b5f918252602090912001546001600160a01b031614155b1561077b57803b801561071e575050565b50601c80546001600160a01b0383165f818152601d60205260408120839055600183018455929092527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a2110180546001600160a01b03191690911790555b50565b610139806148c783390190565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806107b357607f821691505b6020821081036107d157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561081e57805f5260205f20601f840160051c810160208510156107fc5750805b601f840160051c820191505b8181101561081b575f8155600101610808565b50505b505050565b81516001600160401b0381111561083c5761083c61078b565b6108508161084a845461079f565b846107d7565b6020601f821160018114610882575f831561086b5750848201515b5f19600385901b1c1916600184901b17845561081b565b5f84815260208120601f198516915b828110156108b15787850151825560209485019460019092019101610891565b50848210156108ce57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156108ed575f80fd5b815180151581146108fc575f80fd5b9392505050565b5f60208284031215610913575f80fd5b81516001600160a01b03811681146108fc575f80fd5b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156109785780850481111561095c5761095c610929565b600184161561096a57908102905b60019390931c928002610941565b935093915050565b5f8261098e57506001610a1c565b8161099a57505f610a1c565b81600181146109b057600281146109ba576109d6565b6001915050610a1c565b60ff8411156109cb576109cb610929565b50506001821b610a1c565b5060208310610133831016604e8410600b84101617156109f9575081810a610a1c565b610a055f19848461093d565b805f1904821115610a1857610a18610929565b0290505b92915050565b5f6108fc60ff841683610980565b8082028115828204841417610a1c57610a1c610929565b5f60208284031215610a57575f80fd5b815160ff811681146108fc575f80fd5b5f82610a8157634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b60805160a05160c05160e051613d05610bc25f395f81816108e101528181610ea90152818161262001528181612759015281816127bf015281816131470152818161332a0152818161340d01528181613479015261352001525f818161072001528181610eff01528181610fde0152818161122c015281816114e60152818161197901528181611ddd01528181611eb201528181611fdc01528181612281015281816122c60152818161266d015281816128c401528181612bd00152612d4e01525f818161157c015281816119a70152818161282701528181612b54015281816132d301528181613352015281816134ff015261357901525f8181611d7a01528181612c5301528181612e1d01528181612eaa01528181612f1101526133da0152613d055ff3fe608060405260043610610424575f3560e01c806372162cb611610220578063a925a6bd11610129578063dd55c108116100b3578063e84fb12d11610078578063e84fb12d14610cad578063ef34db6914610cc2578063f2fde38b14610ced578063f53dabb614610d0c578063ff65226c14610d2b575f80fd5b8063dd55c10814610bf7578063dd62ed3e14610c0c578063de5c02c214610c50578063e24b04a814610c6f578063e82bef2914610c8e575f80fd5b8063cd8d263d116100f9578063cd8d263d14610b61578063ce0192f914610b80578063ce4d9f1514610b95578063d4a6793014610bc4578063d895237414610bd8575f80fd5b8063a925a6bd14610aef578063b2887bec14610b04578063b6a0735914610b23578063cbb4683214610b42575f80fd5b80638f02bb5b116101aa5780639bb853441161017a5780639bb8534414610a5e578063a1f0e73d14610a73578063a5696d8914610a92578063a842486114610ab1578063a9059cbb14610ad0575f80fd5b80638f02bb5b146109ed578063917ceeb514610a0c57806395d89b4114610a2b57806397dad33914610a3f575f80fd5b806379353c08116101f057806379353c08146109555780637a37a0ed1461096a5780637ae290f81461099357806385dc3004146109b25780638da5cb5b146109d1575f80fd5b806372162cb6146108d05780637355b15b1461090357806374d002f114610922578063756b419014610936575f80fd5b8063313ce5671161032d578063595dec3c116102b75780636ae5e5691161027c5780636ae5e569146108405780636c5808011461085f5780636e986dcc1461087357806370a0823114610888578063715018a6146108bc575f80fd5b8063595dec3c1461078e5780635ef01957146107bc57806361b746f2146107d15780636386c1c7146107e6578063652421e41461082b575f80fd5b80633c11100d116102fd5780633c11100d146106cc5780633df9a8d2146106fa5780634188bf5a1461070f57806353ad66161461075a578063553193ca14610779575f80fd5b8063313ce5671461066c57806337e5ccf71461068d5780633ae0ca3d146106a25780633bfe62ca146106b7575f80fd5b806314e3afa2116103ae5780632171dcc91161037e5780632171dcc9146105cc57806323b872dd146105eb57806325519cf21461060a578063297ac6de146106295780632b01fc941461063e575f80fd5b806314e3afa214610570578063165728b51461058557806318160ddd146105995780631d865c30146105ad575f80fd5b80630830c4ad116103f45780630830c4ad146104da578063095ea7b3146104fb5780630a6079301461051a5780630ca7b7971461053d578063141ae56614610551575f80fd5b806301873d8f1461042f57806301986fad1461047257806304c23ffe146104a057806306fdde03146104b9575f80fd5b3661042b57005b5f80fd5b34801561043a575f80fd5b5061045d6104493660046137b4565b60166020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561047d575f80fd5b5061045d61048c3660046137b4565b60076020525f908152604090205460ff1681565b3480156104ab575f80fd5b5060175461045d9060ff1681565b3480156104c4575f80fd5b506104cd610d44565b60405161046991906137cf565b3480156104e5575f80fd5b506104f96104f4366004613804565b610dd4565b005b348015610506575f80fd5b5061045d610515366004613843565b610e62565b348015610525575f80fd5b5061052f60105481565b604051908152602001610469565b348015610548575f80fd5b5061052f610e78565b34801561055c575f80fd5b506104f961056b36600461387a565b610f66565b34801561057b575f80fd5b5061052f60195481565b348015610590575f80fd5b5061052f610fc2565b3480156105a4575f80fd5b5060095461052f565b3480156105b8575f80fd5b506104f96105c73660046138b1565b61107e565b3480156105d7575f80fd5b506104f96105e636600461387a565b6110b8565b3480156105f6575f80fd5b5061045d6106053660046138da565b61110b565b348015610615575f80fd5b506104f96106243660046138b1565b61119d565b348015610634575f80fd5b5061052f60115481565b348015610649575f80fd5b5061045d6106583660046137b4565b601e6020525f908152604090205460ff1681565b348015610677575f80fd5b5060065460405160ff9091168152602001610469565b348015610698575f80fd5b5061052f600e5481565b3480156106ad575f80fd5b5061052f60255481565b3480156106c2575f80fd5b5061052f600f5481565b3480156106d7575f80fd5b5061045d6106e63660046137b4565b600a6020525f908152604090205460ff1681565b348015610705575f80fd5b5061052f601a5481565b34801561071a575f80fd5b506107427f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610469565b348015610765575f80fd5b506104f9610774366004613918565b6111d7565b348015610784575f80fd5b5061052f60125481565b348015610799575f80fd5b5061045d6107a83660046137b4565b60086020525f908152604090205460ff1681565b3480156107c7575f80fd5b5061052f60185481565b3480156107dc575f80fd5b5061052f601f5481565b3480156107f1575f80fd5b506108056108003660046137b4565b611205565b604080519485526020850193909352901515918301919091526060820152608001610469565b348015610836575f80fd5b5061052f60245481565b34801561084b575f80fd5b506104f961085a366004613918565b6112d2565b34801561086a575f80fd5b506104f9611300565b34801561087e575f80fd5b5061052f60235481565b348015610893575f80fd5b5061052f6108a23660046137b4565b6001600160a01b03165f9081526001602052604090205490565b3480156108c7575f80fd5b506104f9611369565b3480156108db575f80fd5b506107427f000000000000000000000000000000000000000000000000000000000000000081565b34801561090e575f80fd5b506104f961091d3660046139e6565b6113da565b34801561092d575f80fd5b50601c5461052f565b348015610941575f80fd5b506104f9610950366004613a28565b61145e565b348015610960575f80fd5b5061052f60215481565b348015610975575f80fd5b5061097e6114e1565b60408051928352602083019190915201610469565b34801561099e575f80fd5b50602254610742906001600160a01b031681565b3480156109bd575f80fd5b506104f96109cc3660046137b4565b6115c6565b3480156109dc575f80fd5b505f546001600160a01b0316610742565b3480156109f8575f80fd5b506104f9610a07366004613918565b61164e565b348015610a17575f80fd5b506104f9610a26366004613918565b61167c565b348015610a36575f80fd5b506104cd6116f6565b348015610a4a575f80fd5b506104f9610a59366004613918565b611705565b348015610a69575f80fd5b5061052f60135481565b348015610a7e575f80fd5b506104f9610a8d3660046137b4565b611733565b348015610a9d575f80fd5b506104f9610aac366004613843565b611795565b348015610abc575f80fd5b506104f9610acb36600461387a565b6117cf565b348015610adb575f80fd5b5061045d610aea366004613843565b611822565b348015610afa575f80fd5b5061052f600d5481565b348015610b0f575f80fd5b506104f9610b1e366004613a28565b61182e565b348015610b2e575f80fd5b506104f9610b3d366004613918565b6118b1565b348015610b4d575f80fd5b506104f9610b5c366004613a6c565b6118df565b348015610b6c575f80fd5b506104f9610b7b366004613918565b611929565b348015610b8b575f80fd5b5061052f600c5481565b348015610ba0575f80fd5b50610ba9611957565b60408051938452602084019290925290820152606001610469565b348015610bcf575f80fd5b506104f9611a19565b348015610be3575f80fd5b506104f9610bf23660046137b4565b611a51565b348015610c02575f80fd5b5061052f60205481565b348015610c17575f80fd5b5061052f610c26366004613a8f565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610c5b575f80fd5b50610742610c6a366004613918565b611aa1565b348015610c7a575f80fd5b506104f9610c89366004613918565b611ac9565b348015610c99575f80fd5b50600354610742906001600160a01b031681565b348015610cb8575f80fd5b5061052f601b5481565b348015610ccd575f80fd5b5061052f610cdc3660046137b4565b601d6020525f908152604090205481565b348015610cf8575f80fd5b506104f9610d073660046137b4565b611af7565b348015610d17575f80fd5b506104f9610d26366004613918565b611bb4565b348015610d36575f80fd5b5060145461045d9060ff1681565b606060048054610d5390613abb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7f90613abb565b8015610dca5780601f10610da157610100808354040283529160200191610dca565b820191905f5260205f20905b815481529060010190602001808311610dad57829003601f168201915b5050505050905090565b335f9081526007602052604090205460ff1615610e5d5760405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303815f875af1158015610e37573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5b9190613aed565b505b505050565b5f610e6e338484611be2565b5060015b92915050565b60016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081165f9081526040808220547fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4954308452828420547f00000000000000000000000000000000000000000000000000000000000000009095168452918320546009549395949193610f399190613b1c565b610f439190613b1c565b610f4d9190613b1c565b610f579190613b1c565b610f619190613b1c565b905090565b5f546001600160a01b03163314610f985760405162461bcd60e51b8152600401610f8f90613b2f565b60405180910390fd5b6001600160a01b03919091165f908152601e60205260409020805460ff1916911515919091179055565b5f80610fcc6114e1565b509050610fd98180613b4b565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611038573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105c9190613b5e565b9050818160215461106d9190613b75565b6110779190613b8c565b9250505090565b5f546001600160a01b031633146110a75760405162461bcd60e51b8152600401610f8f90613b2f565b601091909155600f91909155601155565b5f546001600160a01b031633146110e15760405162461bcd60e51b8152600401610f8f90613b2f565b6001600160a01b03919091165f908152601660205260409020805460ff1916911515919091179055565b5f611117848484611c43565b6001600160a01b0384165f9081526002602090815260408083203384529091529020545f1914611193576001600160a01b0384165f90815260026020908152604080832033845290915290205461116f908390613b1c565b6001600160a01b0385165f9081526002602090815260408083203384529091529020555b5060019392505050565b5f546001600160a01b031633146111c65760405162461bcd60e51b8152600401610f8f90613b2f565b600d91909155600c91909155600e55565b5f546001600160a01b031633146112005760405162461bcd60e51b8152600401610f8f90613b2f565b602555565b6040516370a0823160e01b81526001600160a01b0382811660048301525f918291829182917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611271573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112959190613b5e565b6001600160a01b039095165f908152601e60209081526040808320546015909252909120805460019190910154909760ff90921695509350915050565b5f546001600160a01b031633146112fb5760405162461bcd60e51b8152600401610f8f90613b2f565b602355565b5f546001600160a01b031633146113295760405162461bcd60e51b8152600401610f8f90613b2f565b601254156113635760405162461bcd60e51b815260206004820152600760248201526674726164696e6760c81b6044820152606401610f8f565b43601255565b5f546001600160a01b031633146113925760405162461bcd60e51b8152600401610f8f90613b2f565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b335f9081526007602052604090205460ff161561145a5781515f80805b838110156114555785818151811061141157611411613bab565b6020908102919091018101516001600160a01b0381165f9081526015909252604090912086815560018101879055909350915061144d8361212d565b6001016113f7565b505050505b5050565b5f546001600160a01b031633146114875760405162461bcd60e51b8152600401610f8f90613b2f565b5f5b8251811015610e5d578160085f8584815181106114a8576114a8613bab565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101611489565b5f805f7f000000000000000000000000000000000000000000000000000000000000000090505f80826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611545573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115699190613bd5565b506001600160701b0391821693501690507f0000000000000000000000000000000000000000000000000000000000000000306001600160a01b03821610156115b7578295508194506115be565b8195508294505b505050509091565b5f546001600160a01b031633146115ef5760405162461bcd60e51b8152600401610f8f90613b2f565b600380546001600160a01b0319166001600160a01b0383169081179091555f908152600760205260409020805460ff19166001179055611631600a5f19613b8c565b6003546001600160a01b03165f9081526015602052604090205550565b5f546001600160a01b031633146116775760405162461bcd60e51b8152600401610f8f90613b2f565b601a55565b5f546001600160a01b031633146116a55760405162461bcd60e51b8152600401610f8f90613b2f565b62030d4081101580156116bb5750621e84808111155b6116f15760405162461bcd60e51b815260206004820152600760248201526632302d3230307760c81b6044820152606401610f8f565b601b55565b606060058054610d5390613abb565b5f546001600160a01b0316331461172e5760405162461bcd60e51b8152600401610f8f90613b2f565b602155565b5f546001600160a01b0316331461175c5760405162461bcd60e51b8152600401610f8f90613b2f565b602280546001600160a01b039092166001600160a01b0319909216821790555f908152601e60205260409020805460ff19166001179055565b335f9081526007602052604090205460ff161561145a576001600160a01b0382165f908152601560205260409020818155610e5d8361212d565b5f546001600160a01b031633146117f85760405162461bcd60e51b8152600401610f8f90613b2f565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f610e6e338484611c43565b5f546001600160a01b031633146118575760405162461bcd60e51b8152600401610f8f90613b2f565b5f5b8251811015610e5d578160075f85848151811061187857611878613bab565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101611859565b5f546001600160a01b031633146118da5760405162461bcd60e51b8152600401610f8f90613b2f565b601955565b335f9081526007602052604090205460ff161561145a576040516001600160a01b0382169083156108fc029084905f818181858888f19350505050158015610e5d573d5f803e3d5ffd5b5f546001600160a01b031633146119525760405162461bcd60e51b8152600401610f8f90613b2f565b601855565b5f805f6119626114e1565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529295509093507f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156119ee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a129190613b5e565b9050909192565b5f546001600160a01b03163314611a425760405162461bcd60e51b8152600401610f8f90613b2f565b6014805460ff19166001179055565b5f546001600160a01b03163314611a7a5760405162461bcd60e51b8152600401610f8f90613b2f565b611a86600a5f19613b8c565b6001600160a01b039091165f90815260156020526040902055565b601c8181548110611ab0575f80fd5b5f918252602090912001546001600160a01b0316905081565b5f546001600160a01b03163314611af25760405162461bcd60e51b8152600401610f8f90613b2f565b602455565b5f546001600160a01b03163314611b205760405162461bcd60e51b8152600401610f8f90613b2f565b6001600160a01b038116611b5b5760405162461bcd60e51b815260206004820152600260248201526106e360f41b6044820152606401610f8f565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314611bdd5760405162461bcd60e51b8152600401610f8f90613b2f565b602055565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383165f9081526008602052604090205460ff161580611c8157506001600160a01b0383165f9081526007602052604090205460ff165b80611ca357506001600160a01b0383165f908152600a602052604090205460ff165b611cdb5760405162461bcd60e51b8152602060048201526009602482015268189b1858dad31a5cdd60ba1b6044820152606401610f8f565b6001600160a01b0383165f9081526001602052604090205481811015611d295760405162461bcd60e51b8152602060048201526003602482015262424e4560e81b6044820152606401610f8f565b6001600160a01b0384165f9081526007602052604081205460ff16158015611d6957506001600160a01b0384165f9081526007602052604090205460ff16155b15611dd557846001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611dd5575f612710611db78461270f613b75565b611dc19190613b8c565b905080841115611dcf578093505b60019150505b5f3290505f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b0316148015611e2a5750335f9081526016602052604090205460ff165b8015611e475750876001600160a01b0316836001600160a01b0316145b15611eaf57611e55866121fa565b90508015611eaf576001600160a01b0383165f908152601560205260408120805490935082918491611e88908490613b4b565b90915550506012545f03611eaf5780826001015f828254611ea99190613b4b565b90915550505b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031603611f6d57611ef287612261565b90508015611f6d576001600160a01b0384165f90815260156020526040902054811115611f1d575f80fd5b6001600160a01b0384165f9081526015602052604081208054839290611f44908490613b1c565b90915550506001600160a01b0384165f9081526007602052604090205460ff1615611f6d575f94505b6001600160a01b0389165f908152600a602052604090205460ff1680611faa57506001600160a01b0388165f908152600a602052604090205460ff165b156120c7576013545f0361201a576001600160a01b0389165f9081526007602052604090205460ff16801561201057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b0316145b1561201a57436013555b6001600160a01b0389165f9081526007602052604090205460ff1615801561205a57506001600160a01b0388165f9081526007602052604090205460ff16155b156120c7576012545f03612085576013545f10801561207857505f82115b612080575f80fd5b6120c7565b81158015612091575080155b80156120aa575060036012546120a79190613b4b565b43105b156120c7576120bc89898960636123bb565b505050505050505050565b6120d589898988868661244a565b6001600160a01b03891630146120bc5781156120f9576120f48961212d565b6120bc565b84156120bc57601b546121216064612112836032613b75565b61211c9190613b8c565b61280d565b50505050505050505050565b6001600160a01b0381165f908152601d602052604081205490036121f757601c5415806121895750806001600160a01b0316601c5f8154811061217257612172613bab565b5f918252602090912001546001600160a01b031614155b156121f757803b801561219a575050565b50601c80546001600160a01b0383165f818152601d60205260408120839055600183018455929092527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a2110180546001600160a01b03191690911790555b50565b5f805f80612206611957565b9250925092505f808411801561221b57505f83115b15612238578261222b8588613b75565b6122359190613b8c565b90505b6122428185613b4b565b82106122585761225482878686612bcb565b5094505b50505050919050565b5f805f8061226d611957565b9250925092508281101561235f57846122ba7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f9081526001602052604090205490565b6122c49190613b1c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612320573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123449190613b5e565b61234e9087613b75565b6123589190613b8c565b93506123b3565b60175460ff16156123b3575f808411801561237957505f83115b15612258576123888684613b1c565b6123928588613b75565b61239c9190613b8c565b90506123a88482613b4b565b821015612258575f80fd5b505050919050565b6001600160a01b0384165f908152600160205260409020546123de908390613b1c565b6001600160a01b0385165f9081526001602052604081209190915560646124058385613b75565b61240f9190613b8c565b9050801561242f5760035461242f9086906001600160a01b031683613037565b612443858561243e8487613b1c565b613037565b5050505050565b6001600160a01b0386165f9081526001602052604090205461246d908590613b1c565b6001600160a01b0387165f9081526001602052604081209190915583156127f5575f805f8086116125e95784156124ba576124a98a89876130ad565b6124b39085613b4b565b93506125e9565b6001600160a01b0389165f908152600a602052604090205460ff16156125295760019250612710601154896124ef9190613b75565b6124f99190613b8c565b9050612710600f5460105461250e9190613b4b565b612518908a613b75565b6125229190613b8c565b91506125e9565b6001600160a01b038a165f908152600a602052604090205460ff16156125cb5760145460ff1661259b5760405162461bcd60e51b815260206004820152601960248201527f427579696e67206973206e6f7420616c6c6f77656420796574000000000000006044820152606401610f8f565b612710600e54896125ac9190613b75565b6125b69190613b8c565b9050612710600c54600d5461250e9190613b4b565b612710601a54896125dc9190613b75565b6125e69190613b8c565b91505b8015612608576125f98185613b4b565b93506126088a61dead83613037565b8115612645576126188285613b4b565b93506126458a7f000000000000000000000000000000000000000000000000000000000000000084613037565b8280156126555750600b5460ff16155b156127f157602554612665610e78565b1115612757577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f90815260016020526040902054602354612710906126b49083613b75565b6126be9190613b8c565b8911156126c9575f80fd5b5f6127106024548b6126db9190613b75565b6126e59190613b8c565b90508082116126f2575f80fd5b8015612754576127058b61dead836131e5565b8a6001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561273d575f80fd5b505af115801561274f573d5f803e3d5ffd5b505050505b50505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f9081526001602052604081205490606461279d8560e6613b75565b6127a79190613b8c565b9050818111156127b45750805b80156127e5576127e57f000000000000000000000000000000000000000000000000000000000000000030836131e5565b6127ee8161322b565b50505b5050505b612804878761243e8489613b1c565b50505050505050565b6020546040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612874573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128989190613b5e565b10156128a2575050565b6022546040516370a0823160e01b81526001600160a01b0391821660048201527f0000000000000000000000000000000000000000000000000000000000000000915f91908316906370a0823190602401602060405180830381865afa15801561290e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129329190613b5e565b6040516370a0823160e01b815261dead60048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015612976573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061299a9190613b5e565b836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129fa9190613b5e565b612a049190613b1c565b612a0e9190613b1c565b9050805f03612a1d5750505050565b601c545f90819081908180805a90505f612a35610fc2565b90505b8b84108015612a4657508483105b15612bbd5784601f5410612a59575f601f555b601c601f5481548110612a6e57612a6e613bab565b5f9182526020808320909101546001600160a01b0316808352601e90915260409091205490985060ff16612b7c576040516370a0823160e01b81526001600160a01b0389811660048301528b16906370a0823190602401602060405180830381865afa158015612ae0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b049190613b5e565b6001600160a01b0389165f9081526015602052604090205490975087811015612b2b578097505b818810612b7a5789612b3d898e613b75565b612b479190613b8c565b96508615612b7a57612b7a7f00000000000000000000000000000000000000000000000000000000000000008a896135bc565b505b5a612b879083613b1c565b612b919085613b4b565b93505a601f80549193505f612ba583613c16565b91905055508280612bb590613c16565b935050612a38565b505050505050505050505050565b5f805f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c2a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c4e9190613b5e565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cd19190613c2e565b6001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d309190613c2e565b90505f806001600160a01b0316826001600160a01b0316141590505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637464fc3d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612da8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dcc9190613b5e565b90508115612fbf578015612fbf575f612ded612de8898b613b75565b613669565b90505f612df983613669565b905080821115612fbc575f807310ed43c718714eb63d5aa57b78b54704e256024d197f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031601612e9257612e548385613b1c565b612e5e9089613b75565b612e69906008613b75565b9150612e76836008613b75565b612e81856011613b75565b612e8b9190613b4b565b9050612f9a565b73d99d1c33f9fc3444f8101754abc46c52416550d0197f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031601612ef957612ee18385613b1c565b612eeb9089613b75565b915082612e81856003613b75565b73e9d6f80028671279a28790bb4007b10b0595def0197f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031601612f6b57612f488385613b1c565b612f529089613b75565b612f5d906003613b75565b915082612e81856005613b75565b612f758385613b1c565b612f7f9089613b75565b915082612f8d856005613b75565b612f979190613b4b565b90505b612fa48183613b8c565b98508815612fb957612fb68989613b4b565b97505b50505b50505b5f612fca898c613b1c565b9050845f03612ff4576103e8612fe3612de88c84613b75565b612fed9190613b1c565b9650613029565b613026896130028784613b75565b61300c9190613b8c565b89613017888e613b75565b6130219190613b8c565b6136d7565b96505b505050505094509492505050565b6001600160a01b0382165f9081526001602052604090205461305a908290613b4b565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c369085815260200190565b325f908152601560205260408120600181015481548391906130d0908690613b4b565b6130da9190613b1c565b90508380828111156130e95750815b5f811561316c576130fa8284613b1c565b925061271060185488848b61310f9190613b75565b6131199190613b8c565b6131239190613b75565b61312d9190613b8c565b90506131398187613b4b565b9550801561316c5761316c897f000000000000000000000000000000000000000000000000000000000000000083613037565b5f61271060195489868c6131809190613b75565b61318a9190613b8c565b6131949190613b75565b61319e9190613b8c565b905080156131bf576131b08188613b4b565b96506131bf8a61dead83613037565b83866001015f8282546131d29190613b1c565b90915550969a9950505050505050505050565b6001600160a01b0383165f90815260016020526040902054613208908290613b1c565b6001600160a01b0384165f90815260016020526040902055610e5d838383613037565b600b805460ff1916600117905580156135af575f600f54600c5461324f9190613b4b565b90505f601054600d54836132639190613b4b565b61326d9190613b4b565b90506132798180613b4b565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106132b1576132b1613bab565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061330557613305613bab565b6001600160a01b0392831660209182029290920101526040516370a0823160e01b81527f0000000000000000000000000000000000000000000000000000000000000000821660048201527f0000000000000000000000000000000000000000000000000000000000000000915f91908316906370a0823190602401602060405180830381865afa15801561339c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133c09190613b5e565b604051635c11d79560e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635c11d795906134379089905f9088907f0000000000000000000000000000000000000000000000000000000000000000904290600401613c49565b5f604051808303815f87803b15801561344e575f80fd5b505af1158015613460573d5f803e3d5ffd5b50506040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152849350851691506370a0823190602401602060405180830381865afa1580156134ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ee9190613b5e565b6134f89190613b1c565b90506135467f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030846136ee565b5f8482613554886002613b75565b61355e9190613b75565b6135689190613b8c565b905080156135a8576003546135a8907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b0316836135bc565b5050505050505b50600b805460ff19169055565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f928392908716916136179190613cb9565b5f604051808303815f865af19150503d805f8114613650576040519150601f19603f3d011682016040523d82523d5f602084013e613655565b606091505b509150915081801561145557505050505050565b5f60038211156136c85750805f613681600283613b8c565b61368c906001613b4b565b90505b818110156136c2579050806002816136a78186613b8c565b6136b19190613b4b565b6136bb9190613b8c565b905061368f565b50919050565b81156136d2575060015b919050565b5f8183106136e557816136e7565b825b9392505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291515f9287169161374d91613cb9565b5f604051808303815f865af19150503d805f8114613786576040519150601f19603f3d011682016040523d82523d5f602084013e61378b565b606091505b5050505050505050565b6001600160a01b03811681146121f7575f80fd5b80356136d281613795565b5f602082840312156137c4575f80fd5b81356136e781613795565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f805f60608486031215613816575f80fd5b833561382181613795565b925060208401359150604084013561383881613795565b809150509250925092565b5f8060408385031215613854575f80fd5b823561385f81613795565b946020939093013593505050565b80151581146121f7575f80fd5b5f806040838503121561388b575f80fd5b823561389681613795565b915060208301356138a68161386d565b809150509250929050565b5f805f606084860312156138c3575f80fd5b505081359360208301359350604090920135919050565b5f805f606084860312156138ec575f80fd5b83356138f781613795565b9250602084013561390781613795565b929592945050506040919091013590565b5f60208284031215613928575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112613952575f80fd5b813567ffffffffffffffff81111561396c5761396c61392f565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156139995761399961392f565b6040529182526020818501810192908101868411156139b6575f80fd5b6020860192505b838310156139dc576139ce836137a9565b8152602092830192016139bd565b5095945050505050565b5f80604083850312156139f7575f80fd5b823567ffffffffffffffff811115613a0d575f80fd5b613a1985828601613943565b95602094909401359450505050565b5f8060408385031215613a39575f80fd5b823567ffffffffffffffff811115613a4f575f80fd5b613a5b85828601613943565b92505060208301356138a68161386d565b5f8060408385031215613a7d575f80fd5b8235915060208301356138a681613795565b5f8060408385031215613aa0575f80fd5b8235613aab81613795565b915060208301356138a681613795565b600181811c90821680613acf57607f821691505b6020821081036136c257634e487b7160e01b5f52602260045260245ffd5b5f60208284031215613afd575f80fd5b81516136e78161386d565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610e7257610e72613b08565b602080825260029082015261216f60f01b604082015260600190565b80820180821115610e7257610e72613b08565b5f60208284031215613b6e575f80fd5b5051919050565b8082028115828204841417610e7257610e72613b08565b5f82613ba657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b80516001600160701b03811681146136d2575f80fd5b5f805f60608486031215613be7575f80fd5b613bf084613bbf565b9250613bfe60208501613bbf565b9150604084015163ffffffff81168114613838575f80fd5b5f60018201613c2757613c27613b08565b5060010190565b5f60208284031215613c3e575f80fd5b81516136e781613795565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015613c995783516001600160a01b0316835260209384019390920191600101613c72565b50506001600160a01b039590951660608401525050608001529392505050565b5f82518060208501845e5f92019182525091905056fea2646970667358221220eb00a815a08ca4ac5a15199a30473b9b6b6f108fc50612ff2eacf9e5dd17be5e64736f6c634300081a0033608060405234801561000f575f80fd5b5060405161013938038061013983398101604081905261002e916100a3565b60405163095ea7b360e01b81523360048201525f1960248201526001600160a01b0382169063095ea7b3906044016020604051808303815f875af1158015610078573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061009c91906100d0565b50506100ef565b5f602082840312156100b3575f80fd5b81516001600160a01b03811681146100c9575f80fd5b9392505050565b5f602082840312156100e0575f80fd5b815180151581146100c9575f80fd5b603e806100fb5f395ff3fe60806040525f80fdfea26469706673582212205c571aafa338c8113f923c1fdd7f826f14ca8a6091acdac16b71e3ffad6ebe4d64736f6c634300081a0033