[ { "inputs": [], "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": "sniper", "type": "address" } ], "name": "BoughtEarly", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludeFromFees", "type": "event" }, { "anonymous": false, "inputs": [], "name": "LimitsRemoved", "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": true, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "SetAutomatedMarketMakerPair", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokensSwapped", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethReceived", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokensIntoLiquidity", "type": "uint256" } ], "name": "SwapAndLiquify", "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": true, "internalType": "address", "name": "newAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" } ], "name": "UpdateUniswapV2Router", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "devWalletUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "lpWalletUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "marketingWalletUpdated", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_liquidityFee", "type": "uint256" }, { "internalType": "uint256", "name": "_devFee", "type": "uint256" } ], "name": "BuyFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newWallet", "type": "address" } ], "name": "DevWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newLPWallet", "type": "address" } ], "name": "LPWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newMarketingWallet", "type": "address" } ], "name": "MarketingWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_liquidityFee", "type": "uint256" }, { "internalType": "uint256", "name": "_devFee", "type": "uint256" } ], "name": "SellFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_isExcludedMaxTransactionAmount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "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": "buyDevFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyLiquidityFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyMarketingFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyTotalFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "deadAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "devWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "enableTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "excludeFromFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "updAds", "type": "address" }, { "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "excludeFromMaxTransaction", "outputs": [], "stateMutability": "nonpayable", "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": "account", "type": "address" } ], "name": "isExcludedFromFees", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "limitsInEffect", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lpWallet", "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": "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": "removeLimits", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sellDevFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellLiquidityFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellMarketingFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellTotalFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setAutomatedMarketMakerPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapTokensAtAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensForDev", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensForLiquidity", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensForMarketing", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "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": [], "name": "uniswapV2Pair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uniswapV2Router", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "updateMaxTxnAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "updateMaxWalletAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "updateSwapEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "updateSwapTokensAtAmount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c06040526001600c5f6101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff02191690831515021790555034801561005f575f80fd5b506040518060400160405280600881526020017f4574686572656f6e0000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f454f4e000000000000000000000000000000000000000000000000000000000081525081600390816100db9190610d38565b5080600490816100eb9190610d38565b50505061010a6100ff6105f360201b60201c565b6105fa60201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506101338160016106bd60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d49190610e65565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610239573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025d9190610e65565b6040518363ffffffff1660e01b815260040161027a929190610e9f565b6020604051808303815f875af1158015610296573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ba9190610e65565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505061030060a05160016106bd60201b60201c565b61031360a051600161079d60201b60201c565b5f600a90505f80600f90505f600a90505f80600f90505f6a115eec47f6cf7e35000000905060646002826103479190610ef3565b6103519190610f61565b60098190555060646002826103669190610ef3565b6103709190610f61565b600b819055506127106014826103869190610ef3565b6103909190610f61565b600a8190555086600e8190555085600f8190555084601081905550601054600f54600e546103be9190610f91565b6103c89190610f91565b600d819055508360128190555082601381905550816014819055506014546013546012546103f69190610f91565b6104009190610f91565b601181905550736e6bb212c692a916932d71fb0fd9a6b05e661c6c60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736e6bb212c692a916932d71fb0fd9a6b05e661c6c60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061050c6104ff61083b60201b60201c565b600161086360201b60201c565b61051d30600161086360201b60201c565b61053061dead600161086360201b60201c565b61056260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161086360201b60201c565b61058061057361083b60201b60201c565b60016106bd60201b60201c565b6105913060016106bd60201b60201c565b6105a461dead60016106bd60201b60201c565b6105d660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016106bd60201b60201c565b6105e6338261099160201b60201c565b50505050505050506110ff565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6106cb6105f360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166106ef61083b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614610745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073c9061101e565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108716105f360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1661089561083b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146108eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e29061101e565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516109859190611056565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f6906110b9565b60405180910390fd5b610a105f8383610af460201b60201c565b8060025f828254610a219190610f91565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a739190610f91565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ad791906110e6565b60405180910390a3610af05f8383610af960201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610b7957607f821691505b602082108103610b8c57610b8b610b35565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610bee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610bb3565b610bf88683610bb3565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610c3c610c37610c3284610c10565b610c19565b610c10565b9050919050565b5f819050919050565b610c5583610c22565b610c69610c6182610c43565b848454610bbf565b825550505050565b5f90565b610c7d610c71565b610c88818484610c4c565b505050565b5b81811015610cab57610ca05f82610c75565b600181019050610c8e565b5050565b601f821115610cf057610cc181610b92565b610cca84610ba4565b81016020851015610cd9578190505b610ced610ce585610ba4565b830182610c8d565b50505b505050565b5f82821c905092915050565b5f610d105f1984600802610cf5565b1980831691505092915050565b5f610d288383610d01565b9150826002028217905092915050565b610d4182610afe565b67ffffffffffffffff811115610d5a57610d59610b08565b5b610d648254610b62565b610d6f828285610caf565b5f60209050601f831160018114610da0575f8415610d8e578287015190505b610d988582610d1d565b865550610dff565b601f198416610dae86610b92565b5f5b82811015610dd557848901518255600182019150602085019450602081019050610db0565b86831015610df25784890151610dee601f891682610d01565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e3482610e0b565b9050919050565b610e4481610e2a565b8114610e4e575f80fd5b50565b5f81519050610e5f81610e3b565b92915050565b5f60208284031215610e7a57610e79610e07565b5b5f610e8784828501610e51565b91505092915050565b610e9981610e2a565b82525050565b5f604082019050610eb25f830185610e90565b610ebf6020830184610e90565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610efd82610c10565b9150610f0883610c10565b9250828202610f1681610c10565b91508282048414831517610f2d57610f2c610ec6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610f6b82610c10565b9150610f7683610c10565b925082610f8657610f85610f34565b5b828204905092915050565b5f610f9b82610c10565b9150610fa683610c10565b9250828201905080821115610fbe57610fbd610ec6565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611008602083610fc4565b915061101382610fd4565b602082019050919050565b5f6020820190508181035f83015261103581610ffc565b9050919050565b5f8115159050919050565b6110508161103c565b82525050565b5f6020820190506110695f830184611047565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6110a3601f83610fc4565b91506110ae8261106f565b602082019050919050565b5f6020820190508181035f8301526110d081611097565b9050919050565b6110e081610c10565b82525050565b5f6020820190506110f95f8301846110d7565b92915050565b60805160a051614b8a61114a5f395f818161130c015261191201525f8181610e2a015281816136430152818161372201528181613749015281816137df01526138060152614b8a5ff3fe608060405260043610610338575f3560e01c80638a8c523c116101aa578063b62496f5116100f6578063d85ba06311610094578063f11a24d31161006e578063f11a24d314610bff578063f2fde38b14610c29578063f637434214610c51578063f8b45b0514610c7b5761033f565b8063d85ba06314610b6f578063dd62ed3e14610b99578063e2f4560514610bd55761033f565b8063c18bc195116100d0578063c18bc19514610ab9578063c8c8ebe414610ae1578063ce6818fe14610b0b578063d257b34f14610b335761033f565b8063b62496f514610a2b578063bbc0c74214610a67578063c024666814610a915761033f565b80639a7a23d611610163578063a0d82dc51161013d578063a0d82dc514610961578063a457c2d71461098b578063a9059cbb146109c7578063a9c89ea614610a035761033f565b80639a7a23d6146108e55780639c3b4fdc1461090d5780639fccce32146109375761033f565b80638a8c523c146107ff5780638da5cb5b146108155780638ea5220f1461083f5780639213691314610869578063924de9b71461089357806395d89b41146108bb5761033f565b806339509351116102845780636ddd171311610222578063751039fc116101fc578063751039fc146107595780637571336a1461078357806375f0a874146107ab5780637bce5a04146107d55761033f565b80636ddd1713146106dd57806370a0823114610707578063715018a6146107435761033f565b80634a62bb651161025e5780634a62bb65146106235780634fbee1931461064d5780636303516c146106895780636a486a8e146106b35761033f565b80633950935114610595578063499dc9dd146105d157806349bd5a5e146105f95761033f565b80631a8145bb116102f157806322515a09116102cb57806322515a09146104dd57806323b872dd1461050557806327c8f83514610541578063313ce5671461056b5761033f565b80631a8145bb146104615780631f3fed8f1461048b578063203e727e146104b55761033f565b806306fdde0314610343578063095ea7b31461036d57806310d5de53146103a957806316802f16146103e55780631694505e1461040d57806318160ddd146104375761033f565b3661033f57005b5f80fd5b34801561034e575f80fd5b50610357610ca5565b6040516103649190613941565b60405180910390f35b348015610378575f80fd5b50610393600480360381019061038e91906139f2565b610d35565b6040516103a09190613a4a565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca9190613a63565b610d52565b6040516103dc9190613a4a565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190613a8e565b610d6f565b005b348015610418575f80fd5b50610421610e28565b60405161042e9190613b39565b60405180910390f35b348015610442575f80fd5b5061044b610e4c565b6040516104589190613b61565b60405180910390f35b34801561046c575f80fd5b50610475610e55565b6040516104829190613b61565b60405180910390f35b348015610496575f80fd5b5061049f610e5b565b6040516104ac9190613b61565b60405180910390f35b3480156104c0575f80fd5b506104db60048036038101906104d69190613b7a565b610e61565b005b3480156104e8575f80fd5b5061050360048036038101906104fe9190613a63565b610f70565b005b348015610510575f80fd5b5061052b60048036038101906105269190613ba5565b6110aa565b6040516105389190613a4a565b60405180910390f35b34801561054c575f80fd5b5061055561119c565b6040516105629190613c04565b60405180910390f35b348015610576575f80fd5b5061057f6111a2565b60405161058c9190613c38565b60405180910390f35b3480156105a0575f80fd5b506105bb60048036038101906105b691906139f2565b6111aa565b6040516105c89190613a4a565b60405180910390f35b3480156105dc575f80fd5b506105f760048036038101906105f29190613a8e565b611251565b005b348015610604575f80fd5b5061060d61130a565b60405161061a9190613c04565b60405180910390f35b34801561062e575f80fd5b5061063761132e565b6040516106449190613a4a565b60405180910390f35b348015610658575f80fd5b50610673600480360381019061066e9190613a63565b611340565b6040516106809190613a4a565b60405180910390f35b348015610694575f80fd5b5061069d611392565b6040516106aa9190613c04565b60405180910390f35b3480156106be575f80fd5b506106c76113b7565b6040516106d49190613b61565b60405180910390f35b3480156106e8575f80fd5b506106f16113bd565b6040516106fe9190613a4a565b60405180910390f35b348015610712575f80fd5b5061072d60048036038101906107289190613a63565b6113d0565b60405161073a9190613b61565b60405180910390f35b34801561074e575f80fd5b50610757611415565b005b348015610764575f80fd5b5061076d61149c565b60405161077a9190613a4a565b60405180910390f35b34801561078e575f80fd5b506107a960048036038101906107a49190613c7b565b611565565b005b3480156107b6575f80fd5b506107bf611639565b6040516107cc9190613c04565b60405180910390f35b3480156107e0575f80fd5b506107e961165e565b6040516107f69190613b61565b60405180910390f35b34801561080a575f80fd5b50610813611664565b005b348015610820575f80fd5b50610829611718565b6040516108369190613c04565b60405180910390f35b34801561084a575f80fd5b50610853611740565b6040516108609190613c04565b60405180910390f35b348015610874575f80fd5b5061087d611765565b60405161088a9190613b61565b60405180910390f35b34801561089e575f80fd5b506108b960048036038101906108b49190613cb9565b61176b565b005b3480156108c6575f80fd5b506108cf611804565b6040516108dc9190613941565b60405180910390f35b3480156108f0575f80fd5b5061090b60048036038101906109069190613c7b565b611894565b005b348015610918575f80fd5b506109216119ac565b60405161092e9190613b61565b60405180910390f35b348015610942575f80fd5b5061094b6119b2565b6040516109589190613b61565b60405180910390f35b34801561096c575f80fd5b506109756119b8565b6040516109829190613b61565b60405180910390f35b348015610996575f80fd5b506109b160048036038101906109ac91906139f2565b6119be565b6040516109be9190613a4a565b60405180910390f35b3480156109d2575f80fd5b506109ed60048036038101906109e891906139f2565b611aa4565b6040516109fa9190613a4a565b60405180910390f35b348015610a0e575f80fd5b50610a296004803603810190610a249190613a63565b611ac1565b005b348015610a36575f80fd5b50610a516004803603810190610a4c9190613a63565b611bfb565b604051610a5e9190613a4a565b60405180910390f35b348015610a72575f80fd5b50610a7b611c18565b604051610a889190613a4a565b60405180910390f35b348015610a9c575f80fd5b50610ab76004803603810190610ab29190613c7b565b611c2b565b005b348015610ac4575f80fd5b50610adf6004803603810190610ada9190613b7a565b611d4d565b005b348015610aec575f80fd5b50610af5611e5c565b604051610b029190613b61565b60405180910390f35b348015610b16575f80fd5b50610b316004803603810190610b2c9190613a63565b611e62565b005b348015610b3e575f80fd5b50610b596004803603810190610b549190613b7a565b611f9c565b604051610b669190613a4a565b60405180910390f35b348015610b7a575f80fd5b50610b836120f0565b604051610b909190613b61565b60405180910390f35b348015610ba4575f80fd5b50610bbf6004803603810190610bba9190613ce4565b6120f6565b604051610bcc9190613b61565b60405180910390f35b348015610be0575f80fd5b50610be9612178565b604051610bf69190613b61565b60405180910390f35b348015610c0a575f80fd5b50610c1361217e565b604051610c209190613b61565b60405180910390f35b348015610c34575f80fd5b50610c4f6004803603810190610c4a9190613a63565b612184565b005b348015610c5c575f80fd5b50610c6561227a565b604051610c729190613b61565b60405180910390f35b348015610c86575f80fd5b50610c8f612280565b604051610c9c9190613b61565b60405180910390f35b606060038054610cb490613d4f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce090613d4f565b8015610d2b5780601f10610d0257610100808354040283529160200191610d2b565b820191905f5260205f20905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b5f610d48610d41612286565b848461228d565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b610d77612286565b73ffffffffffffffffffffffffffffffffffffffff16610d95611718565b73ffffffffffffffffffffffffffffffffffffffff1614610deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de290613dc9565b60405180910390fd5b826012819055508160138190555080601481905550601454601354601254610e139190613e14565b610e1d9190613e14565b601181905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b60165481565b60155481565b610e69612286565b73ffffffffffffffffffffffffffffffffffffffff16610e87611718565b73ffffffffffffffffffffffffffffffffffffffff1614610edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed490613dc9565b60405180910390fd5b670de0b6b3a76400006103e86001610ef3610e4c565b610efd9190613e47565b610f079190613eb5565b610f119190613eb5565b811015610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a90613f55565b60405180910390fd5b670de0b6b3a764000081610f679190613e47565b60098190555050565b610f78612286565b73ffffffffffffffffffffffffffffffffffffffff16610f96611718565b73ffffffffffffffffffffffffffffffffffffffff1614610fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe390613dc9565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f6110b6848484612450565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6110fd612286565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561117c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117390613fe3565b60405180910390fd5b61119085611188612286565b85840361228d565b60019150509392505050565b61dead81565b5f6012905090565b5f6112476111b6612286565b848460015f6111c3612286565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112429190613e14565b61228d565b6001905092915050565b611259612286565b73ffffffffffffffffffffffffffffffffffffffff16611277611718565b73ffffffffffffffffffffffffffffffffffffffff16146112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c490613dc9565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e546112f59190613e14565b6112ff9190613e14565b600d81905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61141d612286565b73ffffffffffffffffffffffffffffffffffffffff1661143b611718565b73ffffffffffffffffffffffffffffffffffffffff1614611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148890613dc9565b60405180910390fd5b61149a5f612ee0565b565b5f6114a5612286565b73ffffffffffffffffffffffffffffffffffffffff166114c3611718565b73ffffffffffffffffffffffffffffffffffffffff1614611519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151090613dc9565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a16001905090565b61156d612286565b73ffffffffffffffffffffffffffffffffffffffff1661158b611718565b73ffffffffffffffffffffffffffffffffffffffff16146115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890613dc9565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b61166c612286565b73ffffffffffffffffffffffffffffffffffffffff1661168a611718565b73ffffffffffffffffffffffffffffffffffffffff16146116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d790613dc9565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b611773612286565b73ffffffffffffffffffffffffffffffffffffffff16611791611718565b73ffffffffffffffffffffffffffffffffffffffff16146117e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117de90613dc9565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60606004805461181390613d4f565b80601f016020809104026020016040519081016040528092919081815260200182805461183f90613d4f565b801561188a5780601f106118615761010080835404028352916020019161188a565b820191905f5260205f20905b81548152906001019060200180831161186d57829003601f168201915b5050505050905090565b61189c612286565b73ffffffffffffffffffffffffffffffffffffffff166118ba611718565b73ffffffffffffffffffffffffffffffffffffffff1614611910576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190790613dc9565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361199e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199590614071565b60405180910390fd5b6119a88282612fa3565b5050565b60105481565b60175481565b60145481565b5f8060015f6119cb612286565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c906140ff565b60405180910390fd5b611a99611a90612286565b8585840361228d565b600191505092915050565b5f611ab7611ab0612286565b8484612450565b6001905092915050565b611ac9612286565b73ffffffffffffffffffffffffffffffffffffffff16611ae7611718565b73ffffffffffffffffffffffffffffffffffffffff1614611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3490613dc9565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a602052805f5260405f205f915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b611c33612286565b73ffffffffffffffffffffffffffffffffffffffff16611c51611718565b73ffffffffffffffffffffffffffffffffffffffff1614611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e90613dc9565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d419190613a4a565b60405180910390a25050565b611d55612286565b73ffffffffffffffffffffffffffffffffffffffff16611d73611718565b73ffffffffffffffffffffffffffffffffffffffff1614611dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc090613dc9565b60405180910390fd5b670de0b6b3a76400006103e86005611ddf610e4c565b611de99190613e47565b611df39190613eb5565b611dfd9190613eb5565b811015611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e369061418d565b60405180910390fd5b670de0b6b3a764000081611e539190613e47565b600b8190555050565b60095481565b611e6a612286565b73ffffffffffffffffffffffffffffffffffffffff16611e88611718565b73ffffffffffffffffffffffffffffffffffffffff1614611ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed590613dc9565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8e4fb3162b55d3fcdb7507ecfed5ab4ea5d2bd7494d0bb621d698a52ea3f74b460405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f611fa5612286565b73ffffffffffffffffffffffffffffffffffffffff16611fc3611718565b73ffffffffffffffffffffffffffffffffffffffff1614612019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201090613dc9565b60405180910390fd5b620186a06001612027610e4c565b6120319190613e47565b61203b9190613eb5565b82101561207d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120749061421b565b60405180910390fd5b6103e8600561208a610e4c565b6120949190613e47565b61209e9190613eb5565b8211156120e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d7906142a9565b60405180910390fd5b81600a8190555060019050919050565b600d5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b600f5481565b61218c612286565b73ffffffffffffffffffffffffffffffffffffffff166121aa611718565b73ffffffffffffffffffffffffffffffffffffffff1614612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f790613dc9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361226e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226590614337565b60405180910390fd5b61227781612ee0565b50565b60135481565b600b5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f2906143c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236090614453565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124439190613b61565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b5906144e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361252c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125239061456f565b60405180910390fd5b5f81036125435761253e83835f613041565b612edb565b600c5f9054906101000a900460ff1615612a275761255f611718565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125cd575061259d611718565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561260557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561263f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126585750600560149054906101000a900460ff16155b15612a2657600c60019054906101000a900460ff1661274c5760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061270c575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61274b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612742906145d7565b60405180910390fd5b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127e9575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561289057600954811115612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90614665565b60405180910390fd5b600b5461283f836113d0565b8261284a9190613e14565b111561288b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612882906146cd565b60405180910390fd5b612a25565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561292d575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561297c57600954811115612977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296e9061475b565b60405180910390fd5b612a24565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612a2357600b546129d6836113d0565b826129e19190613e14565b1115612a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a19906146cd565b60405180910390fd5b5b5b5b5b5b5f612a31306113d0565b90505f600a548210159050808015612a555750600c60029054906101000a900460ff165b8015612a6e5750600560149054906101000a900460ff16155b8015612ac15750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b14575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b67575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612baa576001600560146101000a81548160ff021916908315150217905550612b8f6132b6565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612c59575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612c62575f90505b5f8115612ecb57601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612cc057505f601154115b15612d8a57612ced6064612cdf6011548861355d90919063ffffffff16565b61357290919063ffffffff16565b905060115460135482612d009190613e47565b612d0a9190613eb5565b60165f828254612d1a9190613e14565b9250508190555060115460145482612d329190613e47565b612d3c9190613eb5565b60175f828254612d4c9190613e14565b9250508190555060115460125482612d649190613e47565b612d6e9190613eb5565b60155f828254612d7e9190613e14565b92505081905550612ea8565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612de157505f600d54115b15612ea757612e0e6064612e00600d548861355d90919063ffffffff16565b61357290919063ffffffff16565b9050600d54600f5482612e219190613e47565b612e2b9190613eb5565b60165f828254612e3b9190613e14565b92505081905550600d5460105482612e539190613e47565b612e5d9190613eb5565b60175f828254612e6d9190613e14565b92505081905550600d54600e5482612e859190613e47565b612e8f9190613eb5565b60155f828254612e9f9190613e14565b925050819055505b5b5f811115612ebc57612ebb873083613041565b5b8085612ec89190614779565b94505b612ed6878787613041565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a6906144e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361311d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131149061456f565b60405180910390fd5b613128838383613587565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156131ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a29061481c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132399190613e14565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161329d9190613b61565b60405180910390a36132b084848461358c565b50505050565b5f6132c0306113d0565b90505f6017546015546016546132d69190613e14565b6132e09190613e14565b90505f808314806132f057505f82145b156132fd5750505061355b565b5f6002836016548661330f9190613e47565b6133199190613eb5565b6133239190613eb5565b90505f613339828661359190919063ffffffff16565b90505f479050613348826135a6565b5f61335c824761359190919063ffffffff16565b90505f613386876133786015548561355d90919063ffffffff16565b61357290919063ffffffff16565b90505f6133b0886133a26017548661355d90919063ffffffff16565b61357290919063ffffffff16565b90505f8183856133c09190614779565b6133ca9190614779565b90505f6016819055505f6015819055505f60178190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161342690614867565b5f6040518083038185875af1925050503d805f8114613460576040519150601f19603f3d011682016040523d82523d5f602084013e613465565b606091505b5050809850505f8711801561347957505f81115b156134c65761348887826137d9565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186826016546040516134bd9392919061487b565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161350b90614867565b5f6040518083038185875af1925050503d805f8114613545576040519150601f19603f3d011682016040523d82523d5f602084013e61354a565b606091505b505080985050505050505050505050505b565b5f818361356a9190613e47565b905092915050565b5f818361357f9190613eb5565b905092915050565b505050565b505050565b5f818361359e9190614779565b905092915050565b5f600267ffffffffffffffff8111156135c2576135c16148b0565b5b6040519080825280602002602001820160405280156135f05781602001602082028036833780820191505090505b50905030815f81518110613607576136066148dd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136ce919061491e565b816001815181106136e2576136e16148dd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613747307f00000000000000000000000000000000000000000000000000000000000000008461228d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016137a8959493929190614a39565b5f604051808303815f87803b1580156137bf575f80fd5b505af11580156137d1573d5f803e3d5ffd5b505050505050565b613804307f00000000000000000000000000000000000000000000000000000000000000008461228d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161388996959493929190614a91565b60606040518083038185885af11580156138a5573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906138ca9190614b04565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613913826138d1565b61391d81856138db565b935061392d8185602086016138eb565b613936816138f9565b840191505092915050565b5f6020820190508181035f8301526139598184613909565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61398e82613965565b9050919050565b61399e81613984565b81146139a8575f80fd5b50565b5f813590506139b981613995565b92915050565b5f819050919050565b6139d1816139bf565b81146139db575f80fd5b50565b5f813590506139ec816139c8565b92915050565b5f8060408385031215613a0857613a07613961565b5b5f613a15858286016139ab565b9250506020613a26858286016139de565b9150509250929050565b5f8115159050919050565b613a4481613a30565b82525050565b5f602082019050613a5d5f830184613a3b565b92915050565b5f60208284031215613a7857613a77613961565b5b5f613a85848285016139ab565b91505092915050565b5f805f60608486031215613aa557613aa4613961565b5b5f613ab2868287016139de565b9350506020613ac3868287016139de565b9250506040613ad4868287016139de565b9150509250925092565b5f819050919050565b5f613b01613afc613af784613965565b613ade565b613965565b9050919050565b5f613b1282613ae7565b9050919050565b5f613b2382613b08565b9050919050565b613b3381613b19565b82525050565b5f602082019050613b4c5f830184613b2a565b92915050565b613b5b816139bf565b82525050565b5f602082019050613b745f830184613b52565b92915050565b5f60208284031215613b8f57613b8e613961565b5b5f613b9c848285016139de565b91505092915050565b5f805f60608486031215613bbc57613bbb613961565b5b5f613bc9868287016139ab565b9350506020613bda868287016139ab565b9250506040613beb868287016139de565b9150509250925092565b613bfe81613984565b82525050565b5f602082019050613c175f830184613bf5565b92915050565b5f60ff82169050919050565b613c3281613c1d565b82525050565b5f602082019050613c4b5f830184613c29565b92915050565b613c5a81613a30565b8114613c64575f80fd5b50565b5f81359050613c7581613c51565b92915050565b5f8060408385031215613c9157613c90613961565b5b5f613c9e858286016139ab565b9250506020613caf85828601613c67565b9150509250929050565b5f60208284031215613cce57613ccd613961565b5b5f613cdb84828501613c67565b91505092915050565b5f8060408385031215613cfa57613cf9613961565b5b5f613d07858286016139ab565b9250506020613d18858286016139ab565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613d6657607f821691505b602082108103613d7957613d78613d22565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613db36020836138db565b9150613dbe82613d7f565b602082019050919050565b5f6020820190508181035f830152613de081613da7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613e1e826139bf565b9150613e29836139bf565b9250828201905080821115613e4157613e40613de7565b5b92915050565b5f613e51826139bf565b9150613e5c836139bf565b9250828202613e6a816139bf565b91508282048414831517613e8157613e80613de7565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ebf826139bf565b9150613eca836139bf565b925082613eda57613ed9613e88565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613f3f602f836138db565b9150613f4a82613ee5565b604082019050919050565b5f6020820190508181035f830152613f6c81613f33565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613fcd6028836138db565b9150613fd882613f73565b604082019050919050565b5f6020820190508181035f830152613ffa81613fc1565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f61405b6039836138db565b915061406682614001565b604082019050919050565b5f6020820190508181035f8301526140888161404f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6140e96025836138db565b91506140f48261408f565b604082019050919050565b5f6020820190508181035f830152614116816140dd565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6141776024836138db565b91506141828261411d565b604082019050919050565b5f6020820190508181035f8301526141a48161416b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6142056035836138db565b9150614210826141ab565b604082019050919050565b5f6020820190508181035f830152614232816141f9565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6142936034836138db565b915061429e82614239565b604082019050919050565b5f6020820190508181035f8301526142c081614287565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6143216026836138db565b915061432c826142c7565b604082019050919050565b5f6020820190508181035f83015261434e81614315565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6143af6024836138db565b91506143ba82614355565b604082019050919050565b5f6020820190508181035f8301526143dc816143a3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61443d6022836138db565b9150614448826143e3565b604082019050919050565b5f6020820190508181035f83015261446a81614431565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6144cb6025836138db565b91506144d682614471565b604082019050919050565b5f6020820190508181035f8301526144f8816144bf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6145596023836138db565b9150614564826144ff565b604082019050919050565b5f6020820190508181035f8301526145868161454d565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6145c16016836138db565b91506145cc8261458d565b602082019050919050565b5f6020820190508181035f8301526145ee816145b5565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f61464f6035836138db565b915061465a826145f5565b604082019050919050565b5f6020820190508181035f83015261467c81614643565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6146b76013836138db565b91506146c282614683565b602082019050919050565b5f6020820190508181035f8301526146e4816146ab565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6147456036836138db565b9150614750826146eb565b604082019050919050565b5f6020820190508181035f83015261477281614739565b9050919050565b5f614783826139bf565b915061478e836139bf565b92508282039050818111156147a6576147a5613de7565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6148066026836138db565b9150614811826147ac565b604082019050919050565b5f6020820190508181035f830152614833816147fa565b9050919050565b5f81905092915050565b50565b5f6148525f8361483a565b915061485d82614844565b5f82019050919050565b5f61487182614847565b9150819050919050565b5f60608201905061488e5f830186613b52565b61489b6020830185613b52565b6148a86040830184613b52565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061491881613995565b92915050565b5f6020828403121561493357614932613961565b5b5f6149408482850161490a565b91505092915050565b5f819050919050565b5f61496c61496761496284614949565b613ade565b6139bf565b9050919050565b61497c81614952565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6149b481613984565b82525050565b5f6149c583836149ab565b60208301905092915050565b5f602082019050919050565b5f6149e782614982565b6149f1818561498c565b93506149fc8361499c565b805f5b83811015614a2c578151614a1388826149ba565b9750614a1e836149d1565b9250506001810190506149ff565b5085935050505092915050565b5f60a082019050614a4c5f830188613b52565b614a596020830187614973565b8181036040830152614a6b81866149dd565b9050614a7a6060830185613bf5565b614a876080830184613b52565b9695505050505050565b5f60c082019050614aa45f830189613bf5565b614ab16020830188613b52565b614abe6040830187614973565b614acb6060830186614973565b614ad86080830185613bf5565b614ae560a0830184613b52565b979650505050505050565b5f81519050614afe816139c8565b92915050565b5f805f60608486031215614b1b57614b1a613961565b5b5f614b2886828701614af0565b9350506020614b3986828701614af0565b9250506040614b4a86828701614af0565b915050925092509256fea26469706673582212202f43a2da3052fc166be7a39c7ac297acb3096f706d0a06ffea3493b9ede4cc6464736f6c634300081a0033