[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "liquidity", "type": "uint256" } ], "name": "AddedLiquidity", "type": "event" }, { "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": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [], "name": "RenouncedDEXRouterV2", "type": "event" }, { "anonymous": false, "inputs": [], "name": "RenouncedTaxable", "type": "event" }, { "anonymous": false, "inputs": [], "name": "RenouncedWhitelist", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "router", "type": "address" }, { "indexed": true, "internalType": "address", "name": "pair", "type": "address" } ], "name": "SetDEXRouterV2", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint32", "name": "time", "type": "uint32" } ], "name": "SetEarlyPenaltyTime", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "slot", "type": "uint8" }, { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint24[3]", "name": "percent", "type": "uint24[3]" }, { "indexed": false, "internalType": "uint24[3]", "name": "penalty", "type": "uint24[3]" } ], "name": "SetTaxBeneficiary", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "SwappedTokensForNative", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "token0Amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "token1Amount", "type": "uint256" } ], "name": "SwappedTokensForTokens", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TaxDistributed", "type": "event" }, { "anonymous": false, "inputs": [], "name": "TradingEnabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "status", "type": "bool" } ], "name": "Whitelisted", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "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": [], "name": "autoSwap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "force", "type": "bool" } ], "name": "autoSwap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "autoTaxDistribute", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyTax", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" } ], "name": "buyTax", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "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": "denominator", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "enableAutoSwap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "enableTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getAutoAddLiquidityPercent", "outputs": [ { "internalType": "uint24", "name": "min", "type": "uint24" }, { "internalType": "uint24", "name": "max", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAutoSwapPercent", "outputs": [ { "internalType": "uint24", "name": "min", "type": "uint24" }, { "internalType": "uint24", "name": "max", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDEXLPTokenReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDEXPairV2", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDEXRouterV2", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getEarlyPenaltyTime", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTaxToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": [], "name": "info", "outputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint8", "name": "decimals", "type": "uint8" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "totalSupply", "type": "uint256" }, { "internalType": "string", "name": "version", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isAutoSwapEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isPenalized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isTradingEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "listTaxBeneficiaries", "outputs": [ { "components": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint24[3]", "name": "percent", "type": "uint24[3]" }, { "internalType": "uint24[3]", "name": "penalty", "type": "uint24[3]" }, { "internalType": "uint256", "name": "unclaimed", "type": "uint256" } ], "internalType": "struct CF_Taxable.taxBeneficiaryView[]", "name": "list", "type": "tuple[]" } ], "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": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removePenalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceDEXRouterV2", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceTaxable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounced", "outputs": [ { "internalType": "bool", "name": "Whitelist", "type": "bool" }, { "internalType": "bool", "name": "DEXRouterV2", "type": "bool" }, { "internalType": "bool", "name": "Taxable", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "sellTax", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellTax", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "min", "type": "uint24" }, { "internalType": "uint24", "name": "max", "type": "uint24" } ], "name": "setAutoAddLiquidityPercent", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "min", "type": "uint24" }, { "internalType": "uint24", "name": "max", "type": "uint24" } ], "name": "setAutoSwapPercent", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "setDEXLPTokenReceiver", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "time", "type": "uint32" } ], "name": "setEarlyPenaltyTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "slot", "type": "uint8" }, { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint24[3]", "name": "percent", "type": "uint24[3]" }, { "internalType": "uint24[3]", "name": "penalty", "type": "uint24[3]" } ], "name": "setTaxBeneficiary", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "suspendTaxes", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "taxesSuspended", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalTaxCollected", "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": [], "name": "txTax", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" } ], "name": "txTax", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "whitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "whitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c060405234801561000f575f80fd5b506040518060600160405280602b8152602001614d4f602b9139601d906100369082610f90565b50604080518082019091526006815265484f444f474560d01b6020820152601e906100619082610f90565b50601260a0526b033b2e3c9fd0803ce8000000600955610094732b2c2872204844025af90c60bc7e5cf39511a63d610269565b6100b5737e29571c48e1ae954704444fad44f9c9e79e0403620186a06102ba565b6100e7737a250d5630b4cf539739df2c5dacb4c659f2488d73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2610334565b6100f261012c61055a565b61010f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26105b4565b6007805460ff65ffffffffffff60b01b01191679fa00003200000000000000000000000000000000000000000001179055600954620186a060328202819004600a5560fa90910204600b556101686064620186a061075c565b60408051606080820183525f8083526020808401829052838501829052845192830185528183526103e8908301819052938201939093526101bf9291738881d9869ac7c7840971caac043d7f4d144abd10916107bd565b60408051606080820183525f8083526103e8602080850182905284860191909152845192830185529082526127109082018190529281019290925261021c9160019173c9e21f4cec9d95bc22cd40b42da6f25be5889237916107bd565b60408051808201909152732b2c2872204844025af90c60bc7e5cf39511a63d815272c7e5a4c0de5ac5f373bb596430510c03e0c9ae602082015261025f90610cfc565b600160805261110e565b601c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b608051156102c6575f80fd5b5f6102de6009548362ffffff16610d4060201b60201c565b6001600160a01b0384165f8181526020818152604080832085905551848152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b5f8290505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610375573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610399919061104f565b6040516364e329cb60e11b81523060048201526001600160a01b0385811660248301529192505f9183169063c9c65396906044016020604051808303815f875af11580156103e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040d919061104f565b90506040518060a00160405280866001600160a01b03168152602001826001600160a01b03168152602001856001600160a01b03168152602001846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610483573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a7919061104f565b6001600160a01b0390811682525f60209283018190528351601780549184166001600160a01b0319928316179055928401516018805491841691851682179055604080860151601980549186169187169190911790556060860151601a8054918616918716919091179055608090950151601b8054918516919095161790935592519192908816917f068ccb581b10310dd98c3f0999214bce7660c126ffa63a399df0287144582d579190a35050505050565b6008805463ffffffff60781b1916600160781b63ffffffff8416908102919091179091556040519081527f703cced883e2faf6a2d5c676ef2f9dd7cfafa0acecee468ece9314ecf462ba919060200160405180910390a150565b6080511580156105cb57506001600160a01b038116155b806105de57506001600160a01b03811630145b806105f65750601a546001600160a01b038281169116145b806106e757506017546040805163c45a015560e01b815290515f926001600160a01b03169163c45a01559160048083019260209291908290030181865afa158015610643573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610667919061104f565b601a5460405163e6a4390560e01b81526001600160a01b039182166004820152848216602482015291169063e6a43905906044016020604051808303815f875af11580156106b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106db919061104f565b6001600160a01b031614155b6107225760405162461bcd60e51b81526020600482015260076024820152662737902830b4b960c91b60448201526064015b60405180910390fd5b6001600160a01b038116156107375780610739565b305b601680546001600160a01b0319166001600160a01b039290921691909117905550565b6007805462ffffff60e01b1916600160e01b62ffffff858116918202929092179092556008805462ffffff19169184169190911790556009546107a391620186a091020490565b600c55600954620186a062ffffff929092160204600d5550565b60058460ff1611156107cd575f80fd5b6001600160a01b03831630148015906107f157506001600160a01b03831661dead14155b801561080557506001600160a01b03831615155b61080d575f80fd5b60ff84165f9081526004602090815260409182902060018101805486516007805464010000000080820462ffffff908116958116909403949094018316840262ffffff60201b198216811780845586548c8a0151670100000000000000928390048716630100000092839004881690910301861690910265ffffffffffff60201b1990931662ffffff60381b19909216919091179190911780835594548a8901516a0100000000000000000000808804861666010000000000009384900487169092039190910185160262ffffff60501b19871681178085556002890180548d51600160681b938490048916918916900301871690910265ffffffffffff60501b1990981662ffffff60681b1990921691909117969096178084558654988b0151600160801b808304871694909a048616900392909201841690970262ffffff60801b19821681178084559554988a015165ffffffffffff60801b1990921662ffffff60981b1990911617969097048216909603600160981b938490048216018116909202939093179384905590926161a89290041611801590610a2357506007546161a867010000000000000090910462ffffff16118015906109e957506007546161a86a010000000000000000000090910462ffffff1611155b8015610a2357506007546161a8670100000000000000820462ffffff9081166a010000000000000000000090930481169290920190911611155b610a5a5760405162461bcd60e51b8152602060048201526008602482015267090d2ced040a8c2f60c31b6044820152606401610719565b60075462015f90600160681b90910462ffffff1611801590610a8e575060075462015f90600160801b90910462ffffff1611155b8015610aac575060075462015f90600160981b90910462ffffff1611155b610aea5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642050656e616c747960881b6044820152606401610719565b8054610100600160a81b0319166101006001600160a01b03861602178155610b1760018201846003610e4c565b506080518015610b2957505f8560ff16115b15610c93575f808052600460209081527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec54604080516060808201835285825293810185905280820185905281519384019091526002850154610c9394936101009093046001600160a01b031692908190606490600a62ffffff9182160216046064895f6020020151600a0262ffffff1681610bc757610bc7611090565b5f808052600460208181525f80516020614d2f8339815191525462ffffff8082169690950496909603949094018316865260028c01548d850151928052908452630100000094859004831660649582048416600a9081028516879004938102851687900493909303018316938601939093526040808d01519501946601000000000000909304821681028216849004939202165f805260046020525f80516020614d2f8339815191525462ffffff660100000000000090910481169290910492909203011690526107bd565b610ca260028201836003610e4c565b50805460ff16610cb857805460ff191660011781555b7f30034b3ad500b0a06492ddcfbb1eedee788dff84a77d76d5c3658ab517cec51a85858585604051610ced94939291906110d1565b60405180910390a15050505050565b60805115610d08575f80fd5b5f5b6002811015610d3c57610d34828260028110610d2857610d2861107c565b60200201516001610d4a565b600101610d0a565b5050565b620186a091020490565b60155460ff1615610d59575f80fd5b6001600160a01b038216610d6b575f80fd5b6017546001600160a01b03838116911614801590610d9757506018546001600160a01b03838116911614155b610dee5760405162461bcd60e51b815260206004820152602260248201527f44455820726f7574657220616e642070616972206172652070726976696c6567604482015261195960f21b6064820152608401610719565b6001600160a01b0382165f81815260026020908152604091829020805460ff191685151590811790915591519182527fa54714518c5d275fdcd3d2a461e4858e4e8cb04fb93cd0bca9d6d34115f26440910160405180910390a25050565b600183019183908215610ed4579160200282015f5b83821115610ea357835183826101000a81548162ffffff021916908362ffffff1602179055509260200192600301602081600201049283019260010302610e61565b8015610ed25782816101000a81549062ffffff0219169055600301602081600201049283019260010302610ea3565b505b50610ee0929150610ee4565b5090565b5b80821115610ee0575f8155600101610ee5565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680610f2057607f821691505b602082108103610f3e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610f8b57805f5260205f20601f840160051c81016020851015610f695750805b601f840160051c820191505b81811015610f88575f8155600101610f75565b50505b505050565b81516001600160401b03811115610fa957610fa9610ef8565b610fbd81610fb78454610f0c565b84610f44565b602080601f831160018114610ff0575f8415610fd95750858301515b5f19600386901b1c1916600185901b178555611047565b5f85815260208120601f198616915b8281101561101e57888601518255948401946001909101908401610fff565b508582101561103b57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6020828403121561105f575f80fd5b81516001600160a01b0381168114611075575f80fd5b9392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b805f5b60038110156110cb57815162ffffff168452602093840193909101906001016110a7565b50505050565b60ff851681526001600160a01b038416602082015261010081016110f860408301856110a4565b61110560a08301846110a4565b95945050505050565b60805160a051613bf96111365f395f818161048c0152610d3f01525f611fce0152613bf95ff3fe608060405260043610610326575f3560e01c806377004851116101ad578063a9059cbb116100ea578063d8454a821161008e578063f2fde38b1161006b578063f2fde38b146109bb578063f3dc4f48146109da578063f59c370814610a16578063f7de0e5714610a3557005b8063d8454a8214610969578063dd62ed3e1461097d578063edd286cf1461099c57005b8063c78fe0d4116100c7578063c78fe0d4146108e0578063cc1776d3146108f4578063d232c22014610908578063d6a018eb1461094a57005b8063a9059cbb14610885578063be5e49b2146108a4578063c2921583146108c357005b806395d89b41116101515780639c5ef8d71161012e5780639c5ef8d714610814578063a457c2d714610828578063a4d8971a14610847578063a5596b4f1461086657005b806395d89b41146107c557806396ce0795146107d957806397a26b9e146107ed57005b80638bf1acff1161018a5780638bf1acff146107565780638d8350ca1461076a5780638da5cb5b1461078957806395101f90146107a657005b8063770048511461071a5780638324c3b91461072e5780638a8c523c1461074257005b806339137f8b1161027b57806354fd4d501161021f5780635f641758116101fc5780635f641758146106925780636f05be97146106b157806370a08231146106d2578063715018a61461070657005b806354fd4d50146106175780635a0d4f88146106445780635b90fe661461066157005b80633b7854de116102585780633b7854de1461058857806344b691ff146105b95780634b7d9db4146105d85780634f7041a5146105ef57005b806339137f8b1461051e57806339509351146105325780633af32abf1461055157005b8063186488a8116102e25780632984207a116102bf5780632984207a1461045a578063313ce5671461047957806332acf3de146104b6578063370158ea146104f857005b8063186488a8146103fd57806323b872dd1461041c5780632623e9751461043b57005b806301b38af51461032f578063064a59d01461034e57806306fdde031461038257806307e9652c146103a3578063095ea7b3146103c057806318160ddd146103df57005b3661032d57005b005b34801561033a575f80fd5b5061032d6103493660046135d6565b610a52565b348015610359575f80fd5b50600854600160381b900463ffffffff1615155b60405190151581526020015b60405180910390f35b34801561038d575f80fd5b50610396610acf565b6040516103799190613683565b3480156103ae575f80fd5b5060075462010000900460ff1661036d565b3480156103cb575f80fd5b5061036d6103da3660046136b7565b610b5f565b3480156103ea575f80fd5b506009545b604051908152602001610379565b348015610408575f80fd5b5061032d61041736600461376f565b610b75565b348015610427575f80fd5b5061036d6104363660046137ca565b610c14565b348015610446575f80fd5b5061032d610455366004613803565b610c35565b348015610465575f80fd5b5061032d61047436600461381e565b610cd3565b348015610484575f80fd5b5060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610379565b3480156104c1575f80fd5b5060075462ffffff600160b01b8204811691600160c81b9004165b6040805162ffffff938416815292909116602083015201610379565b348015610503575f80fd5b5061050c610d31565b60405161037996959493929190613841565b348015610529575f80fd5b5061032d610ebc565b34801561053d575f80fd5b5061036d61054c3660046136b7565b610f1d565b34801561055c575f80fd5b5061036d61056b3660046138a5565b6001600160a01b03165f9081526002602052604090205460ff1690565b348015610593575f80fd5b50601b546001600160a01b03165b6040516001600160a01b039091168152602001610379565b3480156105c4575f80fd5b5061032d6105d33660046138be565b610f34565b3480156105e3575f80fd5b5060075460ff1661036d565b3480156105fa575f80fd5b5061060361107f565b60405162ffffff9091168152602001610379565b348015610622575f80fd5b50604080518082019091526005815264312e302e3360d81b6020820152610396565b34801561064f575f80fd5b506016546001600160a01b03166105a1565b34801561066c575f80fd5b50600854600160781b900463ffffffff1660405163ffffffff9091168152602001610379565b34801561069d575f80fd5b506106036106ac3660046138a5565b61108e565b3480156106bc575f80fd5b506106c5611189565b6040516103799190613916565b3480156106dd575f80fd5b506103ef6106ec3660046138a5565b6001600160a01b03165f9081526020819052604090205490565b348015610711575f80fd5b5061032d61131a565b348015610725575f80fd5b5061032d611360565b348015610739575f80fd5b5061032d6113a1565b34801561074d575f80fd5b5061032d611404565b348015610761575f80fd5b506106036114de565b348015610775575f80fd5b506106036107843660046138a5565b6114e4565b348015610794575f80fd5b50601c546001600160a01b03166105a1565b3480156107b1575f80fd5b506106036107c03660046138a5565b6115a8565b3480156107d0575f80fd5b50610396611684565b3480156107e4575f80fd5b506103e8610603565b3480156107f8575f80fd5b5060075460085462ffffff600160e01b909204821691166104dc565b34801561081f575f80fd5b5061032d611693565b348015610833575f80fd5b5061036d6108423660046136b7565b611708565b348015610852575f80fd5b5061032d610861366004613803565b611768565b348015610871575f80fd5b5061032d610880366004613803565b6117f4565b348015610890575f80fd5b5061036d61089f3660046136b7565b61184e565b3480156108af575f80fd5b5061032d6108be3660046138a5565b61185a565b3480156108ce575f80fd5b506018546001600160a01b03166105a1565b3480156108eb575f80fd5b5061032d6118b9565b3480156108ff575f80fd5b5061060361191e565b348015610913575f80fd5b506015546040805160ff80841615158252620100008404811615156020830152610100909304909216151590820152606001610379565b348015610955575f80fd5b5061032d6109643660046138be565b611928565b348015610974575f80fd5b506010546103ef565b348015610988575f80fd5b506103ef610997366004613995565b611a45565b3480156109a7575f80fd5b5061032d6109b63660046138a5565b611a6f565b3480156109c6575f80fd5b5061032d6109d53660046138a5565b611ab7565b3480156109e5575f80fd5b5061036d6109f43660046138a5565b6001600160a01b03165f90815260036020526040902054610100900460ff1690565b348015610a21575f80fd5b5061032d610a303660046139bd565b611afc565b348015610a40575f80fd5b506017546001600160a01b03166105a1565b601c546001600160a01b03163314610a855760405162461bcd60e51b8152600401610a7c906139f2565b60405180910390fd5b815f5b81811015610ac857610ac0858583818110610aa557610aa5613a18565b9050602002016020810190610aba91906138a5565b84611b2c565b600101610a88565b5050505050565b6060601d8054610ade90613a2c565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0a90613a2c565b8015610b555780601f10610b2c57610100808354040283529160200191610b55565b820191905f5260205f20905b815481529060010190602001808311610b3857829003601f168201915b5050505050905090565b5f610b6b338484611c2e565b5060015b92915050565b601c546001600160a01b03163314610b9f5760405162461bcd60e51b8152600401610a7c906139f2565b601554610100900460ff1615610bb3575f80fd5b60018460ff1610158015610bcb575060058460ff1611155b610c025760405162461bcd60e51b815260206004820152600860248201526714995cd95c9d995960c21b6044820152606401610a7c565b610c0e84848484611c8f565b50505050565b5f610c208433846121ee565b610c2b848484612251565b5060019392505050565b601c546001600160a01b03163314610c5f5760405162461bcd60e51b8152600401610a7c906139f2565b60155462010000900460ff1615610c74575f80fd5b801580610c8b57506017546001600160a01b031615155b610cc05760405162461bcd60e51b815260206004820152600660248201526509cde40888ab60d31b6044820152606401610a7c565b6007805460ff1916911515919091179055565b601c546001600160a01b03163314610cfd5760405162461bcd60e51b8152600401610a7c906139f2565b601554610100900460ff1615610d11575f80fd5b6102588163ffffffff161115610d25575f80fd5b610d2e8161273d565b50565b6060805f805f6060601d601e7f0000000000000000000000000000000000000000000000000000000000000000601c5f9054906101000a90046001600160a01b031660095460405180604001604052806005815260200164312e302e3360d81b815250858054610da090613a2c565b80601f0160208091040260200160405190810160405280929190818152602001828054610dcc90613a2c565b8015610e175780601f10610dee57610100808354040283529160200191610e17565b820191905f5260205f20905b815481529060010190602001808311610dfa57829003601f168201915b50505050509550848054610e2a90613a2c565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5690613a2c565b8015610ea15780601f10610e7857610100808354040283529160200191610ea1565b820191905f5260205f20905b815481529060010190602001808311610e8457829003601f168201915b50505050509450955095509550955095509550909192939495565b601c546001600160a01b03163314610ee65760405162461bcd60e51b8152600401610a7c906139f2565b6015805460ff191660011790556040517f951371dba26ef6174e32c5005af266bb9a0405124df206f136f85716d9c96093905f90a1565b5f610b6b338484610f2e3388611a45565b01611c2e565b601c546001600160a01b03163314610f5e5760405162461bcd60e51b8152600401610a7c906139f2565b60155462010000900460ff1615610f73575f80fd5b60018262ffffff1610158015610f9057506103e88262ffffff1611155b610fcb5760405162461bcd60e51b815260206004820152600c60248201526b302e3030312520746f20312560a01b6044820152606401610a7c565b8162ffffff168162ffffff1610158015610fec57506103e88162ffffff1611155b6110275760405162461bcd60e51b815260206004820152600c60248201526b302e3030312520746f20312560a01b6044820152606401610a7c565b6007805465ffffffffffff60b01b1916600160b01b62ffffff80861691820262ffffff60c81b191692909217600160c81b92851692830217909255600954620186a0928102839004600a550204600b555050565b5050565b5f611089336115a8565b905090565b6007545f9062010000900460ff16156110a857505f919050565b6001600160a01b0382163014806110d657506001600160a01b0382165f9081526002602052604090205460ff165b806110ee57506018546001600160a01b038381169116145b8061110657506017546001600160a01b038381169116145b611182576001600160a01b0382165f90815260036020526040902054610100900460ff1680611156575060085463ffffffff428116600160781b83048216600160381b9093048216929092011610155b61116e57600754600160501b900462ffffff16610b6f565b600754600160981b900462ffffff16610b6f565b5f92915050565b60408051600680825260e08201909252606091816020015b6111a96134c8565b8152602001906001900390816111a15790505090505f5b60068160ff161015611316576040805160808101825260ff83165f81815260046020818152858320805461010090046001600160a01b03168652938352908152845160608101958690529394908501939260010191600391908390855b82829054906101000a900462ffffff1662ffffff168152602001906003019060208260020104928301926001038202915080841161121d579050505050918352505060ff83165f9081526004602090815260409182902082516060810190935292019160020160038282826020028201915f905b82829054906101000a900462ffffff1662ffffff16815260200190600301906020826002010492830192600103820291508084116112915750505092845250505060ff83165f818152600460209081526040909120600301549201919091528351849190811061130357611303613a18565b60209081029190910101526001016111c0565b5090565b601c546001600160a01b031633146113445760405162461bcd60e51b8152600401610a7c906139f2565b6015805462ffffff19166201010117905561135e5f612797565b565b60075460ff16801561137a5750600754610100900460ff16155b801561139057506007546301000000900460ff16155b611398575f80fd5b61135e5f6127e8565b601c546001600160a01b031633146113cb5760405162461bcd60e51b8152600401610a7c906139f2565b6015805461ff0019166101001790556040517fb18b29d65a3b95dc80df0b9528f12b8592bd02395ca19228958e8b7cdf3ddd2b905f90a1565b601c546001600160a01b0316331461142e5760405162461bcd60e51b8152600401610a7c906139f2565b60155462010000900460ff1615611443575f80fd5b600854600160381b900463ffffffff16156114925760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610a7c565b600880546affffffff000000000000001916600160381b63ffffffff4216021790556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c7905f90a1565b5f611089335b5f6001600160a01b03821630148061151357506001600160a01b0382165f9081526002602052604090205460ff165b8061152b57506018546001600160a01b038381169116145b611182576001600160a01b0382165f90815260036020526040902054610100900460ff168061157b575060085463ffffffff428116600160781b83048216600160381b9093048216929092011610155b61159457600754640100000000900462ffffff16610b6f565b600754600160681b900462ffffff16610b6f565b6007545f9062010000900460ff16156115c257505f919050565b6001600160a01b0382163014806115f057506001600160a01b0382165f9081526002602052604090205460ff165b8061160857506018546001600160a01b038381169116145b611182576001600160a01b0382165f90815260036020526040902054610100900460ff1680611658575060085463ffffffff428116600160781b83048216600160381b9093048216929092011610155b61167057600754600160381b900462ffffff16610b6f565b600754600160801b900462ffffff16610b6f565b6060601e8054610ade90613a2c565b601c546001600160a01b03163314806116ba5750335f9081526002602052604090205460ff165b6116d65760405162461bcd60e51b8152600401610a7c906139f2565b600754610100900460ff161580156116f857506007546301000000900460ff16155b611700575f80fd5b61135e612be2565b5f806117143385611a45565b90508281101561175b5760405162461bcd60e51b81526020600482015260126024820152714e6567617469766520616c6c6f77616e636560701b6044820152606401610a7c565b610c2b3385858403611c2e565b601c546001600160a01b031633148061178f5750335f9081526002602052604090205460ff165b6117ab5760405162461bcd60e51b8152600401610a7c906139f2565b80806117b9575060075460ff165b80156117cd5750600754610100900460ff16155b80156117e357506007546301000000900460ff16155b6117eb575f80fd5b610d2e816127e8565b601c546001600160a01b0316331461181e5760405162461bcd60e51b8152600401610a7c906139f2565b601554610100900460ff1615611832575f80fd5b60078054911515620100000262ff000019909216919091179055565b5f610b6b338484612251565b601c546001600160a01b031633146118845760405162461bcd60e51b8152600401610a7c906139f2565b601554610100900460ff1615611898575f80fd5b6001600160a01b03165f908152600360205260409020805461ff0019169055565b601c546001600160a01b031633146118e35760405162461bcd60e51b8152600401610a7c906139f2565b6015805462ff00001916620100001790556040517ff7f7205ed48f7a35df9b5857667bdee0189d5d7cd80588f217a82641c3b4d08c905f90a1565b5f6110893361108e565b601c546001600160a01b031633146119525760405162461bcd60e51b8152600401610a7c906139f2565b60155462010000900460ff1615611967575f80fd5b600a8262ffffff161015801561199357506119856103e86064613a72565b62ffffff168262ffffff1611155b6119cf5760405162461bcd60e51b815260206004820152600d60248201526c302e30312520746f203130302560981b6044820152606401610a7c565b8162ffffff168162ffffff16101580156119ff57506119f16103e86064613a72565b62ffffff168162ffffff1611155b611a3b5760405162461bcd60e51b815260206004820152600d60248201526c302e30312520746f203130302560981b6044820152606401610a7c565b61107b8282612d3c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b601c546001600160a01b03163314611a995760405162461bcd60e51b8152600401610a7c906139f2565b601b80546001600160a01b0319166001600160a01b03831617905550565b601c546001600160a01b03163314611ae15760405162461bcd60e51b8152600401610a7c906139f2565b6001600160a01b038116611af3575f80fd5b610d2e81612797565b601c546001600160a01b03163314611b265760405162461bcd60e51b8152600401610a7c906139f2565b61107b82825b60155460ff1615611b3b575f80fd5b6001600160a01b038216611b4d575f80fd5b6017546001600160a01b03838116911614801590611b7957506018546001600160a01b03838116911614155b611bd05760405162461bcd60e51b815260206004820152602260248201527f44455820726f7574657220616e642070616972206172652070726976696c6567604482015261195960f21b6064820152608401610a7c565b6001600160a01b0382165f81815260026020908152604091829020805460ff191685151590811790915591519182527fa54714518c5d275fdcd3d2a461e4858e4e8cb04fb93cd0bca9d6d34115f26440910160405180910390a25050565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60058460ff161115611c9f575f80fd5b6001600160a01b0383163014801590611cc357506001600160a01b03831661dead14155b8015611cd757506001600160a01b03831615155b611cdf575f80fd5b60ff84165f9081526004602090815260409182902060018101805486516007805464010000000080820462ffffff908116958116909403949094018316840266ffffff00000000198216811780845586548c8a0151600160381b928390048716630100000092839004881690910301861690910269ffffffffffff000000001990931669ffffff0000000000000019909216919091179190911780835594548a890151600160501b8088048616600160301b9384900487169092039190910185160262ffffff60501b19871681178085556002890180548d51600160681b938490048916918916900301871690910265ffffffffffff60501b1990981662ffffff60681b1990921691909117969096178084558654988b0151600160801b808304871694909a048616900392909201841690970262ffffff60801b19821681178084559554988a015165ffffffffffff60801b1990921662ffffff60981b1990911617969097048216909603600160981b938490048216018116909202939093179384905590926161a89290041611801590611ed757506007546161a8600160381b90910462ffffff1611801590611ea857506007546161a8600160501b90910462ffffff1611155b8015611ed757506007546161a8600160381b820462ffffff908116600160501b90930481169290920190911611155b611f0e5760405162461bcd60e51b8152602060048201526008602482015267090d2ced040a8c2f60c31b6044820152606401610a7c565b60075462015f90600160681b90910462ffffff1611801590611f42575060075462015f90600160801b90910462ffffff1611155b8015611f60575060075462015f90600160981b90910462ffffff1611155b611f9e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642050656e616c747960881b6044820152606401610a7c565b8054610100600160a81b0319166101006001600160a01b03861602178155611fcb60018201846003613503565b507f00000000000000000000000000000000000000000000000000000000000000008015611ffb57505f8560ff16115b15612185575f808052600460209081527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5460408051606080820183528582529381018590528082018590528151938401909152600285015461218594936101009093046001600160a01b031692908190606490600a62ffffff9182160216046064895f6020020151600a0262ffffff168161209957612099613a91565b5f808052600460208181527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ee5462ffffff8082169690950496909603949094018316865260028c01548d850151928052908452630100000094859004831660649582048416600a9081028516879004938102851687900493909303018316938601939093526040808d0151950194600160301b909304821681028216849004939202165f805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ee5462ffffff600160301b9091048116929091049290920301169052611c8f565b61219460028201836003613503565b50805460ff166121aa57805460ff191660011781555b7f30034b3ad500b0a06492ddcfbb1eedee788dff84a77d76d5c3658ab517cec51a858585856040516121df9493929190613aa5565b60405180910390a15050505050565b5f6121f98484611a45565b9050818110156122445760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b6044820152606401610a7c565b610c0e8484848403611c2e565b6007546301000000900460ff161580156122735750600754610100900460ff16155b80156122a657506018546001600160a01b038481169116148015906122a657506017546001600160a01b03848116911614155b156122bc576122b45f6127e8565b6122bc612be2565b5f811180156122e357506001600160a01b0383165f9081526002602052604090205460ff16155b801561230757506001600160a01b0382165f9081526002602052604090205460ff16155b801561231c57506001600160a01b0383163014155b801561233157506001600160a01b0382163014155b801561234b57506017546001600160a01b03838116911614155b1561272d576018546001600160a01b0384811691161480159061237c57506018546001600160a01b03838116911614155b806123c557506018546001600160a01b03848116911614806123ab57506018546001600160a01b038381169116145b80156123c55750600854600160381b900463ffffffff1615155b6124045760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b6044820152606401610a7c565b60075462010000900460ff1615801561242757506007546301000000900460ff16155b801561243b5750600754610100900460ff16155b1561272d576018545f9081906001600160a01b038681169116148061246d57506018546001600160a01b038581169116145b15612494576018546001600160a01b0386811691161461248e576002612491565b60015b90505b5f8160ff166001146124a657856124a8565b845b60085490915063ffffffff428116600160781b83048216600160381b90930482169290920116108015906124f957506001600160a01b0381165f90815260036020526040902054610100900460ff16155b15612523576001600160a01b0381165f908152600360205260409020805461ff0019166101001790555b5f5b60068160ff161015612714575f808460ff16116125b0576001600160a01b0383165f90815260036020526040902054610100900460ff166125965760ff82165f908152600460205260408120600101905b600a91828204019190066003029054906101000a900462ffffff16612678565b60ff82165f90815260046020526040812060020190612576565b8360ff16600114612616576001600160a01b0383165f90815260036020526040902054610100900460ff166125fa5760ff82165f9081526004602052604090206001016002612576565b60ff82165f908152600460205260409020600290810190612576565b6001600160a01b0383165f90815260036020526040902054610100900460ff166126565760ff82165f908152600460205260409020600190810190612576565b60ff82165f908152600460205260409020600201546301000000900462ffffff165b62ffffff169050805f0361268c575061270c565b620186a08682020461269f893083612d9d565b60185460ff84165f908152600460205260409020546001600160a01b03918216610100909104909116036126da57600e805482019055612705565b60ff83165f908152600460205260409020600301805482019055601280548201905560118054820190555b9490940193505b600101612525565b50821561272957601080548401905592829003925b5050505b612738838383612d9d565b505050565b6008805463ffffffff60781b1916600160781b63ffffffff8416908102919091179091556040519081527f703cced883e2faf6a2d5c676ef2f9dd7cfafa0acecee468ece9314ecf462ba919060200160405180910390a150565b601c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6007805461ff00191661010017905580158015612808575060075460ff16155b612bd4575f80600e541161281c575f612830565b6002600e548161282e5761282e613a91565b045b601a546016549192505f916001600160a01b03908116911614612853575f612857565b6012545b90508181018315801561286b5750600b5481115b156128d4575f831161287d575f6128a3565b600b546128a39082620186a086028161289857612898613a91565b04620186a091020490565b92505f82116128b2575f6128cd565b600b546128cd9082620186a085028161289857612898613a91565b9150508181015b83806128e25750600a548110155b80156128fe5750305f9081526020819052604090205481840111155b15612ad95760408051600280825260608201835247925f92919060208301908036833701905050905030815f8151811061293a5761293a613a18565b6001600160a01b039283166020918202929092010152601a5482519116908290600190811061296b5761296b613a18565b6001600160a01b0392831660209182029290920101526017546129919130911685611c2e565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac947906129c99086905f90869030904290600401613ae2565b5f604051808303815f87803b1580156129e0575f80fd5b505af19250505080156129f1575060015b612a1257601754612a0d9030906001600160a01b03165f611c2e565b612ad6565b600e5415612a2457600e805486900390555b604080518481524784900360208201819052917f9029ea20319a59447bd88162928acbbbe0955dead46655370929b794e46e8d96910160405180910390a18015612ad457612a808185620186a089028161289857612898613a91565b600f80549091019055601a546016546001600160a01b03918216911603612ad457612ab98185620186a088028161289857612898613a91565b60148054909101905560138054860190556012805486900390555b505b50505b6016546001600160a01b03163014801590612b055750601a546016546001600160a01b03908116911614155b15612ba957601254915083158015612b1e5750600b5482115b15612b2957600b5491505b8380612b375750600a548210155b8015612b515750305f908152602081905260409020548211155b15612ba9576016545f90612b6e906001600160a01b031684612eda565b90508015612ba7576016546001600160a01b03165f90815260056020526040902080548201905560138054840190556012805484900390555b505b505050612bb581613151565b6008805463ffffffff60581b19164263ffffffff16600160581b021790555b506007805461ff0019169055565b6007805463ff0000001916630100000017905560115415612d2d575f805b60068160ff161015612cc95760ff81165f908152600460205260409020805460038201546101009091046001600160a01b0316901580612c4d57506018546001600160a01b038281169116145b15612c59575050612cc1565b6016545f90612c97906001600160a01b03163014612c7957601354612c7d565b6012545b6011546003860154620186a0028161289857612898613a91565b90505f612ca483836132fd565b90508015612cbc576003840180548290039055948501945b505050505b600101612c00565b506008805466ffffffff0000001916630100000063ffffffff4216021790558015612d2b576011805482900390556040518181527fbb245b3c380b63918dc25ab2cc2e4b6939c4d58ffd95ea052b685a031e1ad2979060200160405180910390a15b505b6007805463ff00000019169055565b6007805462ffffff60e01b1916600160e01b62ffffff858116918202929092179092556008805462ffffff1916918416919091179055600954612d8391620186a091020490565b600c55600954620186a062ffffff929092160204600d5550565b6001600160a01b03831615801590612dbd57506001600160a01b03821615155b612e095760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722066726f6d2f746f207a65726f20616464726573730000006044820152606401610a7c565b6001600160a01b0383165f90815260208190526040902054811115612e625760405162461bcd60e51b815260206004820152600f60248201526e457863656564732062616c616e636560881b6044820152606401610a7c565b8015612e95576001600160a01b038084165f90815260208190526040808220805485900390559184168152208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c8291815260200190565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015612f20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f449190613b53565b604080516003808252608082019092529192505f91906020820160608036833701905050905030815f81518110612f7d57612f7d613a18565b6001600160a01b039283166020918202929092010152601a54825191169082906001908110612fae57612fae613a18565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600281518110612fe257612fe2613a18565b6001600160a01b0392831660209182029290920101526017546130089130911686611c2e565b601754604051635c11d79560e01b81526001600160a01b0390911690635c11d795906130409087905f90869030904290600401613ae2565b5f604051808303815f87803b158015613057575f80fd5b505af1925050508015613068575060015b613089576017546130849030906001600160a01b03165f611c2e565b613149565b6040516370a0823160e01b815230600482015282906001600160a01b038716906370a0823190602401602060405180830381865afa1580156130cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130f19190613b53565b6130fb9190613b6a565b604080516001600160a01b0388168152602081018790529081018290529093507fa82a03c1e8613c6192a82386fbb3690070528b0dd8bcae8a5c82d9ef937d7f769060600160405180910390a15b505092915050565b8015801561316c5750600c54600e54108061316c5750600f54155b156131745750565b5f811580156131865750600d54600e54115b61319257600e54613196565b600d545b90505f821580156131aa5750600d54600e54115b6131b657600f546131df565b6131df600f54600e54600d54816131cf576131cf613a91565b04620186a002620186a091020490565b6017549091506131fa9030906001600160a01b031684611c2e565b601754601b5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af193505050508015613286575060408051601f3d908101601f1916820190925261328391810190613b7d565b60015b6132a2576017546127389030906001600160a01b03165f611c2e565b60408051848152602081018490529081018290527f947eb7d5785b0534dc368370fd3574434082455556a747116a88abea1ec6ceba9060600160405180910390a15050600e8054849003905550600f80548290039055505050565b5f815f0361330c57505f610b6f565b601654306001600160a01b03909116036133395761332b308484612d9d565b6012805483900390556134c2565b6013545f90620186a084028161335157613351613a91565b601a546016549290910492505f916001600160a01b039182169116036133f457601454620186a09083020490505f856001600160a01b031682617530906040515f60405180830381858888f193505050503d805f81146133cc576040519150601f19603f3d011682016040523d82523d5f602084013e6133d1565b606091505b50509050806133e5575f9350505050610b6f565b506014805482900390556134b6565b6016546001600160a01b03165f90815260056020526040902054620186a09083020460165460405163a9059cbb60e01b81526001600160a01b0388811660048301526024820184905292935091169063a9059cbb906044016020604051808303815f875af1925050508015613486575060408051601f3d908101601f1916820190925261348391810190613ba8565b60015b613494575f92505050610b6f565b506016546001600160a01b03165f908152600560205260409020805482900390555b50506013805483900390555b50919050565b60405180608001604052805f6001600160a01b031681526020016134ea613597565b81526020016134f7613597565b81526020015f81525090565b60018301918390821561358b579160200282015f5b8382111561355a57835183826101000a81548162ffffff021916908362ffffff1602179055509260200192600301602081600201049283019260010302613518565b80156135895782816101000a81549062ffffff021916905560030160208160020104928301926001030261355a565b505b506113169291506135b5565b60405180606001604052806003906020820280368337509192915050565b5b80821115611316575f81556001016135b6565b8015158114610d2e575f80fd5b5f805f604084860312156135e8575f80fd5b833567ffffffffffffffff808211156135ff575f80fd5b818601915086601f830112613612575f80fd5b813581811115613620575f80fd5b8760208260051b8501011115613634575f80fd5b6020928301955093505084013561364a816135c9565b809150509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6136956020830184613655565b9392505050565b80356001600160a01b03811681146136b2575f80fd5b919050565b5f80604083850312156136c8575f80fd5b6136d18361369c565b946020939093013593505050565b803562ffffff811681146136b2575f80fd5b5f82601f830112613700575f80fd5b6040516060810181811067ffffffffffffffff8211171561372f57634e487b7160e01b5f52604160045260245ffd5b604052806060840185811115613743575f80fd5b845b8181101561376457613756816136df565b835260209283019201613745565b509195945050505050565b5f805f806101008587031215613783575f80fd5b843560ff81168114613793575f80fd5b93506137a16020860161369c565b92506137b086604087016136f1565b91506137bf8660a087016136f1565b905092959194509250565b5f805f606084860312156137dc575f80fd5b6137e58461369c565b92506137f36020850161369c565b9150604084013590509250925092565b5f60208284031215613813575f80fd5b8135613695816135c9565b5f6020828403121561382e575f80fd5b813563ffffffff81168114613695575f80fd5b60c081525f61385360c0830189613655565b82810360208401526138658189613655565b60ff881660408501526001600160a01b03871660608501526080840186905283810360a085015290506138988185613655565b9998505050505050505050565b5f602082840312156138b5575f80fd5b6136958261369c565b5f80604083850312156138cf575f80fd5b6138d8836136df565b91506138e6602084016136df565b90509250929050565b805f5b6003811015610c0e57815162ffffff168452602093840193909101906001016138f2565b602080825282518282018190525f919060409081850190868401855b8281101561398857815180516001600160a01b0316855286810151613959888701826138ef565b508581015161396b60808701826138ef565b506060015160e08501526101009093019290850190600101613932565b5091979650505050505050565b5f80604083850312156139a6575f80fd5b6139af8361369c565b91506138e66020840161369c565b5f80604083850312156139ce575f80fd5b6139d78361369c565b915060208301356139e7816135c9565b809150509250929050565b6020808252600c908201526b155b985d5d1a1bdc9a5e995960a21b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b600181811c90821680613a4057607f821691505b6020821081036134c257634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b62ffffff81811683821602808216919082811461314957613149613a5e565b634e487b7160e01b5f52601260045260245ffd5b60ff851681526001600160a01b03841660208201526101008101613acc60408301856138ef565b613ad960a08301846138ef565b95945050505050565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015613b325784516001600160a01b031683529383019391830191600101613b0d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f60208284031215613b63575f80fd5b5051919050565b81810381811115610b6f57610b6f613a5e565b5f805f60608486031215613b8f575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215613bb8575f80fd5b8151613695816135c956fea2646970667358221220aff51dfab49eed74101ce86f99bd9d0b36e9585f6a9c27f2e51c7a7babe2d7f264736f6c6343000819003317ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ee48656164206f66204465706172746d656e74206f6620476f7665726e6d656e7420456666696369656e6379