[ { "inputs": [ { "internalType": "uint256", "name": "_totalSupply", "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": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "BurnAddressSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "burnLimit", "type": "uint256" } ], "name": "BurnLimitSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "DutyFreeSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "buyFeeRate", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "sellFeeRate", "type": "uint256" } ], "name": "FeeRateSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "HolderRewardSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "limited", "type": "bool" }, { "indexed": true, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "LimitSet", "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": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "PoolSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "burnShare", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "holderShare", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "teamShare", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokenShare", "type": "uint256" } ], "name": "ShareSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "SwapAmountSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "TeamSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "TokenRewardSet", "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" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "DEAD_ADDRESS", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "HOLDER_ADDRESS", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TEAM_ADDRESS", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TOKEN_ADDRESS", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WETH", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceFromPool", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "burnAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "burnLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "burnShare", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyFeeRate", "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": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "dutyFree", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "holderReward", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "holderShare", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "lastTradingBlock", "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": [], "name": "sellFeeRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "setBurnAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_burnLimit", "type": "uint256" } ], "name": "setBurnLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "setDutyFree", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_buyFeeRate", "type": "uint256" }, { "internalType": "uint256", "name": "_sellFeeRate", "type": "uint256" } ], "name": "setFeeRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "setHolderReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "setPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_burnShare", "type": "uint256" }, { "internalType": "uint256", "name": "_holderShare", "type": "uint256" }, { "internalType": "uint256", "name": "_teamShare", "type": "uint256" }, { "internalType": "uint256", "name": "_tokenShare", "type": "uint256" } ], "name": "setShare", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setStartTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_swapAmount", "type": "uint256" } ], "name": "setSwapAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "setTeam", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "setTokenReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startTrading", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapAmount", "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": "teamReward", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "teamShare", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenReward", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenShare", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalFeeAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "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": "address", "name": "", "type": "address" } ], "name": "uniswapPool", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uniswapV2Factory", "outputs": [ { "internalType": "contract IUniswapV2Factory", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uniswapV2Router", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "withdrawEth", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "withdrawToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c06040523480156200001157600080fd5b50604051620058e7380380620058e7833981810160405281019062000037919062000c08565b6040518060400160405280600581526020017f4149424f540000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4149424f54000000000000000000000000000000000000000000000000000000815250620000c3620000b7620004ee60201b60201c565b620004f660201b60201c565b8160049080519060200190620000db92919062000b18565b508060059080519060200190620000f492919062000b18565b505050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506000600660006101000a81548160ff021916908315150217905550612710600182620001b4919062000c69565b620001c0919062000cf9565b600d8190555067058d15e176280000600e819055506702c68af0bb140000600f81905550670429d069189e000060108190555067016345785d8a00006011819055506127108162000212919062000cf9565b60128190555066b1a2bc2ec50000600a8190555066b1a2bc2ec50000600b8190555073d9a12bfbc2802e3da40edead99e391c5bbf26baf600660026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507311ccf09aaeb5f59311e010af5347c616a3c63c03600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073329426d2e3ebf145ec80144d98ec4346b4a593b4600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004383382620005ba60201b60201c565b600060a05173ffffffffffffffffffffffffffffffffffffffff1663c9c653963073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518363ffffffff1660e01b81526004016200048d92919062000d76565b6020604051808303816000875af1158015620004ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d3919062000dd4565b9050620004e6816200072960201b60201c565b50506200105d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200062d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006249062000e67565b60405180910390fd5b62000641600083836200088960201b60201c565b806003600082825462000655919062000e89565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000709919062000ef7565b60405180910390a3620007256000838362000a5960201b60201c565b5050565b6200073962000a5e60201b60201c565b601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615158173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2563c168fd69ef80f00260284837ea144310fa81558e4265a735e74e6c32706460405160405180910390a450565b600660019054906101000a900460ff166200096a57620008ae62000aef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620009225750620008f362000aef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b62000964576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200095b9062000f64565b60405180910390fd5b62000a54565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161562000a535780601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a4b919062000e89565b925050819055505b5b505050565b505050565b62000a6e620004ee60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000a9462000aef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ae49062000fd6565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b82805462000b269062001027565b90600052602060002090601f01602090048101928262000b4a576000855562000b96565b82601f1062000b6557805160ff191683800117855562000b96565b8280016001018555821562000b96579182015b8281111562000b9557825182559160200191906001019062000b78565b5b50905062000ba5919062000ba9565b5090565b5b8082111562000bc457600081600090555060010162000baa565b5090565b600080fd5b6000819050919050565b62000be28162000bcd565b811462000bee57600080fd5b50565b60008151905062000c028162000bd7565b92915050565b60006020828403121562000c215762000c2062000bc8565b5b600062000c318482850162000bf1565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c768262000bcd565b915062000c838362000bcd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000cbf5762000cbe62000c3a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d068262000bcd565b915062000d138362000bcd565b92508262000d265762000d2562000cca565b5b828204905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d5e8262000d31565b9050919050565b62000d708162000d51565b82525050565b600060408201905062000d8d600083018562000d65565b62000d9c602083018462000d65565b9392505050565b62000dae8162000d51565b811462000dba57600080fd5b50565b60008151905062000dce8162000da3565b92915050565b60006020828403121562000ded5762000dec62000bc8565b5b600062000dfd8482850162000dbd565b91505092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e4f601f8362000e06565b915062000e5c8262000e17565b602082019050919050565b6000602082019050818103600083015262000e828162000e40565b9050919050565b600062000e968262000bcd565b915062000ea38362000bcd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000edb5762000eda62000c3a565b5b828201905092915050565b62000ef18162000bcd565b82525050565b600060208201905062000f0e600083018462000ee6565b92915050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b600062000f4c60168362000e06565b915062000f598262000f14565b602082019050919050565b6000602082019050818103600083015262000f7f8162000f3d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fbe60208362000e06565b915062000fcb8262000f86565b602082019050919050565b6000602082019050818103600083015262000ff18162000faf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200104057607f821691505b6020821081141562001057576200105662000ff8565b5b50919050565b60805160a0516148486200109f600039600061163b015260008181610f8b015281816132fd015281816133df0152818161340f015261345701526148486000f3fe60806040526004361061031e5760003560e01c80635e2623f3116101ab578063a2558ee2116100f7578063d39c6fd311610095578063ea6ef2fe1161006f578063ea6ef2fe14610bd6578063f2d2a75114610c01578063f2fde38b14610c2a578063fa09b9fd14610c5357610325565b8063d39c6fd314610b45578063dd62ed3e14610b70578063e632313c14610bad57610325565b8063ad5c4648116100d1578063ad5c464814610a8b578063be49e4a814610ab6578063c2d09d3214610af3578063cb48b73c14610b1c57610325565b8063a2558ee2146109e6578063a457c2d714610a11578063a9059cbb14610a4e57610325565b80637278528e116101645780638da5cb5b1161013e5780638da5cb5b1461092857806395d89b4114610953578063965217161461097e578063a0b0904e146109a957610325565b80637278528e146108bb5780637425d2e0146108e657806382f0622a146108fd57610325565b80635e2623f3146107a95780636b1b4987146107e65780636e66f6e91461081157806370a082311461083c57806370d5ae0514610879578063715018a6146108a457610325565b80632e1dc4b81161026a57806342966c68116102235780634e6fd6c4116101fd5780634e6fd6c4146106ff57806351769d291461072a57806359d0f713146107535780635b149feb1461077e57610325565b806342966c68146106845780634437152a146106ad5780634b0e7216146106d657610325565b80632e1dc4b8146105745780632e8fa8211461059d578063313ce567146105c8578063351509a8146105f3578063395093511461061e5780633aeac4e11461065b57610325565b806315c4e385116102d757806323b872dd116102b157806323b872dd146104b857806325e16063146104f5578063293230b81461051e5780632a9c72c81461054957610325565b806315c4e385146104395780631694505e1461046257806318160ddd1461048d57610325565b806305bf0a541461032757806306fdde0314610352578063095cf5c61461037d578063095ea7b3146103a65780630bdf5300146103e3578063145044451461040e57610325565b3661032557005b005b34801561033357600080fd5b5061033c610c90565b604051610349919061351d565b60405180910390f35b34801561035e57600080fd5b50610367610c96565b60405161037491906135d1565b60405180910390f35b34801561038957600080fd5b506103a4600480360381019061039f9190613665565b610d28565b005b3480156103b257600080fd5b506103cd60048036038101906103c891906136be565b610df0565b6040516103da9190613719565b60405180910390f35b3480156103ef57600080fd5b506103f8610e13565b6040516104059190613743565b60405180910390f35b34801561041a57600080fd5b50610423610e2b565b604051610430919061351d565b60405180910390f35b34801561044557600080fd5b50610460600480360381019061045b9190613665565b610e31565b005b34801561046e57600080fd5b50610477610f89565b60405161048491906137bd565b60405180910390f35b34801561049957600080fd5b506104a2610fad565b6040516104af919061351d565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da91906137d8565b610fb7565b6040516104ec9190613719565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190613665565b610fe6565b005b34801561052a57600080fd5b506105336110ed565b6040516105409190613719565b60405180910390f35b34801561055557600080fd5b5061055e611100565b60405161056b919061351d565b60405180910390f35b34801561058057600080fd5b5061059b60048036038101906105969190613665565b611106565b005b3480156105a957600080fd5b506105b26111ce565b6040516105bf919061351d565b60405180910390f35b3480156105d457600080fd5b506105dd6111d4565b6040516105ea9190613847565b60405180910390f35b3480156105ff57600080fd5b506106086111dd565b6040516106159190613743565b60405180910390f35b34801561062a57600080fd5b50610645600480360381019061064091906136be565b6111f5565b6040516106529190613719565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d9190613862565b61122c565b005b34801561069057600080fd5b506106ab60048036038101906106a691906138a2565b6113a6565b005b3480156106b957600080fd5b506106d460048036038101906106cf9190613665565b6113b3565b005b3480156106e257600080fd5b506106fd60048036038101906106f89190613665565b61150b565b005b34801561070b57600080fd5b506107146115d3565b6040516107219190613743565b60405180910390f35b34801561073657600080fd5b50610751600480360381019061074c91906138a2565b6115d9565b005b34801561075f57600080fd5b50610768611639565b60405161077591906138f0565b60405180910390f35b34801561078a57600080fd5b5061079361165d565b6040516107a0919061351d565b60405180910390f35b3480156107b557600080fd5b506107d060048036038101906107cb9190613665565b611663565b6040516107dd919061351d565b60405180910390f35b3480156107f257600080fd5b506107fb61167b565b604051610808919061351d565b60405180910390f35b34801561081d57600080fd5b50610826611681565b6040516108339190613743565b60405180910390f35b34801561084857600080fd5b50610863600480360381019061085e9190613665565b6116a7565b604051610870919061351d565b60405180910390f35b34801561088557600080fd5b5061088e6116f0565b60405161089b9190613743565b60405180910390f35b3480156108b057600080fd5b506108b9611716565b005b3480156108c757600080fd5b506108d061172a565b6040516108dd919061351d565b60405180910390f35b3480156108f257600080fd5b506108fb611730565b005b34801561090957600080fd5b50610912611755565b60405161091f9190613743565b60405180910390f35b34801561093457600080fd5b5061093d61177b565b60405161094a9190613743565b60405180910390f35b34801561095f57600080fd5b506109686117a4565b60405161097591906135d1565b60405180910390f35b34801561098a57600080fd5b50610993611836565b6040516109a0919061351d565b60405180910390f35b3480156109b557600080fd5b506109d060048036038101906109cb9190613665565b61183c565b6040516109dd9190613719565b60405180910390f35b3480156109f257600080fd5b506109fb61185c565b604051610a089190613743565b60405180910390f35b348015610a1d57600080fd5b50610a386004803603810190610a3391906136be565b611882565b604051610a459190613719565b60405180910390f35b348015610a5a57600080fd5b50610a756004803603810190610a7091906136be565b6118f9565b604051610a829190613719565b60405180910390f35b348015610a9757600080fd5b50610aa061191c565b604051610aad9190613743565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190613862565b611934565b604051610aea919061351d565b60405180910390f35b348015610aff57600080fd5b50610b1a6004803603810190610b159190613665565b611959565b005b348015610b2857600080fd5b50610b436004803603810190610b3e919061390b565b611a21565b005b348015610b5157600080fd5b50610b5a611b18565b604051610b679190613743565b60405180910390f35b348015610b7c57600080fd5b50610b976004803603810190610b929190613862565b611b30565b604051610ba4919061351d565b60405180910390f35b348015610bb957600080fd5b50610bd46004803603810190610bcf91906138a2565b611bb7565b005b348015610be257600080fd5b50610beb611c0d565b604051610bf8919061351d565b60405180910390f35b348015610c0d57600080fd5b50610c286004803603810190610c239190613972565b611c13565b005b348015610c3657600080fd5b50610c516004803603810190610c4c9190613665565b611c72565b005b348015610c5f57600080fd5b50610c7a6004803603810190610c759190613665565b611cf6565b604051610c879190613719565b60405180910390f35b600f5481565b606060048054610ca5906139e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd1906139e1565b8015610d1e5780601f10610cf357610100808354040283529160200191610d1e565b820191906000526020600020905b815481529060010190602001808311610d0157829003601f168201915b5050505050905090565b610d30611d16565b80600660026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3a24054aecb6c629e440be09672d66ad4e19dd2c07781e0559c20c14f9c234f260405160405180910390a350565b600080610dfb611d94565b9050610e08818585611d9c565b600191505092915050565b7311ccf09aaeb5f59311e010af5347c616a3c63c0381565b600e5481565b610e39611d16565b601560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615158173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f30757f9f6b8114acbbc655397099fb9a7aa705ec41498de7a514c1eda8a775bd60405160405180910390a450565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600354905090565b600080610fc2611d94565b9050610fcf858285611f67565b610fda858585611ff3565b60019150509392505050565b610fee611d16565b60008173ffffffffffffffffffffffffffffffffffffffff1647600067ffffffffffffffff81111561102357611022613a13565b5b6040519080825280601f01601f1916602001820160405280156110555781602001600182028036833780820191505090505b506040516110639190613a89565b60006040518083038185875af1925050503d80600081146110a0576040519150601f19603f3d011682016040523d82523d6000602084013e6110a5565b606091505b50509050806110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e090613aec565b60405180910390fd5b5050565b600660019054906101000a900460ff1681565b60125481565b61110e611d16565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9dbebdcff3a9daf4cacfb2cac05d9ac155f3f9721123aa2e67f5fa445001593b60405160405180910390a350565b600d5481565b60006012905090565b73d9a12bfbc2802e3da40edead99e391c5bbf26baf81565b600080611200611d94565b90506112218185856112128589611b30565b61121c9190613b3b565b611d9c565b600191505092915050565b611234611d16565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b90613c03565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112df9190613743565b602060405180830381865afa1580156112fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113209190613c38565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161135d929190613c65565b6020604051808303816000875af115801561137c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a09190613cba565b50505050565b6113b03382612276565b50565b6113bb611d16565b601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615158173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2563c168fd69ef80f00260284837ea144310fa81558e4265a735e74e6c32706460405160405180910390a450565b611513611d16565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2953a6d9d6a3e093c80024a8968a6b6e34f2df0af3d9b4dc14fee15d6928196d60405160405180910390a350565b61dead81565b6115e1611d16565b806012819055503373ffffffffffffffffffffffffffffffffffffffff167f38d9c6f41f695bf19dcf7405f3cff5dfffc286f7afda91032819c5ba5628d06b8260405161162e919061351d565b60405180910390a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5481565b60166020528060005260406000206000915090505481565b600a5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61171e611d16565b6117286000612446565b565b60115481565b611738611d16565b6001600660016101000a81548160ff021916908315150217905550565b600660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546117b3906139e1565b80601f01602080910402602001604051908101604052809291908181526020018280546117df906139e1565b801561182c5780601f106118015761010080835404028352916020019161182c565b820191906000526020600020905b81548152906001019060200180831161180f57829003601f168201915b5050505050905090565b600c5481565b60156020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061188d611d94565b9050600061189b8286611b30565b9050838110156118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d790613d59565b60405180910390fd5b6118ed8286868403611d9c565b60019250505092915050565b600080611904611d94565b9050611911818585611ff3565b600191505092915050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6013602052816000526040600020602052806000526040600020600091509150505481565b611961611d16565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7dad233cc3bb9085a2e1e6078898aae54d7ac430b2b6ba95170d4153204d025f60405160405180910390a350565b611a29611d16565b600081838587611a399190613b3b565b611a439190613b3b565b611a4d9190613b3b565b9050670de0b6b3a76400008114611a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9090613dc5565b60405180910390fd5b84600f8190555083600e8190555082601081905550816011819055503373ffffffffffffffffffffffffffffffffffffffff167f3515e0296862f1d7e4cfe53fd4fe55b24b40e644498a3c4590e10d4e0902d10e600f54600e54601054601154604051611b099493929190613de5565b60405180910390a25050505050565b73329426d2e3ebf145ec80144d98ec4346b4a593b481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611bbf611d16565b80600d81905550803373ffffffffffffffffffffffffffffffffffffffff167f784b3429538db33e97d92bcbc511240c0eb8051a85923fd5d00e67a0ff14d72560405160405180910390a350565b60105481565b611c1b611d16565b81600a8190555080600b8190555080823373ffffffffffffffffffffffffffffffffffffffff167f7ad4ef4cd81b13de60e52aa49a4efc6a1bc6e8bb1849d7e7bce2d790b024f07360405160405180910390a45050565b611c7a611d16565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce190613e9c565b60405180910390fd5b611cf381612446565b50565b60146020528060005260406000206000915054906101000a900460ff1681565b611d1e611d94565b73ffffffffffffffffffffffffffffffffffffffff16611d3c61177b565b73ffffffffffffffffffffffffffffffffffffffff1614611d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8990613f08565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0390613f9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e739061402c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f5a919061351d565b60405180910390a3505050565b6000611f738484611b30565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611fed5781811015611fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd690614098565b60405180910390fd5b611fec8484848403611d9c565b5b50505050565b600660009054906101000a900460ff1615801561205a5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561209e576001600660006101000a81548160ff02191690831515021790555061208261250a565b6000600660006101000a81548160ff0219169083151502179055505b6000601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561214e57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661214957600a5490505b6121f9565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156121f857601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121f757600b5490505b5b5b6000811180156122095750600082115b15612265576000670de0b6b3a7640000828461222591906140b8565b61222f9190614141565b905080600c60008282546122439190613b3b565b92505081905550612255853083612e27565b80836122619190614172565b9250505b612270848484612e27565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dd90614218565b60405180910390fd5b6122f2826000836130a2565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612379576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612370906142aa565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161242d919061351d565b60405180910390a361244183600084613259565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600d54600c541161251a57612e25565b600080670de0b6b3a7640000600e54600c5461253691906140b8565b6125409190614141565b90506000670de0b6b3a7640000601154600c5461255d91906140b8565b6125679190614141565b90506000670de0b6b3a7640000600f54600c5461258491906140b8565b61258e9190614141565b90506000670de0b6b3a7640000601054600c546125ab91906140b8565b6125b59190614141565b905060008385836125c69190613b3b565b6125d09190613b3b565b90506012543073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016126309190613743565b602060405180830381865afa15801561264d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126719190613c38565b612679610fad565b6126839190614172565b116126975782816126949190613b3b565b90505b60004790506126a58261325e565b6000601154600e546010546126ba9190613b3b565b6126c49190613b3b565b905060008160105484476126d89190614172565b6126e291906140b8565b6126ec9190614141565b9050600082600e5485476127009190614172565b61270a91906140b8565b6127149190614141565b905060008360115486476127289190614172565b61273291906140b8565b61273c9190614141565b9050600660029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683600067ffffffffffffffff81111561279357612792613a13565b5b6040519080825280601f01601f1916602001820160405280156127c55781602001600182028036833780820191505090505b506040516127d39190613a89565b60006040518083038185875af1925050503d8060008114612810576040519150601f19603f3d011682016040523d82523d6000602084013e612815565b606091505b5050809b50508a61285b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285290613aec565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682600067ffffffffffffffff8111156128b0576128af613a13565b5b6040519080825280601f01601f1916602001820160405280156128e25781602001600182028036833780820191505090505b506040516128f09190613a89565b60006040518083038185875af1925050503d806000811461292d576040519150601f19603f3d011682016040523d82523d6000602084013e612932565b606091505b5050809b50508a612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f90613aec565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681600067ffffffffffffffff8111156129cd576129cc613a13565b5b6040519080825280601f01601f1916602001820160405280156129ff5781602001600182028036833780820191505090505b50604051612a0d9190613a89565b60006040518083038185875af1925050503d8060008114612a4a576040519150601f19603f3d011682016040523d82523d6000602084013e612a4f565b606091505b5050809b50508a612a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8c90613aec565b60405180910390fd5b6012543073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612af39190613743565b602060405180830381865afa158015612b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b349190613c38565b612b3c610fad565b612b469190614172565b1115612e1157601254883073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612bab9190613743565b602060405180830381865afa158015612bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bec9190613c38565b612bf4610fad565b612bfe9190614172565b612c089190614172565b1015612d6e573073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012543073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612cab9190613743565b602060405180830381865afa158015612cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cec9190613c38565b612cf4610fad565b612cfe9190614172565b612d089190614172565b6040518363ffffffff1660e01b8152600401612d25929190613c65565b6020604051808303816000875af1158015612d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d689190613cba565b50612e10565b3073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a6040518363ffffffff1660e01b8152600401612dcb929190613c65565b6020604051808303816000875af1158015612dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0e9190613cba565b505b5b6000600c8190555050505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8e9061433c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efe906143ce565b60405180910390fd5b612f128383836130a2565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9090614460565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613089919061351d565b60405180910390a361309c848484613259565b50505050565b600660019054906101000a900460ff1661316d576130be61177b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061312957506130fa61177b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b613168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315f906144cc565b60405180910390fd5b613254565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132535780601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461324b9190613b3b565b925050819055505b5b505050565b505050565b6000600267ffffffffffffffff81111561327b5761327a613a13565b5b6040519080825280602002602001820160405280156132a95781602001602082028036833780820191505090505b50905030816000815181106132c1576132c06144ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061338a9190614530565b8160018151811061339e5761339d6144ec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081613403307f0000000000000000000000000000000000000000000000000000000000000000611b30565b101561345557613454307f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d9c565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318cbafe58360008430426040518663ffffffff1660e01b81526004016134b7959493929190614656565b6000604051808303816000875af11580156134d6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906134ff91906147c9565b505050565b6000819050919050565b61351781613504565b82525050565b6000602082019050613532600083018461350e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613572578082015181840152602081019050613557565b83811115613581576000848401525b50505050565b6000601f19601f8301169050919050565b60006135a382613538565b6135ad8185613543565b93506135bd818560208601613554565b6135c681613587565b840191505092915050565b600060208201905081810360008301526135eb8184613598565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061363282613607565b9050919050565b61364281613627565b811461364d57600080fd5b50565b60008135905061365f81613639565b92915050565b60006020828403121561367b5761367a6135fd565b5b600061368984828501613650565b91505092915050565b61369b81613504565b81146136a657600080fd5b50565b6000813590506136b881613692565b92915050565b600080604083850312156136d5576136d46135fd565b5b60006136e385828601613650565b92505060206136f4858286016136a9565b9150509250929050565b60008115159050919050565b613713816136fe565b82525050565b600060208201905061372e600083018461370a565b92915050565b61373d81613627565b82525050565b60006020820190506137586000830184613734565b92915050565b6000819050919050565b600061378361377e61377984613607565b61375e565b613607565b9050919050565b600061379582613768565b9050919050565b60006137a78261378a565b9050919050565b6137b78161379c565b82525050565b60006020820190506137d260008301846137ae565b92915050565b6000806000606084860312156137f1576137f06135fd565b5b60006137ff86828701613650565b935050602061381086828701613650565b9250506040613821868287016136a9565b9150509250925092565b600060ff82169050919050565b6138418161382b565b82525050565b600060208201905061385c6000830184613838565b92915050565b60008060408385031215613879576138786135fd565b5b600061388785828601613650565b925050602061389885828601613650565b9150509250929050565b6000602082840312156138b8576138b76135fd565b5b60006138c6848285016136a9565b91505092915050565b60006138da8261378a565b9050919050565b6138ea816138cf565b82525050565b600060208201905061390560008301846138e1565b92915050565b60008060008060808587031215613925576139246135fd565b5b6000613933878288016136a9565b9450506020613944878288016136a9565b9350506040613955878288016136a9565b9250506060613966878288016136a9565b91505092959194509250565b60008060408385031215613989576139886135fd565b5b6000613997858286016136a9565b92505060206139a8858286016136a9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806139f957607f821691505b60208210811415613a0d57613a0c6139b2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600081905092915050565b6000613a6382613a42565b613a6d8185613a4d565b9350613a7d818560208601613554565b80840191505092915050565b6000613a958284613a58565b915081905092915050565b7f657468207472616e73666572206661696c656400000000000000000000000000600082015250565b6000613ad6601383613543565b9150613ae182613aa0565b602082019050919050565b60006020820190508181036000830152613b0581613ac9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b4682613504565b9150613b5183613504565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b8657613b85613b0c565b5b828201905092915050565b7f746f6b656e20616464726573732063616e6e6f74206265207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613bed602483613543565b9150613bf882613b91565b604082019050919050565b60006020820190508181036000830152613c1c81613be0565b9050919050565b600081519050613c3281613692565b92915050565b600060208284031215613c4e57613c4d6135fd565b5b6000613c5c84828501613c23565b91505092915050565b6000604082019050613c7a6000830185613734565b613c87602083018461350e565b9392505050565b613c97816136fe565b8114613ca257600080fd5b50565b600081519050613cb481613c8e565b92915050565b600060208284031215613cd057613ccf6135fd565b5b6000613cde84828501613ca5565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613d43602583613543565b9150613d4e82613ce7565b604082019050919050565b60006020820190508181036000830152613d7281613d36565b9050919050565b7f666f726269640000000000000000000000000000000000000000000000000000600082015250565b6000613daf600683613543565b9150613dba82613d79565b602082019050919050565b60006020820190508181036000830152613dde81613da2565b9050919050565b6000608082019050613dfa600083018761350e565b613e07602083018661350e565b613e14604083018561350e565b613e21606083018461350e565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e86602683613543565b9150613e9182613e2a565b604082019050919050565b60006020820190508181036000830152613eb581613e79565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ef2602083613543565b9150613efd82613ebc565b602082019050919050565b60006020820190508181036000830152613f2181613ee5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f84602483613543565b9150613f8f82613f28565b604082019050919050565b60006020820190508181036000830152613fb381613f77565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614016602283613543565b915061402182613fba565b604082019050919050565b6000602082019050818103600083015261404581614009565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614082601d83613543565b915061408d8261404c565b602082019050919050565b600060208201905081810360008301526140b181614075565b9050919050565b60006140c382613504565b91506140ce83613504565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561410757614106613b0c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061414c82613504565b915061415783613504565b92508261416757614166614112565b5b828204905092915050565b600061417d82613504565b915061418883613504565b92508282101561419b5761419a613b0c565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614202602183613543565b915061420d826141a6565b604082019050919050565b60006020820190508181036000830152614231816141f5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614294602283613543565b915061429f82614238565b604082019050919050565b600060208201905081810360008301526142c381614287565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614326602583613543565b9150614331826142ca565b604082019050919050565b6000602082019050818103600083015261435581614319565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006143b8602383613543565b91506143c38261435c565b604082019050919050565b600060208201905081810360008301526143e7816143ab565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061444a602683613543565b9150614455826143ee565b604082019050919050565b600060208201905081810360008301526144798161443d565b9050919050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b60006144b6601683613543565b91506144c182614480565b602082019050919050565b600060208201905081810360008301526144e5816144a9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061452a81613639565b92915050565b600060208284031215614546576145456135fd565b5b60006145548482850161451b565b91505092915050565b6000819050919050565b600061458261457d6145788461455d565b61375e565b613504565b9050919050565b61459281614567565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145cd81613627565b82525050565b60006145df83836145c4565b60208301905092915050565b6000602082019050919050565b600061460382614598565b61460d81856145a3565b9350614618836145b4565b8060005b8381101561464957815161463088826145d3565b975061463b836145eb565b92505060018101905061461c565b5085935050505092915050565b600060a08201905061466b600083018861350e565b6146786020830187614589565b818103604083015261468a81866145f8565b90506146996060830185613734565b6146a6608083018461350e565b9695505050505050565b600080fd5b6146be82613587565b810181811067ffffffffffffffff821117156146dd576146dc613a13565b5b80604052505050565b60006146f06135f3565b90506146fc82826146b5565b919050565b600067ffffffffffffffff82111561471c5761471b613a13565b5b602082029050602081019050919050565b600080fd5b600061474561474084614701565b6146e6565b905080838252602082019050602084028301858111156147685761476761472d565b5b835b81811015614791578061477d8882613c23565b84526020840193505060208101905061476a565b5050509392505050565b600082601f8301126147b0576147af6146b0565b5b81516147c0848260208601614732565b91505092915050565b6000602082840312156147df576147de6135fd565b5b600082015167ffffffffffffffff8111156147fd576147fc613602565b5b6148098482850161479b565b9150509291505056fea2646970667358221220e6489244f6b997783dac81f63d35841fd2a7d9f08baca86e727e1da784a91b1564736f6c634300080c00330000000000000000000000000000000000000002a68bedbb190931f650000000