[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint8", "name": "__decimals", "type": "uint8" }, { "internalType": "uint256", "name": "_totalSupply", "type": "uint256" }, { "internalType": "address", "name": "_marketingWallet", "type": "address" }, { "internalType": "address", "name": "_mainRouter", "type": "address" }, { "components": [ { "internalType": "uint24", "name": "sellLiquidityFee", "type": "uint24" }, { "internalType": "uint24", "name": "buyLiquidityFee", "type": "uint24" }, { "internalType": "uint24", "name": "sellMarketingFee", "type": "uint24" }, { "internalType": "uint24", "name": "buyMarketingFee", "type": "uint24" } ], "internalType": "struct SmolDogOnBase.Fee", "name": "_fee", "type": "tuple" }, { "internalType": "uint24", "name": "_feeDecrements", "type": "uint24" }, { "internalType": "uint256", "name": "_decrementInterval", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "ExcludedFromFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludedFromMaxTransactionAmount", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "mainRouter", "type": "address" }, { "indexed": false, "internalType": "address", "name": "mainPair", "type": "address" } ], "name": "MainRouterUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketingFeeTokens", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "marketingFeeBaseTokenSwapped", "type": "uint256" } ], "name": "MarketingFeeTaken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pair", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "SetAutomatedMarketMakerPair", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokensForLiquidity", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "baseTokenForLiquidity", "type": "uint256" } ], "name": "SwapAndLiquify", "type": "event" }, { "anonymous": false, "inputs": [], "name": "TradingEnabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint24", "name": "newSellLiquidityFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "newBuyLiquidityFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "oldSellLiquidityFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "oldBuyLiquidityFee", "type": "uint24" } ], "name": "UpdateLiquidityFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint24", "name": "newSellMarketingFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "newBuyMarketingFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "oldSellMarketingFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "oldBuyMarketingFee", "type": "uint24" } ], "name": "UpdateMarketingFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newMarketingWallet", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "newIsMarketingFeeBaseToken", "type": "bool" }, { "indexed": true, "internalType": "address", "name": "oldMarketingWallet", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "oldIsMarketingFeeBaseToken", "type": "bool" } ], "name": "UpdateMarketingWallet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newMaxTransactionAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldMaxTransactionAmount", "type": "uint256" } ], "name": "UpdateMaxTransactionAmount", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newMaxWallet", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldMaxWallet", "type": "uint256" } ], "name": "UpdateMaxWallet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newMinAmountToTakeFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldMinAmountToTakeFee", "type": "uint256" } ], "name": "UpdateMinAmountToTakeFee", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "automatedMarketMakerPairs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decrementInterval", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "excludeFromFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "excludeFromMaxTransactionAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "fee", "outputs": [ { "internalType": "uint24", "name": "sellLiquidityFee", "type": "uint24" }, { "internalType": "uint24", "name": "buyLiquidityFee", "type": "uint24" }, { "internalType": "uint24", "name": "sellMarketingFee", "type": "uint24" }, { "internalType": "uint24", "name": "buyMarketingFee", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeDecrements", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isExcludedFromFee", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isExcludedFromMaxTransactionAmount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isMarketingFeeBaseToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mainPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mainRouter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketingWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTransactionAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minAmountToTakeFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setAutomatedMarketMakerPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingEnabledTimeStamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "_feeDecrements", "type": "uint24" }, { "internalType": "uint256", "name": "_decrementInterval", "type": "uint256" } ], "name": "updateDecrements", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "_sellLiquidityFee", "type": "uint24" }, { "internalType": "uint24", "name": "_buyLiquidityFee", "type": "uint24" } ], "name": "updateLiquidityFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_mainRouter", "type": "address" } ], "name": "updateMainPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "_sellMarketingFee", "type": "uint24" }, { "internalType": "uint24", "name": "_buyMarketingFee", "type": "uint24" } ], "name": "updateMarketingFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_marketingWallet", "type": "address" }, { "internalType": "bool", "name": "_isMarketingFeeBaseToken", "type": "bool" } ], "name": "updateMarketingWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxTransactionAmount", "type": "uint256" } ], "name": "updateMaxTransactionAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxWallet", "type": "uint256" } ], "name": "updateMaxWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_minAmountToTakeFee", "type": "uint256" } ], "name": "updateMinAmountToTakeFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawETH", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "withdrawToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b50604051620039d5380380620039d5833981016040819052620000349162000b9f565b8888600362000044838262000d12565b50600462000053828262000d12565b505050620000706200006a6200075760201b60201c565b6200075b565b6007805460ff191660ff89161790556200008b3387620007ad565b6001600160a01b038516620000e75760405162461bcd60e51b815260206004820152601d60248201527f6d61726b6574696e672077616c6c65742063616e206e6f74206265203000000060448201526064015b60405180910390fd5b6001600160a01b0384166200013f5760405162461bcd60e51b815260206004820152601b60248201527f526f7574657220616464726573732063616e206e6f74206265203000000000006044820152606401620000de565b600a80546001600160a01b038781166001600160a81b031990921691909117600160a01b908117928390556040805191840460ff161515825260006020830181905293909216917fc8dfdd9b91ac62ee1bd8be3541ea02d8e584461c794c6e49e94ccf21c71ebcca910160405180910390a3600e80546001600160a01b0319166001600160a01b038616179055806200020a5760405162461bcd60e51b815260206004820152600c60248201526b0696e74657276616c203e20360a41b6044820152606401620000de565b600e54620002269030906001600160a01b031660001962000870565b600e54600f54604080516001600160a01b0393841681529290911660208301527f751e970af297d4e5267dabcea7b369ad737038498379b46448d190d9e261f3c5910160405180910390a1600e60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002eb919062000dde565b6001600160a01b031663c9c6539630600e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000374919062000dde565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620003c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e8919062000dde565b600f80546001600160a01b0319166001600160a01b0392909216919091179055600c86905560408051878152600060208201527fff64d41f60feb77d52f64ae64a9fc3929d57a89d0cc55728762468bae5e0fe52910160405180910390a1600d86905560408051878152600060208201527f35eec0711af6fbe3039535323be51b57996b6945b0d55862607c7a02e52e4507910160405180910390a182516006805460208087015162ffffff94851665ffffffffffff19909316929092176301000000928516830217928390556040805184861681529290930490931692810192909252600090820181905260608201527fdec183740138e3a28dfd6f973ecd3bf00cd5d9b2544f6763c0a87f721444c5d19060800160405180910390a16040838101516006805460608088015165ffffffffffff60301b19909216660100000000000062ffffff958616810262ffffff60481b19169190911769010000000000000000009386168402179384905585519084048516815291909204909216602083015260009282018390528101919091527f70748cb9cb3bcb4dfd4fff8f2a6f23f636067b33e0244631f9abd38159c1de859060800160405180910390a16007805464ffffff000019166201000062ffffff8516021790556009819055620005d46127108762000e03565b600b81905560408051918252600060208301527f772a06bc936eb749842080c472181e970cd4f23bd1ab7d0b84a80aec26910434910160405180910390a13060009081526011602081905260408083208054600160ff199182168117909255600a546001600160a01b031685529184208054909216811790915591620006573390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790557f97847ee99463795296047093514439c3127772df3715e628aa85601cf85417168054861660019081179091556010948590527f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b6980548716821790553082528382208054871682179055600a549092168152918220805490941681179093556200070c3390565b6001600160a01b0390811682526020820192909252604001600020805460ff191692151592909217909155600f54620007489116600162000998565b50505050505050505062000e4e565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620008055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620000de565b806002600082825462000819919062000e26565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038316620008d45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620000de565b6001600160a01b038216620009375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620000de565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166000818152601260209081526040808320805486151560ff199182168117909255601084529382902080549094168117909355519182527fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab910160405180910390a25050565b505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000a4e5762000a4e62000a0d565b604052919050565b600082601f83011262000a6857600080fd5b81516001600160401b0381111562000a845762000a8462000a0d565b602062000a9a601f8301601f1916820162000a23565b828152858284870101111562000aaf57600080fd5b60005b8381101562000acf57858101830151828201840152820162000ab2565b506000928101909101919091529392505050565b80516001600160a01b038116811462000afb57600080fd5b919050565b805162ffffff8116811462000afb57600080fd5b60006080828403121562000b2757600080fd5b604051608081016001600160401b038111828210171562000b4c5762000b4c62000a0d565b60405290508062000b5d8362000b00565b815262000b6d6020840162000b00565b602082015262000b806040840162000b00565b604082015262000b936060840162000b00565b60608201525092915050565b60008060008060008060008060006101808a8c03121562000bbf57600080fd5b89516001600160401b038082111562000bd757600080fd5b62000be58d838e0162000a56565b9a5060208c015191508082111562000bfc57600080fd5b5062000c0b8c828d0162000a56565b98505060408a015160ff8116811462000c2357600080fd5b60608b0151909750955062000c3b60808b0162000ae3565b945062000c4b60a08b0162000ae3565b935062000c5c8b60c08c0162000b14565b925062000c6d6101408b0162000b00565b91506101608a015190509295985092959850929598565b600181811c9082168062000c9957607f821691505b60208210810362000cba57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000a0857600081815260208120601f850160051c8101602086101562000ce95750805b601f850160051c820191505b8181101562000d0a5782815560010162000cf5565b505050505050565b81516001600160401b0381111562000d2e5762000d2e62000a0d565b62000d468162000d3f845462000c84565b8462000cc0565b602080601f83116001811462000d7e576000841562000d655750858301515b600019600386901b1c1916600185901b17855562000d0a565b600085815260208120601f198616915b8281101562000daf5788860151825594840194600190910190840162000d8e565b508582101562000dce5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000df157600080fd5b62000dfc8262000ae3565b9392505050565b60008262000e2157634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000e4857634e487b7160e01b600052601160045260246000fd5b92915050565b612b778062000e5e6000396000f3fe6080604052600436106102555760003560e01c80639a7a23d611610139578063d5bf72b7116100b6578063e2669cf51161007a578063e2669cf51461074c578063e9481eee1461076c578063ec44adc81461079c578063f2fde38b146107bc578063f8b45b05146107dc578063fc59d23d146107f257600080fd5b8063d5bf72b71461066d578063dd62ed3e1461068d578063ddca3f43146106ad578063df8408fe14610717578063e086e5ec1461073757600080fd5b8063b62496f5116100fd578063b62496f5146105d1578063b95d11be14610601578063c8c8ebe414610621578063cda7dd7b14610637578063cf188ad01461064d57600080fd5b80639a7a23d61461053b5780639b3e45b41461055b578063a457c2d714610571578063a9059cbb14610591578063aa498023146105b157600080fd5b80635342acb4116101d257806375f0a8741161019657806375f0a8741461045a57806385af30c51461049257806389476069146104b25780638c40044a146104d25780638da5cb5b1461050857806395d89b411461052657600080fd5b80635342acb4146103b457806357e62b98146103e457806370a0823114610405578063715018a61461042557806373b9e82c1461043a57600080fd5b8063293230b811610219578063293230b81461031d5780632ae2f12114610332578063313ce5671461035257806339509351146103745780634707c5511461039457600080fd5b806306fdde0314610261578063095ea7b31461028c57806318160ddd146102bc5780631c499ab0146102db57806323b872dd146102fd57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610808565b60405161028391906126bf565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004612707565b61089a565b6040519015158152602001610283565b3480156102c857600080fd5b506002545b604051908152602001610283565b3480156102e757600080fd5b506102fb6102f6366004612733565b6108b4565b005b34801561030957600080fd5b506102ac61031836600461274c565b610972565b34801561032957600080fd5b506102fb610996565b34801561033e57600080fd5b506102fb61034d36600461279b565b610a08565b34801561035e57600080fd5b5060075460405160ff9091168152602001610283565b34801561038057600080fd5b506102ac61038f366004612707565b610aca565b3480156103a057600080fd5b506102fb6103af36600461279b565b610aec565b3480156103c057600080fd5b506102ac6103cf3660046127d4565b60116020526000908152604090205460ff1681565b3480156103f057600080fd5b50600a546102ac90600160a01b900460ff1681565b34801561041157600080fd5b506102cd6104203660046127d4565b610c02565b34801561043157600080fd5b506102fb610c1d565b34801561044657600080fd5b506102fb610455366004612733565b610c31565b34801561046657600080fd5b50600a5461047a906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b34801561049e57600080fd5b50600f5461047a906001600160a01b031681565b3480156104be57600080fd5b506102fb6104cd3660046127d4565b610cc4565b3480156104de57600080fd5b506007546104f49062010000900462ffffff1681565b60405162ffffff9091168152602001610283565b34801561051457600080fd5b506005546001600160a01b031661047a565b34801561053257600080fd5b50610276610da3565b34801561054757600080fd5b506102fb61055636600461279b565b610db2565b34801561056757600080fd5b506102cd60095481565b34801561057d57600080fd5b506102ac61058c366004612707565b610e5e565b34801561059d57600080fd5b506102ac6105ac366004612707565b610ed9565b3480156105bd57600080fd5b506102fb6105cc366004612733565b610ee7565b3480156105dd57600080fd5b506102ac6105ec3660046127d4565b60126020526000908152604090205460ff1681565b34801561060d57600080fd5b506102fb61061c3660046127d4565b610fab565b34801561062d57600080fd5b506102cd600d5481565b34801561064357600080fd5b506102cd60085481565b34801561065957600080fd5b50600e5461047a906001600160a01b031681565b34801561067957600080fd5b506102fb610688366004612809565b6111d5565b34801561069957600080fd5b506102cd6106a836600461283c565b611328565b3480156106b957600080fd5b506006546106e89062ffffff8082169163010000008104821691600160301b8204811691600160481b90041684565b6040805162ffffff95861681529385166020850152918416918301919091529091166060820152608001610283565b34801561072357600080fd5b506102fb61073236600461279b565b611353565b34801561074357600080fd5b506102fb61140d565b34801561075857600080fd5b506102fb61076736600461286a565b6114c0565b34801561077857600080fd5b506102ac6107873660046127d4565b60106020526000908152604090205460ff1681565b3480156107a857600080fd5b506102fb6107b7366004612809565b61152d565b3480156107c857600080fd5b506102fb6107d73660046127d4565b611698565b3480156107e857600080fd5b506102cd600c5481565b3480156107fe57600080fd5b506102cd600b5481565b60606003805461081790612886565b80601f016020809104026020016040519081016040528092919081815260200182805461084390612886565b80156108905780601f1061086557610100808354040283529160200191610890565b820191906000526020600020905b81548152906001019060200180831161087357829003601f168201915b5050505050905090565b6000336108a881858561170e565b60019150505b92915050565b6108bc611832565b6127106108c860025490565b6108d291906128d0565b8110156109305760405162461bcd60e51b815260206004820152602160248201527f6d617857616c6c6574203e3d20746f74616c20737570706c79202f20313030306044820152600360fc1b60648201526084015b60405180910390fd5b600c546040805183815260208101929092527fff64d41f60feb77d52f64ae64a9fc3929d57a89d0cc55728762468bae5e0fe52910160405180910390a1600c55565b60003361098085828561188c565b61098b858585611906565b506001949350505050565b61099e611832565b600854156109d95760405162461bcd60e51b8152602060048201526008602482015267456e61626c65642160c01b6044820152606401610927565b426008556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a1565b610a10611832565b6001600160a01b03821660009081526010602052604090205481151560ff909116151503610a6a5760405162461bcd60e51b8152602060048201526007602482015266616c726561647960c81b6044820152606401610927565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f82170bbd72c16b30c410014b7382121a699ed119a182e48a0b6cadcc89104ac991015b60405180910390a25050565b6000336108a8818585610add8383611328565b610ae791906128f2565b61170e565b610af4611832565b6001600160a01b038216610b4a5760405162461bcd60e51b815260206004820152601b60248201527f6d61726b6574696e672077616c6c65742063616e2774206265203000000000006044820152606401610927565b600a54604080518315158152600160a01b830460ff16151560208201526001600160a01b03928316928516917fc8dfdd9b91ac62ee1bd8be3541ea02d8e584461c794c6e49e94ccf21c71ebcca910160405180910390a3600a8054911515600160a01b026001600160a81b03199092166001600160a01b039093169283179190911790556000908152601160209081526040808320805460ff1990811660019081179092556010909352922080549091169091179055565b6001600160a01b031660009081526020819052604090205490565b610c25611832565b610c2f6000611d1e565b565b610c39611832565b60008111610c825760405162461bcd60e51b815260206004820152601660248201527506d696e416d6f756e74546f54616b65466565203e20360541b6044820152606401610927565b600b546040805183815260208101929092527f772a06bc936eb749842080c472181e970cd4f23bd1ab7d0b84a80aec26910434910160405180910390a1600b55565b610ccc611832565b6001600160a01b0381163003610d125760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b6044820152606401610927565b610da0610d276005546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f9190612905565b6001600160a01b0384169190611d70565b50565b60606004805461081790612886565b610dba611832565b6001600160a01b03821660009081526012602052604090205481151560ff909116151503610e505760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610927565b610e5a8282611dc7565b5050565b60003381610e6c8286611328565b905083811015610ecc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610927565b61098b828686840361170e565b6000336108a8818585611906565b610eef611832565b612710610efb60025490565b610f0591906128d0565b811015610f695760405162461bcd60e51b815260206004820152602c60248201527f6d61785472616e73616374696f6e416d6f756e74203e3d20746f74616c20737560448201526b070706c79202f2031303030360a41b6064820152608401610927565b600d546040805183815260208101929092527f35eec0711af6fbe3039535323be51b57996b6945b0d55862607c7a02e52e4507910160405180910390a1600d55565b610fb3611832565b600e546001600160a01b03828116911614610ff157610fd5308260001961170e565b600e80546001600160a01b0319166001600160a01b0383161790555b600e60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611044573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611068919061291e565b6001600160a01b031663c9c6539630600e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ee919061291e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561113b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115f919061291e565b600f80546001600160a01b0319166001600160a01b03928316908117909155600e546040805191909316815260208101919091527f751e970af297d4e5267dabcea7b369ad737038498379b46448d190d9e261f3c5910160405180910390a1600f54610da0906001600160a01b03166001611dc7565b6111dd611832565b600654620493e0906111fb90600160301b900462ffffff168461293b565b62ffffff1611156112405760405162461bcd60e51b815260206004820152600f60248201526e73656c6c20666565203c3d2033302560881b6044820152606401610927565b600654620493e09061125e90600160481b900462ffffff168361293b565b62ffffff1611156112a25760405162461bcd60e51b815260206004820152600e60248201526d62757920666565203c3d2033302560901b6044820152606401610927565b6006546040805162ffffff858116825284811660208301528084168284015263010000009093049092166060830152517fdec183740138e3a28dfd6f973ecd3bf00cd5d9b2544f6763c0a87f721444c5d19181900360800190a16006805462ffffff92831663010000000265ffffffffffff199091169290931691909117919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61135b611832565b6001600160a01b03821660009081526011602052604090205481151560ff9091161515036113b55760405162461bcd60e51b8152602060048201526007602482015266616c726561647960c81b6044820152606401610927565b6001600160a01b038216600081815260116020908152604091829020805460ff191685151590811790915591519182527f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa99101610abe565b611415611832565b60006114296005546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114611473576040519150601f19603f3d011682016040523d82523d6000602084013e611478565b606091505b5050905080610da05760405162461bcd60e51b815260206004820152601460248201527311985a5b1959081a5b881dda5d1a191c985dd85b60621b6044820152606401610927565b6114c8611832565b600081116115075760405162461bcd60e51b815260206004820152600c60248201526b0696e74657276616c203e20360a41b6044820152606401610927565b6007805462ffffff909316620100000264ffffff00001990931692909217909155600955565b611535611832565b600654620493e09061154c9062ffffff168461293b565b62ffffff1611156115915760405162461bcd60e51b815260206004820152600f60248201526e73656c6c20666565203c3d2033302560881b6044820152606401610927565b600654620493e0906115af906301000000900462ffffff168361293b565b62ffffff1611156115f35760405162461bcd60e51b815260206004820152600e60248201526d62757920666565203c3d2033302560901b6044820152606401610927565b6006546040805162ffffff85811682528481166020830152600160301b8404811682840152600160481b9093049092166060830152517f70748cb9cb3bcb4dfd4fff8f2a6f23f636067b33e0244631f9abd38159c1de859181900360800190a1600680546bffffffffffff0000000000001916600160301b62ffffff948516026bffffff000000000000000000191617600160481b9290931691909102919091179055565b6116a0611832565b6001600160a01b0381166117055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610927565b610da081611d1e565b6001600160a01b0383166117705760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610927565b6001600160a01b0382166117d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610927565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314610c2f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610927565b60006118988484611328565b9050600019811461190057818110156118f35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610927565b611900848484840361170e565b50505050565b6001600160a01b03831661192c5760405162461bcd60e51b81526004016109279061295e565b6001600160a01b0382166119525760405162461bcd60e51b8152600401610927906129a3565b600061195d30610c02565b9050600060145460135461197191906128f2565b90506000600b5482101580156119875750828211155b600754909150610100900460ff161580156119b75750600f546000906119b5906001600160a01b0316610c02565b115b80156119c05750805b80156119e457506001600160a01b03851660009081526012602052604090205460ff165b156119f1576119f1611e30565b6007546000908190610100900460ff16158015611a2757506001600160a01b03881660009081526011602052604090205460ff16155b8015611a4c57506001600160a01b03871660009081526011602052604090205460ff16155b15611c0e57600060085411611a915760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08195b98589b195960aa1b6044820152606401610927565b6001600160a01b03881660009081526012602052604090205460ff1615611b2857600654620f424090611acf906301000000900462ffffff166120c7565b611ade9062ffffff16886129e6565b611ae891906128d0565b600654909250620f424090611b0890600160481b900462ffffff166120c7565b611b179062ffffff16886129e6565b611b2191906128d0565b9050611bb4565b6001600160a01b03871660009081526012602052604090205460ff1615611bb457600654620f424090611b5f9062ffffff166120c7565b611b6e9062ffffff16886129e6565b611b7891906128d0565b600654909250620f424090611b9890600160301b900462ffffff166120c7565b611ba79062ffffff16886129e6565b611bb191906128d0565b90505b6000611bc082846128f2565b90508015611bd357611bd3893083612131565b81611bde84896129fd565b611be891906129fd565b965082601354611bf891906128f2565b601355601454611c099083906128f2565b601455505b611c19888888612131565b600754610100900460ff16611d14576001600160a01b03881660009081526010602052604090205460ff16611c9a57600d54861115611c9a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2065786365656473207472616e73666572206c696d69740000006044820152606401610927565b6001600160a01b03871660009081526010602052604090205460ff16611d1457600c54611cc688610c02565b1115611d145760405162461bcd60e51b815260206004820152601f60248201527f45524332303a2065786365656473206d61782077616c6c6574206c696d6974006044820152606401610927565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611dc290849061225b565b505050565b6001600160a01b0382166000818152601260209081526040808320805486151560ff199182168117909255601084529382902080549094168117909355519182527fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab9101610abe565b6007805461ff001916610100179055601354600090611e51906002906128d0565b600a549091504790600090600160a01b900460ff1615611f6a57600060145484611e7b91906128f2565b90508015611e8c57611e8c81612330565b6000611e9884476129fd565b905060008260145483611eab91906129e6565b611eb591906128d0565b9050611ec181836129fd565b93508015611f6257600a546040516000916001600160a01b03169083908381818185875af1925050503d8060008114611f16576040519150601f19603f3d011682016040523d82523d6000602084013e611f1b565b606091505b505090508015611f60576040805160008152602081018490527f6f92bce3e91466137aa4d5474fe565c002872fb18ed6af4a856959be0a81277a910160405180910390a15b505b505050611fe8565b8215611f7957611f7983612330565b611f8382476129fd565b60145490915015611fe857600a54601454611fab9130916001600160a01b0390911690611906565b60145460408051918252600060208301527f6f92bce3e91466137aa4d5474fe565c002872fb18ed6af4a856959be0a81277a910160405180910390a15b600083118015611ff85750600081115b15612041576120078382612471565b60408051848152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b60006014819055601381905561205630610c02565b11156120b75760006120706005546001600160a01b031690565b6001600160a01b0316146120a7576120a2306120946005546001600160a01b031690565b61209d30610c02565b611906565b6120b7565b6120b73061dead61209d30610c02565b50506007805461ff001916905550565b600080600954600854426120db91906129fd565b6120e591906128d0565b6007546120fd919062010000900462ffffff16612a10565b90508062ffffff168362ffffff1611156121225761211b8184612a37565b9392505050565b50600092915050565b50919050565b6001600160a01b0383166121575760405162461bcd60e51b81526004016109279061295e565b6001600160a01b03821661217d5760405162461bcd60e51b8152600401610927906129a3565b6001600160a01b038316600090815260208190526040902054818110156121f55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610927565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611900565b60006122b0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661250b9092919063ffffffff16565b90508051600014806122d15750808060200190518101906122d19190612a53565b611dc25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610927565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061236557612365612a70565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156123be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e2919061291e565b816001815181106123f5576123f5612a70565b6001600160a01b039283166020918202929092010152600e5460405163791ac94760e01b815291169063791ac9479061243b908590600090869030904290600401612a86565b600060405180830381600087803b15801561245557600080fd5b505af1158015612469573d6000803e3d6000fd5b505050505050565b600e5460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156124df573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125049190612af7565b5050505050565b606061251a8484600085612522565b949350505050565b6060824710156125835760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610927565b600080866001600160a01b0316858760405161259f9190612b25565b60006040518083038185875af1925050503d80600081146125dc576040519150601f19603f3d011682016040523d82523d6000602084013e6125e1565b606091505b50915091506125f2878383876125fd565b979650505050505050565b6060831561266c578251600003612665576001600160a01b0385163b6126655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610927565b508161251a565b61251a83838151156126815781518083602001fd5b8060405162461bcd60e51b815260040161092791906126bf565b60005b838110156126b657818101518382015260200161269e565b50506000910152565b60208152600082518060208401526126de81604085016020870161269b565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610da057600080fd5b6000806040838503121561271a57600080fd5b8235612725816126f2565b946020939093013593505050565b60006020828403121561274557600080fd5b5035919050565b60008060006060848603121561276157600080fd5b833561276c816126f2565b9250602084013561277c816126f2565b929592945050506040919091013590565b8015158114610da057600080fd5b600080604083850312156127ae57600080fd5b82356127b9816126f2565b915060208301356127c98161278d565b809150509250929050565b6000602082840312156127e657600080fd5b813561211b816126f2565b803562ffffff8116811461280457600080fd5b919050565b6000806040838503121561281c57600080fd5b612825836127f1565b9150612833602084016127f1565b90509250929050565b6000806040838503121561284f57600080fd5b823561285a816126f2565b915060208301356127c9816126f2565b6000806040838503121561287d57600080fd5b612725836127f1565b600181811c9082168061289a57607f821691505b60208210810361212b57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000826128ed57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108ae576108ae6128ba565b60006020828403121561291757600080fd5b5051919050565b60006020828403121561293057600080fd5b815161211b816126f2565b62ffffff818116838216019080821115612957576129576128ba565b5092915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b80820281158282048414176108ae576108ae6128ba565b818103818111156108ae576108ae6128ba565b62ffffff818116838216028082169190828114612a2f57612a2f6128ba565b505092915050565b62ffffff828116828216039080821115612957576129576128ba565b600060208284031215612a6557600080fd5b815161211b8161278d565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ad65784516001600160a01b031683529383019391830191600101612ab1565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612b0c57600080fd5b8351925060208401519150604084015190509250925092565b60008251612b3781846020870161269b565b919091019291505056fea264697066735822122025d5df4e6f14332c763af794d0e2de7fe72290403287059c9d8680d2d930f7bc64736f6c63430008130033000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000001a8081ee82be211970e16ef05b33dbb99683481d0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000493e000000000000000000000000000000000000000000000000000000000000493e000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000011536d616c6c20446f67206f6e2042617365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524534d4f47000000000000000000000000000000000000000000000000000000
0xa264697066735822122025d5df4e6f14332c763af794d0e2de7fe72290403287059c9d8680d2d930f7bc64736f6c63430008130033000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000001a8081ee82be211970e16ef05b33dbb99683481d0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000493e000000000000000000000000000000000000000000000000000000000000493e000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000011536d616c6c20446f67206f6e2042617365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524534d4f47000000000000000000000000000000000000000000000000000000