Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00
Cross-Chain Transactions
Loading...
Loading
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
No Contract Security Audit SubmittedSubmit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"BetNotFound","type":"error"},{"inputs":[],"name":"BetNotOwner","type":"error"},{"inputs":[],"name":"BetNotPending","type":"error"},{"inputs":[],"name":"CancelTimeoutNotReached","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InsufficientAvailableLiquidity","type":"error"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidBankerPayoutMultiplier","type":"error"},{"inputs":[],"name":"InvalidBetType","type":"error"},{"inputs":[],"name":"InvalidCardRank","type":"error"},{"inputs":[],"name":"InvalidCollateral","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidPrice","type":"error"},{"inputs":[],"name":"InvalidSender","type":"error"},{"inputs":[],"name":"MaxProfitExceeded","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"bankerPayoutMultiplier","type":"uint256"}],"name":"BankerPayoutMultiplierChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"betId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"requestId","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"refundedAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"adminCancelled","type":"bool"}],"name":"BetCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"betId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"requestId","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"collateral","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"enum Baccarat.BetType","name":"betType","type":"uint8"}],"name":"BetPlaced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"betId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"requestId","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"enum Baccarat.GameResult","name":"result","type":"uint8"},{"indexed":false,"internalType":"bool","name":"won","type":"bool"},{"indexed":false,"internalType":"bool","name":"isPush","type":"bool"},{"indexed":false,"internalType":"uint256","name":"payout","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"playerTotal","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"bankerTotal","type":"uint8"}],"name":"BetResolved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"cancelTimeout","type":"uint256"}],"name":"CancelTimeoutChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"freeBetsHolder","type":"address"}],"name":"FreeBetsHolderChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"manager","type":"address"}],"name":"ManagerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxProfitUsd","type":"uint256"}],"name":"MaxProfitUsdChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isPaused","type":"bool"}],"name":"PauseChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"priceFeed","type":"address"}],"name":"PriceFeedChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"collateral","type":"address"},{"indexed":false,"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"PriceFeedKeyPerCollateralChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"referrals","type":"address"}],"name":"ReferralsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"betAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"collateral","type":"address"}],"name":"ReferrerPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"betAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"collateral","type":"address"}],"name":"ReferrerPayoutFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"collateral","type":"address"},{"indexed":false,"internalType":"bool","name":"supported","type":"bool"}],"name":"SupportedCollateralChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"subscriptionId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"keyHash","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"callbackGasLimit","type":"uint32"},{"indexed":false,"internalType":"uint16","name":"requestConfirmations","type":"uint16"},{"indexed":false,"internalType":"bool","name":"nativePayment","type":"bool"}],"name":"VrfConfigChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"vrfCoordinator","type":"address"}],"name":"VrfCoordinatorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"collateral","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawnCollateral","type":"event"},{"inputs":[],"name":"DEFAULT_BANKER_PAYOUT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_BANKER_PAYOUT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_BANKER_PAYOUT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_BET_USD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_CANCEL_TIMEOUT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"betId","type":"uint256"}],"name":"adminCancelBet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bankerPayoutMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"callbackGasLimit","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"betId","type":"uint256"}],"name":"cancelBet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelTimeout","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freeBetsHolder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"collateral","type":"address"}],"name":"getAvailableLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"rank","type":"uint8"}],"name":"getBaccaratCardValue","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"betId","type":"uint256"}],"name":"getBetBase","outputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"collateral","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"payout","type":"uint256"},{"internalType":"uint256","name":"requestId","type":"uint256"},{"internalType":"uint256","name":"placedAt","type":"uint256"},{"internalType":"uint256","name":"resolvedAt","type":"uint256"},{"internalType":"uint256","name":"reservedProfit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"betId","type":"uint256"}],"name":"getBetDetails","outputs":[{"internalType":"enum Baccarat.BetType","name":"betType","type":"uint8"},{"internalType":"enum Baccarat.BetStatus","name":"status","type":"uint8"},{"internalType":"enum Baccarat.GameResult","name":"result","type":"uint8"},{"internalType":"bool","name":"won","type":"bool"},{"internalType":"bool","name":"isPush","type":"bool"},{"internalType":"uint8[6]","name":"cards","type":"uint8[6]"},{"internalType":"uint8","name":"playerTotal","type":"uint8"},{"internalType":"uint8","name":"bankerTotal","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"collateral","type":"address"}],"name":"getCollateralPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"playerTotal","type":"uint8"},{"internalType":"uint8","name":"bankerTotal","type":"uint8"}],"name":"getGameResult","outputs":[{"internalType":"enum Baccarat.GameResult","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Baccarat.BetType","name":"betType","type":"uint8"}],"name":"getPotentialPayoutCollateral","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"collateral","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Baccarat.BetType","name":"betType","type":"uint8"}],"name":"getPotentialProfit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"getRecentBetIds","outputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserBetCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"getUserBetIds","outputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initNonReentrant","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"priceFeed","type":"address"},{"internalType":"address","name":"vrfCoordinator","type":"address"}],"internalType":"struct Baccarat.CoreAddresses","name":"core","type":"tuple"},{"components":[{"internalType":"address","name":"usdc","type":"address"},{"internalType":"address","name":"weth","type":"address"},{"internalType":"address","name":"over","type":"address"},{"internalType":"bytes32","name":"wethPriceFeedKey","type":"bytes32"},{"internalType":"bytes32","name":"overPriceFeedKey","type":"bytes32"}],"internalType":"struct Baccarat.CollateralConfig","name":"collateralConfig","type":"tuple"},{"internalType":"uint256","name":"_maxProfitUsd","type":"uint256"},{"internalType":"uint256","name":"_cancelTimeout","type":"uint256"},{"internalType":"uint256","name":"_bankerPayoutMultiplier","type":"uint256"},{"components":[{"internalType":"uint256","name":"subscriptionId","type":"uint256"},{"internalType":"bytes32","name":"keyHash","type":"bytes32"},{"internalType":"uint32","name":"callbackGasLimit","type":"uint32"},{"internalType":"uint16","name":"requestConfirmations","type":"uint16"},{"internalType":"bool","name":"nativePayment","type":"bool"}],"internalType":"struct Baccarat.VrfConfig","name":"vrfConfig","type":"tuple"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"isFreeBet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"keyHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPauseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"contract ISportsAMMV2Manager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxProfitUsd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativePayment","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextBetId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"over","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"collateral","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Baccarat.BetType","name":"betType","type":"uint8"},{"internalType":"address","name":"_referrer","type":"address"}],"name":"placeBet","outputs":[{"internalType":"uint256","name":"betId","type":"uint256"},{"internalType":"uint256","name":"requestId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"collateral","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Baccarat.BetType","name":"betType","type":"uint8"}],"name":"placeBetWithFreeBet","outputs":[{"internalType":"uint256","name":"betId","type":"uint256"},{"internalType":"uint256","name":"requestId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"priceFeed","outputs":[{"internalType":"contract IPriceFeed","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"priceFeedKeyPerCollateral","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"requestId","type":"uint256"},{"internalType":"uint256[]","name":"randomWords","type":"uint256[]"}],"name":"rawFulfillRandomWords","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"referrals","outputs":[{"internalType":"contract IReferrals","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"requestConfirmations","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"requestIdToBetId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"reservedProfitPerCollateral","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bankerPayoutMultiplier","type":"uint256"}],"name":"setBankerPayoutMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cancelTimeout","type":"uint256"}],"name":"setCancelTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_freeBetsHolder","type":"address"}],"name":"setFreeBetsHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxProfitUsd","type":"uint256"}],"name":"setMaxProfitUsd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPausedByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"}],"name":"setPriceFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"collateral","type":"address"},{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"setPriceFeedKeyPerCollateral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_referrals","type":"address"}],"name":"setReferrals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"collateral","type":"address"},{"internalType":"bool","name":"isSupported","type":"bool"}],"name":"setSupportedCollateral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_subscriptionId","type":"uint256"},{"internalType":"bytes32","name":"_keyHash","type":"bytes32"},{"internalType":"uint32","name":"_callbackGasLimit","type":"uint32"},{"internalType":"uint16","name":"_requestConfirmations","type":"uint16"},{"internalType":"bool","name":"_nativePayment","type":"bool"}],"name":"setVrfConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vrfCoordinator","type":"address"}],"name":"setVrfCoordinator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"subscriptionId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"supportedCollateral","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"proxyAddress","type":"address"}],"name":"transferOwnershipAtInit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdc","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vrfCoordinator","outputs":[{"internalType":"contract IVRFCoordinatorV2Plus","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_collateral","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawCollateral","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b50614a9c806100206000396000f3fe608060405234801561001057600080fd5b50600436106103715760003560e01c80637eaef50c116101d5578063bc8d6c1c11610105578063d3dc7539116100a8578063d3dc7539146108e6578063d4494825146108f9578063d9af690c1461090c578063da6070251461091f578063e7f3d86c14610932578063ea80dd2e14610945578063ebc7977214610958578063f8297ce914610960578063fa550eba1461097357600080fd5b8063bc8d6c1c14610833578063bce5b7bf14610853578063c119308c14610866578063c3b83f5f1461088b578063ce18a8371461089e578063d014b3cf146108b1578063d0ebdbe7146108c0578063d33c5512146108d357600080fd5b806391b4ded91161017857806391b4ded914610779578063996df439146107825780639aca27921461078b578063a3e56fa814610794578063b0fb162f146107a7578063b3130f93146107cf578063b50740ce146107ef578063b624010a14610802578063b8d7f6971461082b57600080fd5b80637eaef50c146106a2578063805661b0146106b557806382e76c36146106c85780638794e36f146106e85780638a2ca895146107105780638c424f09146107305780638d0a1a89146107435780638da5cb5b1461076657600080fd5b8063481c6a75116102b05780635c975abb116102535780635c975abb1461058957806361728f391461059657806363e5f09c1461059f5780636cbd85a0146105b2578063724e78da146105c5578063741bef1a146105d857806376c371cb146105eb57806379ba5097146106915780637e0a23221461069957600080fd5b8063481c6a75146104e35780634a458397146104fb57806351a409941461050e5780635204f0111461052157806353a47bb71461053057806355f1442714610543578063590fda1f146105565780635a1757101461056557600080fd5b8063266e2bd811610318578063266e2bd8146104345780632ae8bdfe146104475780632b12c8ff1461045a578063357401f51461046d5780633744734d146104805780633df2967e146104895780633e413bee146104b05780633fc8cef3146104d057600080fd5b806309c1ba2e14610376578063104974bf1461039257806313af4035146103a15780631627540c146103b657806316c38b3c146103c95780631c2a9c22146103dc5780631fe543e3146103fc57806324f746971461040f575b600080fd5b61037f600f5481565b6040519081526020015b60405180910390f35b61037f670de0b6b3a764000081565b6103b46103af3660046140f0565b610996565b005b6103b46103c43660046140f0565b610ab2565b6103b46103d736600461411b565b610b05565b61037f6103ea3660046140f0565b60166020526000908152604090205481565b6103b461040a366004614138565b610b77565b60115461041f9063ffffffff1681565b60405163ffffffff9091168152602001610389565b61037f6104423660046140f0565b610bef565b6103b46104553660046141b7565b610cd4565b6103b46104683660046141f8565b610e2b565b6103b461047b3660046141f8565b610f2f565b61037f600c5481565b61049c6104973660046141f8565b611060565b604051610389989796959493929190614247565b6008546104c3906001600160a01b031681565b60405161038991906142d4565b6009546104c3906001600160a01b031681565b6005546104c39061010090046001600160a01b031681565b6103b46105093660046141f8565b611133565b61037f61051c3660046140f0565b611290565b61037f6729a2241af62c000081565b6001546104c3906001600160a01b031681565b6103b46105513660046141f8565b6112a1565b61037f671b0fcaab2003000081565b60115461057990600160301b900460ff1681565b6040519015158152602001610389565b6003546105799060ff1681565b61037f60105481565b6103b46105ad366004614313565b6113a6565b6103b46105c03660046141f8565b6114b6565b6103b46105d33660046140f0565b6115d4565b6006546104c3906001600160a01b031681565b61064b6105f93660046141f8565b600090815260146020526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b039687169896909516969395929491939092909190565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610389565b6103b461164e565b61037f600d5481565b600a546104c3906001600160a01b031681565b6103b46106c33660046140f0565b611726565b61037f6106d63660046140f0565b60136020526000908152604090205481565b6106fb6106f636600461437d565b6117a0565b60408051928352602083019190915201610389565b61072361071e3660046143ce565b611876565b6040516103899190614403565b6103b461073e3660046140f0565b61199d565b6105796107513660046141f8565b60196020526000908152604090205460ff1681565b6000546104c3906001600160a01b031681565b61037f60025481565b61037f600b5481565b61037f600e5481565b6007546104c3906001600160a01b031681565b6011546107bc90600160201b900461ffff1681565b60405161ffff9091168152602001610389565b61037f6107dd3660046141f8565b60156020526000908152604090205481565b61037f6107fd366004614447565b611a17565b61037f6108103660046140f0565b6001600160a01b031660009081526017602052604090205490565b61037f601e81565b610846610841366004614484565b611a92565b60405161038991906144ae565b6103b46108613660046140f0565b611a9e565b6108796108743660046144c1565b611b18565b60405160ff9091168152602001610389565b6103b46108993660046140f0565b611b23565b6018546104c3906001600160a01b031681565b61037f671bc16d674ec8000081565b6103b46108ce3660046140f0565b611c13565b6107236108e13660046144dc565b611c92565b601a546104c3906001600160a01b031681565b61037f6109073660046144fe565b611d78565b6106fb61091a3660046144fe565b611d96565b6103b461092d36600461453c565b611eb2565b6103b461094036600461411b565b611feb565b6103b4610953366004614575565b6120f7565b6103b4612219565b6103b461096e3660046145b9565b612277565b6105796109813660046140f0565b60126020526000908152604090205460ff1681565b6001600160a01b0381166109ed5760405162461bcd60e51b815260206004820152601960248201527804f776e657220616464726573732063616e6e6f74206265203603c1b60448201526064015b60405180910390fd5b600154600160a01b900460ff1615610a595760405162461bcd60e51b815260206004820152602960248201527f416c726561647920696e697469616c697a65642c20757365206e6f6d696e617460448201526832a732bba7bbb732b960b91b60648201526084016109e4565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b0383166001600160a01b0319909116178155604051600080516020614a4783398151915291610aa7918490614627565b60405180910390a150565b610aba6128a7565b600180546001600160a01b0319166001600160a01b0383161790556040517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290610aa79083906142d4565b610b0d6128a7565b60035460ff16151581151514610b74576003805460ff191682151590811790915560ff1615610b3b57426002555b60035460405160ff909116151581527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec590602001610aa7565b50565b600160046000828254610b8a9190614657565b90915550506004546007546001600160a01b03163314610bbd57604051636edaef2f60e11b815260040160405180910390fd5b610bc884848461291b565b6004548114610be95760405162461bcd60e51b81526004016109e49061466a565b50505050565b6001600160a01b03811660009081526012602052604081205460ff16610c28576040516368f7a67560e11b815260040160405180910390fd5b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190610c579030906004016142d4565b602060405180830381865afa158015610c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9891906146a1565b6001600160a01b038416600090815260166020526040902054909150808211610cc2576000610ccc565b610ccc81836146ba565b949350505050565b610cdc6128a7565b6040516370a0823160e01b81526000906001600160a01b038516906370a0823190610d0b9030906004016142d4565b602060405180830381865afa158015610d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4c91906146a1565b6001600160a01b03851660009081526016602052604090205490915081831180610d7e575080610d7c84846146ba565b105b15610d9c5760405163e926a90f60e01b815260040160405180910390fd5b60006001600160a01b03851615610db35784610dc0565b6000546001600160a01b03165b9050610dd66001600160a01b038716828661299d565b806001600160a01b0316866001600160a01b03167f39232a7eed2ad0ea7afab6b1edffa01bbd4a635bf106ac38ec5261d8d691f4a086604051610e1b91815260200190565b60405180910390a3505050505050565b6000546001600160a01b03163314801590610ebb575060055460405163e760c39560e01b81526101009091046001600160a01b03169063e760c39590610e789033906001906004016146cd565b602060405180830381865afa158015610e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb991906146f3565b155b15610ed957604051636edaef2f60e11b815260040160405180910390fd5b80600003610efa5760405163162908e360e11b815260040160405180910390fd5b600b8190556040518181527fbf5763b681209931e5896c869acf351029d5f6c74f8294dc76faa45fd5e1e06190602001610aa7565b600160046000828254610f429190614657565b90915550506004546000828152601460205260408120906008820154610100900460ff166003811115610f7757610f77614211565b03610f955760405163469bfa9160e01b815260040160405180910390fd5b80546001600160a01b03163314610fbf576040516308f02f3760e01b815260040160405180910390fd5b60016008820154610100900460ff166003811115610fdf57610fdf614211565b14610ffd5760405163433835b360e11b815260040160405180910390fd5b600c54816005015461100f9190614657565b42101561102f5760405163ee2fab9760e01b815260040160405180910390fd5b61103a8360006129fa565b50600454811461105c5760405162461bcd60e51b81526004016109e49061466a565b5050565b6000806000806000611070613fd1565b6000878152601460205260408082206008810154825160c08101909352839260ff80831692610100810482169262010000820483169263010000008304811692600160201b81048216926009890192600160281b8304811692600160301b900416908360068282826020028201916000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116110e2579050505050505092509850985098509850985098509850985050919395975091939597565b6000546001600160a01b031633148015906111c3575060055460405163e760c39560e01b81526101009091046001600160a01b03169063e760c395906111809033906002906004016146cd565b602060405180830381865afa15801561119d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c191906146f3565b155b156111e157604051636edaef2f60e11b815260040160405180910390fd5b6001600460008282546111f49190614657565b90915550506004546000828152601460205260408120906008820154610100900460ff16600381111561122957611229614211565b036112475760405163469bfa9160e01b815260040160405180910390fd5b60016008820154610100900460ff16600381111561126757611267614211565b146112855760405163433835b360e11b815260040160405180910390fd5b61103a8360016129fa565b600061129b82612ba7565b92915050565b6000546001600160a01b03163314801590611331575060055460405163e760c39560e01b81526101009091046001600160a01b03169063e760c395906112ee9033906001906004016146cd565b602060405180830381865afa15801561130b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132f91906146f3565b155b1561134f57604051636edaef2f60e11b815260040160405180910390fd5b601e8110156113715760405163162908e360e11b815260040160405180910390fd5b600c8190556040518181527f38d33a795286cbe89a8a1f89b34579f0d31ac41a109d14dd614c602e4701aa3b90602001610aa7565b6113ae6128a7565b846000036113cf5760405163162908e360e11b815260040160405180910390fd5b836113ed5760405163162908e360e11b815260040160405180910390fd5b8263ffffffff166000036114145760405163162908e360e11b815260040160405180910390fd5b600f85905560108490556011805463ffffffff851665ffffffffffff199091168117600160201b61ffff86169081029190911760ff60301b1916600160301b85151590810291909117909355604080518981526020810189905290810192909252606082015260808101919091527f26fd9d30b44253c9a0a296000205fec64ae29935ae04e75e954c65b33b911cca9060a00160405180910390a15050505050565b6000546001600160a01b03163314801590611546575060055460405163e760c39560e01b81526101009091046001600160a01b03169063e760c395906115039033906001906004016146cd565b602060405180830381865afa158015611520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154491906146f3565b155b1561156457604051636edaef2f60e11b815260040160405180910390fd5b670de0b6b3a76400008110806115815750671bc16d674ec8000081115b1561159f5760405163b8cfd5cf60e01b815260040160405180910390fd5b600d8190556040518181527fe323794afe187feb1cf82ba7e412c17b8c5361dce69b62f88904d214628bd9a690602001610aa7565b6115dc6128a7565b6001600160a01b0381166116035760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0383161790556040517f70880247142cf113e15f57599afcb48f4cdd196159d882cda54475da68ea996190610aa79083906142d4565b6001546001600160a01b031633146116c65760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b60648201526084016109e4565b600054600154604051600080516020614a47833981519152926116f7926001600160a01b0391821692911690614627565b60405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b61172e6128a7565b6001600160a01b0381166117555760405163e6c4247b60e01b815260040160405180910390fd5b601880546001600160a01b0319166001600160a01b0383161790556040517fb46323c836df32be1e2a36bb37c280dcd0b55b813f1962b19a07f20ed01dfefa90610aa79083906142d4565b6000806001600460008282546117b69190614657565b909155505060045460035460ff16156117e15760405162461bcd60e51b81526004016109e490614710565b6001600160a01b03871660009081526012602052604090205460ff1661181a576040516368f7a67560e11b815260040160405180910390fd5b61182f6001600160a01b038816333089612ccc565b6118398433612cf4565b611847338888886000612d83565b92509250600454811461186c5760405162461bcd60e51b81526004016109e49061466a565b5094509492505050565b6001600160a01b03831660009081526017602052604090208054606091908085106118b35750506040805160008152602081019091529050611996565b60006118bf86836146ba565b905060008582106118d057856118d2565b815b90508067ffffffffffffffff8111156118ed576118ed61476d565b604051908082528060200260200182016040528015611916578160200160208202803683370190505b50945060005b81811015611990578481896119326001886146ba565b61193c91906146ba565b61194691906146ba565b8154811061195657611956614783565b906000526020600020015486828151811061197357611973614783565b60209081029190910101528061198881614799565b91505061191c565b50505050505b9392505050565b6119a56128a7565b6001600160a01b0381166119cc5760405163e6c4247b60e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0383161790556040517f2986240c59d18ef8c7b4d89aa99dd6b43259c3c5df1338f44cee967f2463d08290610aa79083906142d4565b6000611a2282613037565b6000826002811115611a3657611a36614211565b03611a4d57611a468360026147b2565b905061129b565b6001826002811115611a6157611a61614211565b03611a8757670de0b6b3a7640000600d5484611a7d91906147b2565b611a4691906147df565b6119968360096147b2565b600061199683836130a5565b611aa66128a7565b6001600160a01b038116611acd5760405163e6c4247b60e01b815260040160405180910390fd5b601a80546001600160a01b0319166001600160a01b0383161790556040517f1c66bcf1559257f395a5886bded5d1fe94284b0492d050e14c3c8695cb112b5e90610aa79083906142d4565b600061129b826130dc565b611b2b6128a7565b6001600160a01b038116611b735760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016109e4565b600154600160a81b900460ff1615611bc35760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481d1c985b9cd9995c9c9959606a1b60448201526064016109e4565b600080546001600160a01b0383166001600160a01b031990911681179091556001805460ff60a81b1916600160a81b179055604051600080516020614a4783398151915291610aa7918490614627565b611c1b6128a7565b6001600160a01b038116611c425760405163e6c4247b60e01b815260040160405180910390fd5b60058054610100600160a81b0319166101006001600160a01b038416021790556040517f198db6e425fb8aafd1823c6ca50be2d51e5764571a5ae0f0f21c6812e45def0b90610aa79083906142d4565b606060006001600e54611ca591906146ba565b9050808410611cc457505060408051600081526020810190915261129b565b6000611cd085836146ba565b90506000848210611ce15784611ce3565b815b90508067ffffffffffffffff811115611cfe57611cfe61476d565b604051908082528060200260200182016040528015611d27578160200160208202803683370190505b50935060005b81811015611d6e57611d3f81846146ba565b858281518110611d5157611d51614783565b602090810291909101015280611d6681614799565b915050611d2d565b5050505092915050565b6000611d8382613037565b610ccc84611d91858561314d565b6131e2565b600080600160046000828254611dac9190614657565b909155505060045460035460ff1615611dd75760405162461bcd60e51b81526004016109e490614710565b6001600160a01b03861660009081526012602052604090205460ff16611e10576040516368f7a67560e11b815260040160405180910390fd5b60185460405163136070d360e01b81526001600160a01b039091169063136070d390611e449033908a908a906004016147f3565b600060405180830381600087803b158015611e5e57600080fd5b505af1158015611e72573d6000803e3d6000fd5b50505050611e84338787876001612d83565b925092506004548114611ea95760405162461bcd60e51b81526004016109e49061466a565b50935093915050565b6000546001600160a01b03163314801590611f42575060055460405163e760c39560e01b81526101009091046001600160a01b03169063e760c39590611eff9033906001906004016146cd565b602060405180830381865afa158015611f1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4091906146f3565b155b15611f6057604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b038216611f875760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038216600081815260126020908152604091829020805460ff19168515159081179091558251938452908301527f27f77de4c59e4a579d0ecd0b4a8e785acba93ef49c9b399422cf8e2f10b796c991015b60405180910390a15050565b6000546001600160a01b0316331480159061207b575060055460405163e760c39560e01b81526101009091046001600160a01b03169063e760c395906120389033906003906004016146cd565b602060405180830381865afa158015612055573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207991906146f3565b155b1561209957604051636edaef2f60e11b815260040160405180910390fd5b60035460ff16151581151514610b74576003805460ff191682158015919091179091556120c557426002555b60405181151581527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec590602001610aa7565b6000546001600160a01b03163314801590612187575060055460405163e760c39560e01b81526101009091046001600160a01b03169063e760c395906121449033906001906004016146cd565b602060405180830381865afa158015612161573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218591906146f3565b155b156121a557604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b0382166121cc5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03821660009081526013602052604090819020829055517f681f4b1fd7b693da60df6de9510c6f575bbbe388710ba0904ef554c253562f4e90611fdf9084908490614817565b60055460ff16156122625760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016109e4565b6005805460ff19166001908117909155600455565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156122bd5750825b905060008267ffffffffffffffff1660011480156122da5750303b155b9050811580156122e8575080155b156123065760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561233057845460ff60401b1916600160401b1785555b600061233f60208d018d6140f0565b6001600160a01b0316148061236c5750600061236160408d0160208e016140f0565b6001600160a01b0316145b8061238f5750600061238460608d0160408e016140f0565b6001600160a01b0316145b806123b2575060006123a760808d0160608e016140f0565b6001600160a01b0316145b806123d2575060006123c760208c018c6140f0565b6001600160a01b0316145b806123f5575060006123ea60408c0160208d016140f0565b6001600160a01b0316145b806124185750600061240d60608c0160408d016140f0565b6001600160a01b0316145b156124365760405163e6c4247b60e01b815260040160405180910390fd5b6124466103af60208d018d6140f0565b61244e612219565b61245e60408c0160208d016140f0565b600580546001600160a01b039290921661010002610100600160a81b031990921691909117905561249560608c0160408d016140f0565b600680546001600160a01b0319166001600160a01b03929092169190911790556124c560808c0160608d016140f0565b600780546001600160a01b0319166001600160a01b03929092169190911790556124f260208b018b6140f0565b600880546001600160a01b0319166001600160a01b039290921691909117905561252260408b0160208c016140f0565b600980546001600160a01b0319166001600160a01b039290921691909117905561255260608b0160408c016140f0565b600a80546001600160a01b0319166001600160a01b039290921691909117905560016012600061258560208e018e6140f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260008c60200160208101906125d591906140f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260008c604001602081019061262591906140f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508960600135601360008c602001602081019061267891906140f0565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055508960800135601360008c60400160208101906126b891906140f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550886000036126fd5760405163162908e360e11b815260040160405180910390fd5b61270d6060870160408801614830565b63ffffffff166000036127335760405163162908e360e11b815260040160405180910390fd5b60008715612741578761274b565b671b0fcaab200300005b9050670de0b6b3a764000081108061276a5750671bc16d674ec8000081115b156127885760405163b8cfd5cf60e01b815260040160405180910390fd5b601e8910156127aa5760405163162908e360e11b815260040160405180910390fd5b600b8a9055600c899055600d8190558635600f5560208701356010556127d66060880160408901614830565b6011805463ffffffff191663ffffffff92909216919091179055612800608088016060890161484b565b6011805461ffff92909216600160201b0265ffff000000001990921691909117905561283260a088016080890161411b565b60118054911515600160301b0260ff60301b19909216919091179055506001600e55831561289a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6000546001600160a01b031633146129195760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b60648201526084016109e4565b565b600083815260156020526040812054908190036129385750505050565b600081815260146020526040902060016008820154610100900460ff16600381111561296657612966614211565b14612972575050505050565b61299682828686600081811061298a5761298a614783565b9050602002013561323b565b5050505050565b6129f583846001600160a01b031663a9059cbb85856040516024016129c3929190614817565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613533565b505050565b600082815260146020526040902060078101546002820154612a1c9190614657565b60018201546001600160a01b031660009081526016602052604081208054909190612a489084906146ba565b909155505060088101805461ff00191661030017905542600682015560008381526019602052604090205460ff1615612b21576000600382015560185460028201546001830154612aa7926001600160a01b039182169291169061299d565b601854815460018301546002840154604051636aa6753360e01b81526001600160a01b0394851694636aa6753394612aea94908216939116918190600401614866565b600060405180830381600087803b158015612b0457600080fd5b505af1158015612b18573d6000803e3d6000fd5b50505050612b4e565b60028101546003820181905581546001830154612b4e926001600160a01b0391821692919091169061299d565b8054600482015460028301546040805191825285151560208301526001600160a01b039093169286917faf4cde6a110ec9a44f8b5bedd7a6981a3569755ca39b59932d9aeab68762bb97910160405180910390a4505050565b6001600160a01b03811660009081526012602052604081205460ff16612be0576040516368f7a67560e11b815260040160405180910390fd5b6008546001600160a01b0390811690831603612c055750670de0b6b3a7640000919050565b6001600160a01b03821660009081526013602052604090205480612c3c576040516368f7a67560e11b815260040160405180910390fd5b6006546040516315905ec160e31b8152600481018390526000916001600160a01b03169063ac82f60890602401602060405180830381865afa158015612c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612caa91906146a1565b9050806000036119965760405162bfc92160e01b815260040160405180910390fd5b610be984856001600160a01b03166323b872dd8686866040516024016129c3939291906147f3565b6001600160a01b03821615801590612d165750601a546001600160a01b031615155b1561105c57601a5460405163bbddaca360e01b81526001600160a01b039091169063bbddaca390612d4d9085908590600401614627565b600060405180830381600087803b158015612d6757600080fd5b505af1158015612d7b573d6000803e3d6000fd5b505050505050565b60008084600003612da75760405163162908e360e11b815260040160405180910390fd5b612db084613037565b6000612dbc87876131e2565b90506729a2241af62c0000811015612de75760405163162908e360e11b815260040160405180910390fd5b6000612df3878761314d565b9050600b54612e0289836131e2565b1115612e21576040516313f9d37360e31b815260040160405180910390fd5b612e2b8188614657565b6001600160a01b03891660009081526016602052604081208054909190612e53908490614657565b90915550612e6290508861358d565b612eb857612e708188614657565b6001600160a01b03891660009081526016602052604081208054909190612e989084906146ba565b9250508190555060405163e926a90f60e01b815260040160405180910390fd5b612ec0613614565b600e80549194506000612ed283614799565b90915550600081815260146020526040902080546001600160a01b03808d166001600160a01b031992831617835560018084018054928e16929093169190911790915560028083018b9055600483018790554260058401556007830185905560088301805494985092938a939260ff19909116918490811115612f5757612f57614211565b021790555060088101805461ff0019166101001790556001876002811115612f8157612f81614211565b03612f8f57600d54600a8201555b8515612faf576000858152601960205260409020805460ff191660011790555b60008481526015602090815260408083208890556001600160a01b038d168084526017835281842080546001810182559085529290932090910187905551859087907ffd380c306983470307d3a5e5afd72fcd09d222f2ea803fa0ed59d3fae1305ec090613022908e908e908e9061488f565b60405180910390a45050509550959350505050565b600081600281111561304b5761304b614211565b14806130685750600181600281111561306657613066614211565b145b806130845750600281600281111561308257613082614211565b145b1561308c5750565b6040516391c402a160e01b815260040160405180910390fd5b60008160ff168360ff1611156130bd5750600061129b565b8260ff168260ff1611156130d35750600161129b565b50600292915050565b6000600160ff831610806130f35750600d60ff8316115b1561311157604051636b6bc37160e01b815260040160405180910390fd5b8160ff1660010361312457506001919050565b60028260ff161015801561313c575060098260ff1611155b15613145575090565b506000919050565b60008082600281111561316257613162614211565b0361316e57508161129b565b600182600281111561318257613182614211565b036131be576000670de0b6b3a7640000600d54856131a091906147b2565b6131aa91906147df565b90506131b684826146ba565b91505061129b565b60028260028111156131d2576131d2614211565b0361308c57611a468360086147b2565b6008546000906001600160a01b039081169084160361321157620f4240611a7d670de0b6b3a7640000846147b2565b600061321c84612ba7565b9050670de0b6b3a764000061323182856147b2565b610ccc91906147df565b600061326283600201548460080160009054906101000a900460ff1685600a0154856136f7565b9050826007015483600201546132789190614657565b60018401546001600160a01b0316600090815260166020526040812080549091906132a49084906146ba565b9091555050805160088401805462ff00001916620100008360028111156132cd576132cd614211565b0217905550602081015160088401805460408401516060850151600388015560a085015160c086015160ff908116600160301b0260ff60301b1992909116600160281b029190911666ffff000000000019921515600160201b0264ff00000000199615156301000000029690961664ffff0000001990941693909317949094171617919091179055608081015161336a9060098501906006613fef565b5060088301805461ff0019166102001790554260068401558254600484015482516020840151604080860151606087015160a088015160c089015193516001600160a01b03909816978c967f50ba2a7fd933e688aa25bf9379e8c31cdd09c24b44b1c75917262bfb62df2d90966133eb9691959094909390929091906148bd565b60405180910390a46060810151156134dc5760008481526019602052604090205460ff16156134b85760185460608201516001850154613439926001600160a01b039182169291169061299d565b6018548354600185015460608401516002870154604051636aa6753360e01b81526001600160a01b0395861695636aa675339561348195908216949116929091600401614866565b600060405180830381600087803b15801561349b57600080fd5b505af11580156134af573d6000803e3d6000fd5b505050506134dc565b8254606082015160018501546134dc926001600160a01b039182169291169061299d565b80602001511580156134f057508060400151155b801561350b575060008481526019602052604090205460ff16155b15610be957825460018401546002850154610be9926001600160a01b039081169216906138f5565b60006135486001600160a01b03841683613bb0565b9050805160001415801561356d57508080602001905181019061356b91906146f3565b155b156129f55782604051635274afe760e01b81526004016109e491906142d4565b6001600160a01b0381166000818152601660205260408082205490516370a0823160e01b8152919290916370a08231906135cb9030906004016142d4565b602060405180830381865afa1580156135e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061360c91906146a1565b101592915050565b6007546040805160c0810182526010548152600f54602080830191909152601154600160201b810461ffff168385015263ffffffff81166060840152600160808401528351918201909352600160301b90920460ff16151582526000926001600160a01b031691639b1c385e919060a082019061369090613bbe565b8152506040518263ffffffff1660e01b81526004016136af919061491d565b6020604051808303816000875af11580156136ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f291906146a1565b905090565b6136ff614082565b61370a826000613c2f565b608082015160ff919091169052613722826001613c2f565b608082015160ff9190911660209091015261373e826002613c2f565b608082015160ff9190911660409091015261375a826003613c2f565b60808201805160ff929092166060909201919091525180516137839160025b6020020151613c43565b60ff1660a0820152608081015160208101516137a0916003613779565b60ff1660c082015260a08101516137b690613c5b565b1580156137cd57506137cb8160c00151613c5b565b155b1561388e5760006137e88260a00151600560ff909116111590565b905060008115613836576137fd846004613c2f565b6080848101805160ff9390931692820192909252905190810151815160409092015190925061382d919083613c74565b60ff1660a08401525b6138458360c001518383613c97565b1561388b57613855846005613c2f565b60808401805160ff9290921660a09283015251602081015160608201519190920151613882929190613c74565b60ff1660c08401525b50505b6138a08160a001518260c001516130a5565b819060028111156138b3576138b3614211565b908160028111156138c6576138c6614211565b815250506138da8585858460000151613d59565b15156040840152151560208301526060820152949350505050565b601a546001600160a01b031661390a57505050565b601a54604051639ca423b360e01b81526000916001600160a01b031690639ca423b39061393b9087906004016142d4565b602060405180830381865afa158015613958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061397c919061499f565b90506001600160a01b0381166139925750505050565b601a5460405163c7d1f5f160e01b81526000916001600160a01b03169063c7d1f5f1906139c39085906004016142d4565b602060405180830381865afa1580156139e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a0491906146a1565b905080600003613a15575050505050565b6000670de0b6b3a7640000613a2a83866147b2565b613a3491906147df565b90508015612d7b5760405163a9059cbb60e01b81526001600160a01b0386169063a9059cbb90613a6a9086908590600401614817565b6020604051808303816000875af1925050508015613aa5575060408051601f3d908101601f19168201909252613aa2918101906146f3565b60015b613afd57856001600160a01b0316836001600160a01b03167f92f301ee2b98276da878763ff746985ff79212a72d38ba93dcc2b66c84a76819838789604051613af0939291906149bc565b60405180910390a3612d7b565b8015613b5757866001600160a01b0316846001600160a01b03167f2f60e9c3fac363f0b03efb55d381f3d47475dbf1230e99201c9cdf4b9f577fc784888a604051613b4a939291906149bc565b60405180910390a3613ba7565b866001600160a01b0316846001600160a01b03167f92f301ee2b98276da878763ff746985ff79212a72d38ba93dcc2b66c84a7681984888a604051613b9e939291906149bc565b60405180910390a35b50505050505050565b606061199683836000613e74565b60607f92fd13387c7fe7befbc38d303d6468778fb9731bc4583f17d92989c6fcfdeaaa82604051602401613bf791511515815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915292915050565b6000611996613c3e8484613f11565b6130dc565b6000600a613c5183856149db565b61199691906149f4565b60008160ff166008148061129b57505060ff1660091490565b6000600a82613c8385876149db565b613c8d91906149db565b610ccc91906149f4565b600082613cac5750600560ff84161115611996565b60028460ff1611613cbf57506001611996565b8360ff16600303613cd85750600860ff82161415611996565b8360ff16600403613d025760028260ff1610158015613cfb575060078260ff1611155b9050611996565b8360ff16600503613d2a5760048260ff1610158015613cfb575050600760ff82161115611996565b8360ff16600603613d4f578160ff1660061480613cfb575050600760ff821614611996565b5060009392505050565b6000808080866002811115613d7057613d70614211565b03613dde576000846002811115613d8957613d89614211565b03613da857613d998760026147b2565b60016000925092509250613e6a565b6002846002811115613dbc57613dbc614211565b03613dd05750859150600090506001613e6a565b506000915081905080613e6a565b6001866002811115613df257613df2614211565b03613e2d576001846002811115613e0b57613e0b614211565b03613da857670de0b6b3a7640000613e2386896147b2565b613d9991906147df565b6002866002811115613e4157613e41614211565b0361308c576002846002811115613e5a57613e5a614211565b03613dd057613d998760096147b2565b9450945094915050565b606081471015613e99573060405163cd78605960e01b81526004016109e491906142d4565b600080856001600160a01b03168486604051613eb59190614a16565b60006040518083038185875af1925050503d8060008114613ef2576040519150601f19603f3d011682016040523d82523d6000602084013e613ef7565b606091505b5091509150613f07868383613f55565b9695505050505050565b60408051602080820185905281830184905282518083038401815260609092019092528051910120600090600190613f4b90600d90614a32565b6119969190614657565b606082613f6a57613f6582613fa8565b611996565b8151158015613f8157506001600160a01b0384163b155b15613fa15783604051639996b31560e01b81526004016109e491906142d4565b5080611996565b805115613fb85780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518060c001604052806006906020820280368337509192915050565b6001830191839082156140725791602002820160005b8382111561404357835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302614005565b80156140705782816101000a81549060ff0219169055600101602081600001049283019260010302614043565b505b5061407e9291506140c6565b5090565b6040805160e0810190915280600081526000602082018190526040820181905260608201526080016140b2613fd1565b815260006020820181905260409091015290565b5b8082111561407e57600081556001016140c7565b6001600160a01b0381168114610b7457600080fd5b60006020828403121561410257600080fd5b8135611996816140db565b8015158114610b7457600080fd5b60006020828403121561412d57600080fd5b81356119968161410d565b60008060006040848603121561414d57600080fd5b83359250602084013567ffffffffffffffff8082111561416c57600080fd5b818601915086601f83011261418057600080fd5b81358181111561418f57600080fd5b8760208260051b85010111156141a457600080fd5b6020830194508093505050509250925092565b6000806000606084860312156141cc57600080fd5b83356141d7816140db565b925060208401356141e7816140db565b929592945050506040919091013590565b60006020828403121561420a57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60038110610b7457610b74614211565b60048110610b7457610b74614211565b6101a081016142558a614227565b89825260206142638a614237565b898184015261427189614227565b8860408401528715156060840152861515608084015260a083018660005b60068110156142af57815160ff168352918301919083019060010161428f565b50505060ff85166101608401525060ff83166101808301529998505050505050505050565b6001600160a01b0391909116815260200190565b803563ffffffff811681146142fc57600080fd5b919050565b803561ffff811681146142fc57600080fd5b600080600080600060a0868803121561432b57600080fd5b8535945060208601359350614342604087016142e8565b925061435060608701614301565b915060808601356143608161410d565b809150509295509295909350565b8035600381106142fc57600080fd5b6000806000806080858703121561439357600080fd5b843561439e816140db565b9350602085013592506143b36040860161436e565b915060608501356143c3816140db565b939692955090935050565b6000806000606084860312156143e357600080fd5b83356143ee816140db565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b8181101561443b5783518352928401929184019160010161441f565b50909695505050505050565b6000806040838503121561445a57600080fd5b8235915061446a6020840161436e565b90509250929050565b803560ff811681146142fc57600080fd5b6000806040838503121561449757600080fd5b6144a083614473565b915061446a60208401614473565b602081016144bb83614227565b91905290565b6000602082840312156144d357600080fd5b61199682614473565b600080604083850312156144ef57600080fd5b50508035926020909101359150565b60008060006060848603121561451357600080fd5b833561451e816140db565b9250602084013591506145336040850161436e565b90509250925092565b6000806040838503121561454f57600080fd5b823561455a816140db565b9150602083013561456a8161410d565b809150509250929050565b6000806040838503121561458857600080fd5b8235614593816140db565b946020939093013593505050565b600060a082840312156145b357600080fd5b50919050565b6000806000806000808688036102208112156145d457600080fd5b60808112156145e257600080fd5b508695506145f388608089016145a1565b945061012087013593506101408701359250610160870135915061461b8861018089016145a1565b90509295509295509295565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561129b5761129b614641565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000602082840312156146b357600080fd5b5051919050565b8181038181111561129b5761129b614641565b6001600160a01b0383168152604081016146e683614237565b8260208301529392505050565b60006020828403121561470557600080fd5b81516119968161410d565b6020808252603c908201527f5468697320616374696f6e2063616e6e6f7420626520706572666f726d65642060408201527f7768696c652074686520636f6e74726163742069732070617573656400000000606082015260800190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016147ab576147ab614641565b5060010190565b808202811582820484141761129b5761129b614641565b634e487b7160e01b600052601260045260246000fd5b6000826147ee576147ee6147c9565b500490565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561484257600080fd5b611996826142e8565b60006020828403121561485d57600080fd5b61199682614301565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b038416815260208101839052606081016148af83614227565b826040830152949350505050565b60c081016148ca88614227565b96815294151560208601529215156040850152606084019190915260ff90811660808401521660a09091015290565b60005b838110156149145781810151838201526020016148fc565b50506000910152565b60208152815160208201526020820151604082015261ffff60408301511660608201526000606083015163ffffffff80821660808501528060808601511660a0850152505060a083015160c08084015280518060e085015261010061498882828701602086016148f9565b80601f19601f840116860101935050505092915050565b6000602082840312156149b157600080fd5b8151611996816140db565b92835260208301919091526001600160a01b0316604082015260600190565b60ff818116838216019081111561129b5761129b614641565b600060ff831680614a0757614a076147c9565b8060ff84160691505092915050565b60008251614a288184602087016148f9565b9190910192915050565b600082614a4157614a416147c9565b50069056feb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159ca26469706673582212208827239c0b3c05d6a3bc172522580d24c58c223ef279c19b5d0af67614eeaac464736f6c63430008140033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106103715760003560e01c80637eaef50c116101d5578063bc8d6c1c11610105578063d3dc7539116100a8578063d3dc7539146108e6578063d4494825146108f9578063d9af690c1461090c578063da6070251461091f578063e7f3d86c14610932578063ea80dd2e14610945578063ebc7977214610958578063f8297ce914610960578063fa550eba1461097357600080fd5b8063bc8d6c1c14610833578063bce5b7bf14610853578063c119308c14610866578063c3b83f5f1461088b578063ce18a8371461089e578063d014b3cf146108b1578063d0ebdbe7146108c0578063d33c5512146108d357600080fd5b806391b4ded91161017857806391b4ded914610779578063996df439146107825780639aca27921461078b578063a3e56fa814610794578063b0fb162f146107a7578063b3130f93146107cf578063b50740ce146107ef578063b624010a14610802578063b8d7f6971461082b57600080fd5b80637eaef50c146106a2578063805661b0146106b557806382e76c36146106c85780638794e36f146106e85780638a2ca895146107105780638c424f09146107305780638d0a1a89146107435780638da5cb5b1461076657600080fd5b8063481c6a75116102b05780635c975abb116102535780635c975abb1461058957806361728f391461059657806363e5f09c1461059f5780636cbd85a0146105b2578063724e78da146105c5578063741bef1a146105d857806376c371cb146105eb57806379ba5097146106915780637e0a23221461069957600080fd5b8063481c6a75146104e35780634a458397146104fb57806351a409941461050e5780635204f0111461052157806353a47bb71461053057806355f1442714610543578063590fda1f146105565780635a1757101461056557600080fd5b8063266e2bd811610318578063266e2bd8146104345780632ae8bdfe146104475780632b12c8ff1461045a578063357401f51461046d5780633744734d146104805780633df2967e146104895780633e413bee146104b05780633fc8cef3146104d057600080fd5b806309c1ba2e14610376578063104974bf1461039257806313af4035146103a15780631627540c146103b657806316c38b3c146103c95780631c2a9c22146103dc5780631fe543e3146103fc57806324f746971461040f575b600080fd5b61037f600f5481565b6040519081526020015b60405180910390f35b61037f670de0b6b3a764000081565b6103b46103af3660046140f0565b610996565b005b6103b46103c43660046140f0565b610ab2565b6103b46103d736600461411b565b610b05565b61037f6103ea3660046140f0565b60166020526000908152604090205481565b6103b461040a366004614138565b610b77565b60115461041f9063ffffffff1681565b60405163ffffffff9091168152602001610389565b61037f6104423660046140f0565b610bef565b6103b46104553660046141b7565b610cd4565b6103b46104683660046141f8565b610e2b565b6103b461047b3660046141f8565b610f2f565b61037f600c5481565b61049c6104973660046141f8565b611060565b604051610389989796959493929190614247565b6008546104c3906001600160a01b031681565b60405161038991906142d4565b6009546104c3906001600160a01b031681565b6005546104c39061010090046001600160a01b031681565b6103b46105093660046141f8565b611133565b61037f61051c3660046140f0565b611290565b61037f6729a2241af62c000081565b6001546104c3906001600160a01b031681565b6103b46105513660046141f8565b6112a1565b61037f671b0fcaab2003000081565b60115461057990600160301b900460ff1681565b6040519015158152602001610389565b6003546105799060ff1681565b61037f60105481565b6103b46105ad366004614313565b6113a6565b6103b46105c03660046141f8565b6114b6565b6103b46105d33660046140f0565b6115d4565b6006546104c3906001600160a01b031681565b61064b6105f93660046141f8565b600090815260146020526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b039687169896909516969395929491939092909190565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610389565b6103b461164e565b61037f600d5481565b600a546104c3906001600160a01b031681565b6103b46106c33660046140f0565b611726565b61037f6106d63660046140f0565b60136020526000908152604090205481565b6106fb6106f636600461437d565b6117a0565b60408051928352602083019190915201610389565b61072361071e3660046143ce565b611876565b6040516103899190614403565b6103b461073e3660046140f0565b61199d565b6105796107513660046141f8565b60196020526000908152604090205460ff1681565b6000546104c3906001600160a01b031681565b61037f60025481565b61037f600b5481565b61037f600e5481565b6007546104c3906001600160a01b031681565b6011546107bc90600160201b900461ffff1681565b60405161ffff9091168152602001610389565b61037f6107dd3660046141f8565b60156020526000908152604090205481565b61037f6107fd366004614447565b611a17565b61037f6108103660046140f0565b6001600160a01b031660009081526017602052604090205490565b61037f601e81565b610846610841366004614484565b611a92565b60405161038991906144ae565b6103b46108613660046140f0565b611a9e565b6108796108743660046144c1565b611b18565b60405160ff9091168152602001610389565b6103b46108993660046140f0565b611b23565b6018546104c3906001600160a01b031681565b61037f671bc16d674ec8000081565b6103b46108ce3660046140f0565b611c13565b6107236108e13660046144dc565b611c92565b601a546104c3906001600160a01b031681565b61037f6109073660046144fe565b611d78565b6106fb61091a3660046144fe565b611d96565b6103b461092d36600461453c565b611eb2565b6103b461094036600461411b565b611feb565b6103b4610953366004614575565b6120f7565b6103b4612219565b6103b461096e3660046145b9565b612277565b6105796109813660046140f0565b60126020526000908152604090205460ff1681565b6001600160a01b0381166109ed5760405162461bcd60e51b815260206004820152601960248201527804f776e657220616464726573732063616e6e6f74206265203603c1b60448201526064015b60405180910390fd5b600154600160a01b900460ff1615610a595760405162461bcd60e51b815260206004820152602960248201527f416c726561647920696e697469616c697a65642c20757365206e6f6d696e617460448201526832a732bba7bbb732b960b91b60648201526084016109e4565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b0383166001600160a01b0319909116178155604051600080516020614a4783398151915291610aa7918490614627565b60405180910390a150565b610aba6128a7565b600180546001600160a01b0319166001600160a01b0383161790556040517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290610aa79083906142d4565b610b0d6128a7565b60035460ff16151581151514610b74576003805460ff191682151590811790915560ff1615610b3b57426002555b60035460405160ff909116151581527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec590602001610aa7565b50565b600160046000828254610b8a9190614657565b90915550506004546007546001600160a01b03163314610bbd57604051636edaef2f60e11b815260040160405180910390fd5b610bc884848461291b565b6004548114610be95760405162461bcd60e51b81526004016109e49061466a565b50505050565b6001600160a01b03811660009081526012602052604081205460ff16610c28576040516368f7a67560e11b815260040160405180910390fd5b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190610c579030906004016142d4565b602060405180830381865afa158015610c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9891906146a1565b6001600160a01b038416600090815260166020526040902054909150808211610cc2576000610ccc565b610ccc81836146ba565b949350505050565b610cdc6128a7565b6040516370a0823160e01b81526000906001600160a01b038516906370a0823190610d0b9030906004016142d4565b602060405180830381865afa158015610d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4c91906146a1565b6001600160a01b03851660009081526016602052604090205490915081831180610d7e575080610d7c84846146ba565b105b15610d9c5760405163e926a90f60e01b815260040160405180910390fd5b60006001600160a01b03851615610db35784610dc0565b6000546001600160a01b03165b9050610dd66001600160a01b038716828661299d565b806001600160a01b0316866001600160a01b03167f39232a7eed2ad0ea7afab6b1edffa01bbd4a635bf106ac38ec5261d8d691f4a086604051610e1b91815260200190565b60405180910390a3505050505050565b6000546001600160a01b03163314801590610ebb575060055460405163e760c39560e01b81526101009091046001600160a01b03169063e760c39590610e789033906001906004016146cd565b602060405180830381865afa158015610e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb991906146f3565b155b15610ed957604051636edaef2f60e11b815260040160405180910390fd5b80600003610efa5760405163162908e360e11b815260040160405180910390fd5b600b8190556040518181527fbf5763b681209931e5896c869acf351029d5f6c74f8294dc76faa45fd5e1e06190602001610aa7565b600160046000828254610f429190614657565b90915550506004546000828152601460205260408120906008820154610100900460ff166003811115610f7757610f77614211565b03610f955760405163469bfa9160e01b815260040160405180910390fd5b80546001600160a01b03163314610fbf576040516308f02f3760e01b815260040160405180910390fd5b60016008820154610100900460ff166003811115610fdf57610fdf614211565b14610ffd5760405163433835b360e11b815260040160405180910390fd5b600c54816005015461100f9190614657565b42101561102f5760405163ee2fab9760e01b815260040160405180910390fd5b61103a8360006129fa565b50600454811461105c5760405162461bcd60e51b81526004016109e49061466a565b5050565b6000806000806000611070613fd1565b6000878152601460205260408082206008810154825160c08101909352839260ff80831692610100810482169262010000820483169263010000008304811692600160201b81048216926009890192600160281b8304811692600160301b900416908360068282826020028201916000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116110e2579050505050505092509850985098509850985098509850985050919395975091939597565b6000546001600160a01b031633148015906111c3575060055460405163e760c39560e01b81526101009091046001600160a01b03169063e760c395906111809033906002906004016146cd565b602060405180830381865afa15801561119d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c191906146f3565b155b156111e157604051636edaef2f60e11b815260040160405180910390fd5b6001600460008282546111f49190614657565b90915550506004546000828152601460205260408120906008820154610100900460ff16600381111561122957611229614211565b036112475760405163469bfa9160e01b815260040160405180910390fd5b60016008820154610100900460ff16600381111561126757611267614211565b146112855760405163433835b360e11b815260040160405180910390fd5b61103a8360016129fa565b600061129b82612ba7565b92915050565b6000546001600160a01b03163314801590611331575060055460405163e760c39560e01b81526101009091046001600160a01b03169063e760c395906112ee9033906001906004016146cd565b602060405180830381865afa15801561130b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132f91906146f3565b155b1561134f57604051636edaef2f60e11b815260040160405180910390fd5b601e8110156113715760405163162908e360e11b815260040160405180910390fd5b600c8190556040518181527f38d33a795286cbe89a8a1f89b34579f0d31ac41a109d14dd614c602e4701aa3b90602001610aa7565b6113ae6128a7565b846000036113cf5760405163162908e360e11b815260040160405180910390fd5b836113ed5760405163162908e360e11b815260040160405180910390fd5b8263ffffffff166000036114145760405163162908e360e11b815260040160405180910390fd5b600f85905560108490556011805463ffffffff851665ffffffffffff199091168117600160201b61ffff86169081029190911760ff60301b1916600160301b85151590810291909117909355604080518981526020810189905290810192909252606082015260808101919091527f26fd9d30b44253c9a0a296000205fec64ae29935ae04e75e954c65b33b911cca9060a00160405180910390a15050505050565b6000546001600160a01b03163314801590611546575060055460405163e760c39560e01b81526101009091046001600160a01b03169063e760c395906115039033906001906004016146cd565b602060405180830381865afa158015611520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154491906146f3565b155b1561156457604051636edaef2f60e11b815260040160405180910390fd5b670de0b6b3a76400008110806115815750671bc16d674ec8000081115b1561159f5760405163b8cfd5cf60e01b815260040160405180910390fd5b600d8190556040518181527fe323794afe187feb1cf82ba7e412c17b8c5361dce69b62f88904d214628bd9a690602001610aa7565b6115dc6128a7565b6001600160a01b0381166116035760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0383161790556040517f70880247142cf113e15f57599afcb48f4cdd196159d882cda54475da68ea996190610aa79083906142d4565b6001546001600160a01b031633146116c65760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b60648201526084016109e4565b600054600154604051600080516020614a47833981519152926116f7926001600160a01b0391821692911690614627565b60405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b61172e6128a7565b6001600160a01b0381166117555760405163e6c4247b60e01b815260040160405180910390fd5b601880546001600160a01b0319166001600160a01b0383161790556040517fb46323c836df32be1e2a36bb37c280dcd0b55b813f1962b19a07f20ed01dfefa90610aa79083906142d4565b6000806001600460008282546117b69190614657565b909155505060045460035460ff16156117e15760405162461bcd60e51b81526004016109e490614710565b6001600160a01b03871660009081526012602052604090205460ff1661181a576040516368f7a67560e11b815260040160405180910390fd5b61182f6001600160a01b038816333089612ccc565b6118398433612cf4565b611847338888886000612d83565b92509250600454811461186c5760405162461bcd60e51b81526004016109e49061466a565b5094509492505050565b6001600160a01b03831660009081526017602052604090208054606091908085106118b35750506040805160008152602081019091529050611996565b60006118bf86836146ba565b905060008582106118d057856118d2565b815b90508067ffffffffffffffff8111156118ed576118ed61476d565b604051908082528060200260200182016040528015611916578160200160208202803683370190505b50945060005b81811015611990578481896119326001886146ba565b61193c91906146ba565b61194691906146ba565b8154811061195657611956614783565b906000526020600020015486828151811061197357611973614783565b60209081029190910101528061198881614799565b91505061191c565b50505050505b9392505050565b6119a56128a7565b6001600160a01b0381166119cc5760405163e6c4247b60e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0383161790556040517f2986240c59d18ef8c7b4d89aa99dd6b43259c3c5df1338f44cee967f2463d08290610aa79083906142d4565b6000611a2282613037565b6000826002811115611a3657611a36614211565b03611a4d57611a468360026147b2565b905061129b565b6001826002811115611a6157611a61614211565b03611a8757670de0b6b3a7640000600d5484611a7d91906147b2565b611a4691906147df565b6119968360096147b2565b600061199683836130a5565b611aa66128a7565b6001600160a01b038116611acd5760405163e6c4247b60e01b815260040160405180910390fd5b601a80546001600160a01b0319166001600160a01b0383161790556040517f1c66bcf1559257f395a5886bded5d1fe94284b0492d050e14c3c8695cb112b5e90610aa79083906142d4565b600061129b826130dc565b611b2b6128a7565b6001600160a01b038116611b735760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016109e4565b600154600160a81b900460ff1615611bc35760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481d1c985b9cd9995c9c9959606a1b60448201526064016109e4565b600080546001600160a01b0383166001600160a01b031990911681179091556001805460ff60a81b1916600160a81b179055604051600080516020614a4783398151915291610aa7918490614627565b611c1b6128a7565b6001600160a01b038116611c425760405163e6c4247b60e01b815260040160405180910390fd5b60058054610100600160a81b0319166101006001600160a01b038416021790556040517f198db6e425fb8aafd1823c6ca50be2d51e5764571a5ae0f0f21c6812e45def0b90610aa79083906142d4565b606060006001600e54611ca591906146ba565b9050808410611cc457505060408051600081526020810190915261129b565b6000611cd085836146ba565b90506000848210611ce15784611ce3565b815b90508067ffffffffffffffff811115611cfe57611cfe61476d565b604051908082528060200260200182016040528015611d27578160200160208202803683370190505b50935060005b81811015611d6e57611d3f81846146ba565b858281518110611d5157611d51614783565b602090810291909101015280611d6681614799565b915050611d2d565b5050505092915050565b6000611d8382613037565b610ccc84611d91858561314d565b6131e2565b600080600160046000828254611dac9190614657565b909155505060045460035460ff1615611dd75760405162461bcd60e51b81526004016109e490614710565b6001600160a01b03861660009081526012602052604090205460ff16611e10576040516368f7a67560e11b815260040160405180910390fd5b60185460405163136070d360e01b81526001600160a01b039091169063136070d390611e449033908a908a906004016147f3565b600060405180830381600087803b158015611e5e57600080fd5b505af1158015611e72573d6000803e3d6000fd5b50505050611e84338787876001612d83565b925092506004548114611ea95760405162461bcd60e51b81526004016109e49061466a565b50935093915050565b6000546001600160a01b03163314801590611f42575060055460405163e760c39560e01b81526101009091046001600160a01b03169063e760c39590611eff9033906001906004016146cd565b602060405180830381865afa158015611f1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4091906146f3565b155b15611f6057604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b038216611f875760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038216600081815260126020908152604091829020805460ff19168515159081179091558251938452908301527f27f77de4c59e4a579d0ecd0b4a8e785acba93ef49c9b399422cf8e2f10b796c991015b60405180910390a15050565b6000546001600160a01b0316331480159061207b575060055460405163e760c39560e01b81526101009091046001600160a01b03169063e760c395906120389033906003906004016146cd565b602060405180830381865afa158015612055573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207991906146f3565b155b1561209957604051636edaef2f60e11b815260040160405180910390fd5b60035460ff16151581151514610b74576003805460ff191682158015919091179091556120c557426002555b60405181151581527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec590602001610aa7565b6000546001600160a01b03163314801590612187575060055460405163e760c39560e01b81526101009091046001600160a01b03169063e760c395906121449033906001906004016146cd565b602060405180830381865afa158015612161573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218591906146f3565b155b156121a557604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b0382166121cc5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03821660009081526013602052604090819020829055517f681f4b1fd7b693da60df6de9510c6f575bbbe388710ba0904ef554c253562f4e90611fdf9084908490614817565b60055460ff16156122625760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016109e4565b6005805460ff19166001908117909155600455565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156122bd5750825b905060008267ffffffffffffffff1660011480156122da5750303b155b9050811580156122e8575080155b156123065760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561233057845460ff60401b1916600160401b1785555b600061233f60208d018d6140f0565b6001600160a01b0316148061236c5750600061236160408d0160208e016140f0565b6001600160a01b0316145b8061238f5750600061238460608d0160408e016140f0565b6001600160a01b0316145b806123b2575060006123a760808d0160608e016140f0565b6001600160a01b0316145b806123d2575060006123c760208c018c6140f0565b6001600160a01b0316145b806123f5575060006123ea60408c0160208d016140f0565b6001600160a01b0316145b806124185750600061240d60608c0160408d016140f0565b6001600160a01b0316145b156124365760405163e6c4247b60e01b815260040160405180910390fd5b6124466103af60208d018d6140f0565b61244e612219565b61245e60408c0160208d016140f0565b600580546001600160a01b039290921661010002610100600160a81b031990921691909117905561249560608c0160408d016140f0565b600680546001600160a01b0319166001600160a01b03929092169190911790556124c560808c0160608d016140f0565b600780546001600160a01b0319166001600160a01b03929092169190911790556124f260208b018b6140f0565b600880546001600160a01b0319166001600160a01b039290921691909117905561252260408b0160208c016140f0565b600980546001600160a01b0319166001600160a01b039290921691909117905561255260608b0160408c016140f0565b600a80546001600160a01b0319166001600160a01b039290921691909117905560016012600061258560208e018e6140f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260008c60200160208101906125d591906140f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260008c604001602081019061262591906140f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508960600135601360008c602001602081019061267891906140f0565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055508960800135601360008c60400160208101906126b891906140f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550886000036126fd5760405163162908e360e11b815260040160405180910390fd5b61270d6060870160408801614830565b63ffffffff166000036127335760405163162908e360e11b815260040160405180910390fd5b60008715612741578761274b565b671b0fcaab200300005b9050670de0b6b3a764000081108061276a5750671bc16d674ec8000081115b156127885760405163b8cfd5cf60e01b815260040160405180910390fd5b601e8910156127aa5760405163162908e360e11b815260040160405180910390fd5b600b8a9055600c899055600d8190558635600f5560208701356010556127d66060880160408901614830565b6011805463ffffffff191663ffffffff92909216919091179055612800608088016060890161484b565b6011805461ffff92909216600160201b0265ffff000000001990921691909117905561283260a088016080890161411b565b60118054911515600160301b0260ff60301b19909216919091179055506001600e55831561289a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6000546001600160a01b031633146129195760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b60648201526084016109e4565b565b600083815260156020526040812054908190036129385750505050565b600081815260146020526040902060016008820154610100900460ff16600381111561296657612966614211565b14612972575050505050565b61299682828686600081811061298a5761298a614783565b9050602002013561323b565b5050505050565b6129f583846001600160a01b031663a9059cbb85856040516024016129c3929190614817565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613533565b505050565b600082815260146020526040902060078101546002820154612a1c9190614657565b60018201546001600160a01b031660009081526016602052604081208054909190612a489084906146ba565b909155505060088101805461ff00191661030017905542600682015560008381526019602052604090205460ff1615612b21576000600382015560185460028201546001830154612aa7926001600160a01b039182169291169061299d565b601854815460018301546002840154604051636aa6753360e01b81526001600160a01b0394851694636aa6753394612aea94908216939116918190600401614866565b600060405180830381600087803b158015612b0457600080fd5b505af1158015612b18573d6000803e3d6000fd5b50505050612b4e565b60028101546003820181905581546001830154612b4e926001600160a01b0391821692919091169061299d565b8054600482015460028301546040805191825285151560208301526001600160a01b039093169286917faf4cde6a110ec9a44f8b5bedd7a6981a3569755ca39b59932d9aeab68762bb97910160405180910390a4505050565b6001600160a01b03811660009081526012602052604081205460ff16612be0576040516368f7a67560e11b815260040160405180910390fd5b6008546001600160a01b0390811690831603612c055750670de0b6b3a7640000919050565b6001600160a01b03821660009081526013602052604090205480612c3c576040516368f7a67560e11b815260040160405180910390fd5b6006546040516315905ec160e31b8152600481018390526000916001600160a01b03169063ac82f60890602401602060405180830381865afa158015612c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612caa91906146a1565b9050806000036119965760405162bfc92160e01b815260040160405180910390fd5b610be984856001600160a01b03166323b872dd8686866040516024016129c3939291906147f3565b6001600160a01b03821615801590612d165750601a546001600160a01b031615155b1561105c57601a5460405163bbddaca360e01b81526001600160a01b039091169063bbddaca390612d4d9085908590600401614627565b600060405180830381600087803b158015612d6757600080fd5b505af1158015612d7b573d6000803e3d6000fd5b505050505050565b60008084600003612da75760405163162908e360e11b815260040160405180910390fd5b612db084613037565b6000612dbc87876131e2565b90506729a2241af62c0000811015612de75760405163162908e360e11b815260040160405180910390fd5b6000612df3878761314d565b9050600b54612e0289836131e2565b1115612e21576040516313f9d37360e31b815260040160405180910390fd5b612e2b8188614657565b6001600160a01b03891660009081526016602052604081208054909190612e53908490614657565b90915550612e6290508861358d565b612eb857612e708188614657565b6001600160a01b03891660009081526016602052604081208054909190612e989084906146ba565b9250508190555060405163e926a90f60e01b815260040160405180910390fd5b612ec0613614565b600e80549194506000612ed283614799565b90915550600081815260146020526040902080546001600160a01b03808d166001600160a01b031992831617835560018084018054928e16929093169190911790915560028083018b9055600483018790554260058401556007830185905560088301805494985092938a939260ff19909116918490811115612f5757612f57614211565b021790555060088101805461ff0019166101001790556001876002811115612f8157612f81614211565b03612f8f57600d54600a8201555b8515612faf576000858152601960205260409020805460ff191660011790555b60008481526015602090815260408083208890556001600160a01b038d168084526017835281842080546001810182559085529290932090910187905551859087907ffd380c306983470307d3a5e5afd72fcd09d222f2ea803fa0ed59d3fae1305ec090613022908e908e908e9061488f565b60405180910390a45050509550959350505050565b600081600281111561304b5761304b614211565b14806130685750600181600281111561306657613066614211565b145b806130845750600281600281111561308257613082614211565b145b1561308c5750565b6040516391c402a160e01b815260040160405180910390fd5b60008160ff168360ff1611156130bd5750600061129b565b8260ff168260ff1611156130d35750600161129b565b50600292915050565b6000600160ff831610806130f35750600d60ff8316115b1561311157604051636b6bc37160e01b815260040160405180910390fd5b8160ff1660010361312457506001919050565b60028260ff161015801561313c575060098260ff1611155b15613145575090565b506000919050565b60008082600281111561316257613162614211565b0361316e57508161129b565b600182600281111561318257613182614211565b036131be576000670de0b6b3a7640000600d54856131a091906147b2565b6131aa91906147df565b90506131b684826146ba565b91505061129b565b60028260028111156131d2576131d2614211565b0361308c57611a468360086147b2565b6008546000906001600160a01b039081169084160361321157620f4240611a7d670de0b6b3a7640000846147b2565b600061321c84612ba7565b9050670de0b6b3a764000061323182856147b2565b610ccc91906147df565b600061326283600201548460080160009054906101000a900460ff1685600a0154856136f7565b9050826007015483600201546132789190614657565b60018401546001600160a01b0316600090815260166020526040812080549091906132a49084906146ba565b9091555050805160088401805462ff00001916620100008360028111156132cd576132cd614211565b0217905550602081015160088401805460408401516060850151600388015560a085015160c086015160ff908116600160301b0260ff60301b1992909116600160281b029190911666ffff000000000019921515600160201b0264ff00000000199615156301000000029690961664ffff0000001990941693909317949094171617919091179055608081015161336a9060098501906006613fef565b5060088301805461ff0019166102001790554260068401558254600484015482516020840151604080860151606087015160a088015160c089015193516001600160a01b03909816978c967f50ba2a7fd933e688aa25bf9379e8c31cdd09c24b44b1c75917262bfb62df2d90966133eb9691959094909390929091906148bd565b60405180910390a46060810151156134dc5760008481526019602052604090205460ff16156134b85760185460608201516001850154613439926001600160a01b039182169291169061299d565b6018548354600185015460608401516002870154604051636aa6753360e01b81526001600160a01b0395861695636aa675339561348195908216949116929091600401614866565b600060405180830381600087803b15801561349b57600080fd5b505af11580156134af573d6000803e3d6000fd5b505050506134dc565b8254606082015160018501546134dc926001600160a01b039182169291169061299d565b80602001511580156134f057508060400151155b801561350b575060008481526019602052604090205460ff16155b15610be957825460018401546002850154610be9926001600160a01b039081169216906138f5565b60006135486001600160a01b03841683613bb0565b9050805160001415801561356d57508080602001905181019061356b91906146f3565b155b156129f55782604051635274afe760e01b81526004016109e491906142d4565b6001600160a01b0381166000818152601660205260408082205490516370a0823160e01b8152919290916370a08231906135cb9030906004016142d4565b602060405180830381865afa1580156135e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061360c91906146a1565b101592915050565b6007546040805160c0810182526010548152600f54602080830191909152601154600160201b810461ffff168385015263ffffffff81166060840152600160808401528351918201909352600160301b90920460ff16151582526000926001600160a01b031691639b1c385e919060a082019061369090613bbe565b8152506040518263ffffffff1660e01b81526004016136af919061491d565b6020604051808303816000875af11580156136ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f291906146a1565b905090565b6136ff614082565b61370a826000613c2f565b608082015160ff919091169052613722826001613c2f565b608082015160ff9190911660209091015261373e826002613c2f565b608082015160ff9190911660409091015261375a826003613c2f565b60808201805160ff929092166060909201919091525180516137839160025b6020020151613c43565b60ff1660a0820152608081015160208101516137a0916003613779565b60ff1660c082015260a08101516137b690613c5b565b1580156137cd57506137cb8160c00151613c5b565b155b1561388e5760006137e88260a00151600560ff909116111590565b905060008115613836576137fd846004613c2f565b6080848101805160ff9390931692820192909252905190810151815160409092015190925061382d919083613c74565b60ff1660a08401525b6138458360c001518383613c97565b1561388b57613855846005613c2f565b60808401805160ff9290921660a09283015251602081015160608201519190920151613882929190613c74565b60ff1660c08401525b50505b6138a08160a001518260c001516130a5565b819060028111156138b3576138b3614211565b908160028111156138c6576138c6614211565b815250506138da8585858460000151613d59565b15156040840152151560208301526060820152949350505050565b601a546001600160a01b031661390a57505050565b601a54604051639ca423b360e01b81526000916001600160a01b031690639ca423b39061393b9087906004016142d4565b602060405180830381865afa158015613958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061397c919061499f565b90506001600160a01b0381166139925750505050565b601a5460405163c7d1f5f160e01b81526000916001600160a01b03169063c7d1f5f1906139c39085906004016142d4565b602060405180830381865afa1580156139e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a0491906146a1565b905080600003613a15575050505050565b6000670de0b6b3a7640000613a2a83866147b2565b613a3491906147df565b90508015612d7b5760405163a9059cbb60e01b81526001600160a01b0386169063a9059cbb90613a6a9086908590600401614817565b6020604051808303816000875af1925050508015613aa5575060408051601f3d908101601f19168201909252613aa2918101906146f3565b60015b613afd57856001600160a01b0316836001600160a01b03167f92f301ee2b98276da878763ff746985ff79212a72d38ba93dcc2b66c84a76819838789604051613af0939291906149bc565b60405180910390a3612d7b565b8015613b5757866001600160a01b0316846001600160a01b03167f2f60e9c3fac363f0b03efb55d381f3d47475dbf1230e99201c9cdf4b9f577fc784888a604051613b4a939291906149bc565b60405180910390a3613ba7565b866001600160a01b0316846001600160a01b03167f92f301ee2b98276da878763ff746985ff79212a72d38ba93dcc2b66c84a7681984888a604051613b9e939291906149bc565b60405180910390a35b50505050505050565b606061199683836000613e74565b60607f92fd13387c7fe7befbc38d303d6468778fb9731bc4583f17d92989c6fcfdeaaa82604051602401613bf791511515815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915292915050565b6000611996613c3e8484613f11565b6130dc565b6000600a613c5183856149db565b61199691906149f4565b60008160ff166008148061129b57505060ff1660091490565b6000600a82613c8385876149db565b613c8d91906149db565b610ccc91906149f4565b600082613cac5750600560ff84161115611996565b60028460ff1611613cbf57506001611996565b8360ff16600303613cd85750600860ff82161415611996565b8360ff16600403613d025760028260ff1610158015613cfb575060078260ff1611155b9050611996565b8360ff16600503613d2a5760048260ff1610158015613cfb575050600760ff82161115611996565b8360ff16600603613d4f578160ff1660061480613cfb575050600760ff821614611996565b5060009392505050565b6000808080866002811115613d7057613d70614211565b03613dde576000846002811115613d8957613d89614211565b03613da857613d998760026147b2565b60016000925092509250613e6a565b6002846002811115613dbc57613dbc614211565b03613dd05750859150600090506001613e6a565b506000915081905080613e6a565b6001866002811115613df257613df2614211565b03613e2d576001846002811115613e0b57613e0b614211565b03613da857670de0b6b3a7640000613e2386896147b2565b613d9991906147df565b6002866002811115613e4157613e41614211565b0361308c576002846002811115613e5a57613e5a614211565b03613dd057613d998760096147b2565b9450945094915050565b606081471015613e99573060405163cd78605960e01b81526004016109e491906142d4565b600080856001600160a01b03168486604051613eb59190614a16565b60006040518083038185875af1925050503d8060008114613ef2576040519150601f19603f3d011682016040523d82523d6000602084013e613ef7565b606091505b5091509150613f07868383613f55565b9695505050505050565b60408051602080820185905281830184905282518083038401815260609092019092528051910120600090600190613f4b90600d90614a32565b6119969190614657565b606082613f6a57613f6582613fa8565b611996565b8151158015613f8157506001600160a01b0384163b155b15613fa15783604051639996b31560e01b81526004016109e491906142d4565b5080611996565b805115613fb85780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518060c001604052806006906020820280368337509192915050565b6001830191839082156140725791602002820160005b8382111561404357835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302614005565b80156140705782816101000a81549060ff0219169055600101602081600001049283019260010302614043565b505b5061407e9291506140c6565b5090565b6040805160e0810190915280600081526000602082018190526040820181905260608201526080016140b2613fd1565b815260006020820181905260409091015290565b5b8082111561407e57600081556001016140c7565b6001600160a01b0381168114610b7457600080fd5b60006020828403121561410257600080fd5b8135611996816140db565b8015158114610b7457600080fd5b60006020828403121561412d57600080fd5b81356119968161410d565b60008060006040848603121561414d57600080fd5b83359250602084013567ffffffffffffffff8082111561416c57600080fd5b818601915086601f83011261418057600080fd5b81358181111561418f57600080fd5b8760208260051b85010111156141a457600080fd5b6020830194508093505050509250925092565b6000806000606084860312156141cc57600080fd5b83356141d7816140db565b925060208401356141e7816140db565b929592945050506040919091013590565b60006020828403121561420a57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60038110610b7457610b74614211565b60048110610b7457610b74614211565b6101a081016142558a614227565b89825260206142638a614237565b898184015261427189614227565b8860408401528715156060840152861515608084015260a083018660005b60068110156142af57815160ff168352918301919083019060010161428f565b50505060ff85166101608401525060ff83166101808301529998505050505050505050565b6001600160a01b0391909116815260200190565b803563ffffffff811681146142fc57600080fd5b919050565b803561ffff811681146142fc57600080fd5b600080600080600060a0868803121561432b57600080fd5b8535945060208601359350614342604087016142e8565b925061435060608701614301565b915060808601356143608161410d565b809150509295509295909350565b8035600381106142fc57600080fd5b6000806000806080858703121561439357600080fd5b843561439e816140db565b9350602085013592506143b36040860161436e565b915060608501356143c3816140db565b939692955090935050565b6000806000606084860312156143e357600080fd5b83356143ee816140db565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b8181101561443b5783518352928401929184019160010161441f565b50909695505050505050565b6000806040838503121561445a57600080fd5b8235915061446a6020840161436e565b90509250929050565b803560ff811681146142fc57600080fd5b6000806040838503121561449757600080fd5b6144a083614473565b915061446a60208401614473565b602081016144bb83614227565b91905290565b6000602082840312156144d357600080fd5b61199682614473565b600080604083850312156144ef57600080fd5b50508035926020909101359150565b60008060006060848603121561451357600080fd5b833561451e816140db565b9250602084013591506145336040850161436e565b90509250925092565b6000806040838503121561454f57600080fd5b823561455a816140db565b9150602083013561456a8161410d565b809150509250929050565b6000806040838503121561458857600080fd5b8235614593816140db565b946020939093013593505050565b600060a082840312156145b357600080fd5b50919050565b6000806000806000808688036102208112156145d457600080fd5b60808112156145e257600080fd5b508695506145f388608089016145a1565b945061012087013593506101408701359250610160870135915061461b8861018089016145a1565b90509295509295509295565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561129b5761129b614641565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000602082840312156146b357600080fd5b5051919050565b8181038181111561129b5761129b614641565b6001600160a01b0383168152604081016146e683614237565b8260208301529392505050565b60006020828403121561470557600080fd5b81516119968161410d565b6020808252603c908201527f5468697320616374696f6e2063616e6e6f7420626520706572666f726d65642060408201527f7768696c652074686520636f6e74726163742069732070617573656400000000606082015260800190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016147ab576147ab614641565b5060010190565b808202811582820484141761129b5761129b614641565b634e487b7160e01b600052601260045260246000fd5b6000826147ee576147ee6147c9565b500490565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561484257600080fd5b611996826142e8565b60006020828403121561485d57600080fd5b61199682614301565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b038416815260208101839052606081016148af83614227565b826040830152949350505050565b60c081016148ca88614227565b96815294151560208601529215156040850152606084019190915260ff90811660808401521660a09091015290565b60005b838110156149145781810151838201526020016148fc565b50506000910152565b60208152815160208201526020820151604082015261ffff60408301511660608201526000606083015163ffffffff80821660808501528060808601511660a0850152505060a083015160c08084015280518060e085015261010061498882828701602086016148f9565b80601f19601f840116860101935050505092915050565b6000602082840312156149b157600080fd5b8151611996816140db565b92835260208301919091526001600160a01b0316604082015260600190565b60ff818116838216019081111561129b5761129b614641565b600060ff831680614a0757614a076147c9565b8060ff84160691505092915050565b60008251614a288184602087016148f9565b9190910192915050565b600082614a4157614a416147c9565b50069056feb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159ca26469706673582212208827239c0b3c05d6a3bc172522580d24c58c223ef279c19b5d0af67614eeaac464736f6c63430008140033
🤖 Code Reader
Generate instant answers for your smart contract questions using Al Models. Read more.
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 30 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.

