[ { "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": "RenouncedMaxBalance", "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": "uint24", "name": "percent", "type": "uint24" } ], "name": "SetMaxBalancePercent", "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": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "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": "getMaxBalancePercent", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "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": "token", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "recoverERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "recoverNative", "outputs": [], "stateMutability": "nonpayable", "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": "renounceMaxBalance", "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": "MaxBalance", "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": "uint24", "name": "percent", "type": "uint24" } ], "name": "setMaxBalancePercent", "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": "totalBurned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "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" } ]
60c060405234801561000f575f80fd5b506040805180820190915260078152664d62615045504560c81b6020820152601f9061003b90826110b5565b50604051806040016040528060058152602001644d5045504560d81b8152506020908161006891906110b5565b50601260a0526c028a2d442d2cab38931f80000060095561009c73d8f986b1ab4a47d4396f43d524cd2a8bf359ffcb610310565b6100bd73d8f986b1ab4a47d4396f43d524cd2a8bf359ffcb620186a0610361565b6100ef737a250d5630b4cf539739df2c5dacb4c659f2488d73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26103db565b6100fa610258610601565b6101033061065c565b6007805460ff65ffffffffffff60c81b0119167cfa00003200000000000000000000000000000000000000000000000001179055600954620186a060328202819004600c5560fa90910204600d556008805465ffffffffffff1916650186a0000064179055600954620186a060648202819004600e5590810204600f5560408051606080820183525f808352602080840182905283850182905284519283018552610bb8808452908301819052938201939093526101d79291738881d9869ac7c7840971caac043d7f4d144abd1091610804565b6040805160608082018352612710808352602080840182905283850191909152835191820184526175308083529082018190529281019290925261023391600191738e609eb1cf61e096ae04dcb1feb630e886edb3dd91610804565b6040805160e08101825273d8f986b1ab4a47d4396f43d524cd2a8bf359ffcb815273d64628371141c72d7c277fe68cb281411f26909a602082015273ab229e55e134236d6652cef169a072b472a639a4918101919091527385ff2e4bea9f9b2c24f93711f1c5106e98da044d6060820152735631e75965fa7125a021f97bc3f0dd35ecde4064608082015273dc6abe3ef7d1fbc7106468088735bb7e8999ee2e60a0820152738e609eb1cf61e096ae04dcb1feb630e886edb3dd60c08201526102fb90610d87565b6103066107d0610dcb565b6001608052611233565b601e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6080511561036d575f80fd5b5f6103856009548362ffffff16610e4c60201b60201c565b6001600160a01b0384165f8181526020818152604080832085905551848152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b5f8290505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561041c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104409190611174565b6040516364e329cb60e11b81523060048201526001600160a01b0385811660248301529192505f9183169063c9c65396906044016020604051808303815f875af1158015610490573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104b49190611174565b90506040518060a00160405280866001600160a01b03168152602001826001600160a01b03168152602001856001600160a01b03168152602001846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561052a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061054e9190611174565b6001600160a01b0390811682525f60209283018190528351601980549184166001600160a01b031992831617905592840151601a805491841691851682179055604080860151601b80549186169187169190911790556060860151601c8054918616918716919091179055608090950151601d8054918516919095161790935592519192908816917f068ccb581b10310dd98c3f0999214bce7660c126ffa63a399df0287144582d579190a35050505050565b6008805463ffffffff60901b1916600160901b63ffffffff8416908102919091179091556040519081527f703cced883e2faf6a2d5c676ef2f9dd7cfafa0acecee468ece9314ecf462ba91906020015b60405180910390a150565b60805115801561067357506001600160a01b038116155b8061068657506001600160a01b03811630145b8061069e5750601c546001600160a01b038281169116145b8061078f57506019546040805163c45a015560e01b815290515f926001600160a01b03169163c45a01559160048083019260209291908290030181865afa1580156106eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070f9190611174565b601c5460405163e6a4390560e01b81526001600160a01b039182166004820152848216602482015291169063e6a43905906044016020604051808303815f875af115801561075f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107839190611174565b6001600160a01b031614155b6107ca5760405162461bcd60e51b81526020600482015260076024820152662737902830b4b960c91b60448201526064015b60405180910390fd5b6001600160a01b038116156107df57806107e1565b305b601880546001600160a01b0319166001600160a01b039290921691909117905550565b60058460ff161115610814575f80fd5b6001600160a01b038316301480159061083557506001600160a01b03831615155b61083d575f80fd5b60ff84165f818152600460205260409020901580159061086757506001600160a01b03841661dead145b801561087657505f8160030154115b156108b55760405162461bcd60e51b815260206004820152600f60248201526e556e636c61696d656420746178657360881b60448201526064016107c1565b60018101805484516007805462ffffff60381b19811662ffffff9485169093036701000000000000008083048616919091018516810293841780845586546020808c015162ffffff60501b1990971665ffffffffffff60381b199095169490941763010000009182900488169096036a01000000000000000000009283900488160187169091029490941780845595546040808b015162ffffff60681b1989166601000000000000938490048916909103600160681b808b048a169190910189160290811780875560028b0180548d5162ffffff60801b1990941665ffffffffffff60681b19909c169b909b179a8a16909203600160801b918290048a1601891602989098178086558854948b015162ffffff60981b198216979095048816909403600160981b8086048916919091018816029586178086559754908a0151600160b01b988990048816929091048716900301851690950262ffffff60b01b1990931665ffffffffffff60981b199091161791909117908190556161a89290041611801590610aae57506007546161a86a010000000000000000000090910462ffffff1611801590610a7857506007546161a8600160681b90910462ffffff1611155b8015610aae57506007546161a86a0100000000000000000000820462ffffff908116600160681b90930481169290920190911611155b610ae55760405162461bcd60e51b8152602060048201526008602482015267090d2ced040a8c2f60c31b60448201526064016107c1565b60075462015f90600160801b90910462ffffff1611801590610b19575060075462015f90600160981b90910462ffffff1611155b8015610b37575060075462015f90600160b01b90910462ffffff1611155b610b755760405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642050656e616c747960881b60448201526064016107c1565b8054610100600160a81b0319166101006001600160a01b03861602178155610ba260018201846003610f71565b506080518015610bb457505f8560ff16115b15610d1e575f808052600460209081527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec54604080516060808201835285825293810185905280820185905281519384019091526002850154610d1e94936101009093046001600160a01b031692908190606490600a62ffffff9182160216046064895f6020020151600a0262ffffff1681610c5257610c526111b5565b5f808052600460208181525f805160206157538339815191525462ffffff8082169690950496909603949094018316865260028c01548d850151928052908452630100000094859004831660649582048416600a9081028516879004938102851687900493909303018316938601939093526040808d01519501946601000000000000909304821681028216849004939202165f805260046020525f805160206157538339815191525462ffffff66010000000000009091048116929091049290920301169052610804565b610d2d60028201836003610f71565b50805460ff16610d4357805460ff191660011781555b7f30034b3ad500b0a06492ddcfbb1eedee788dff84a77d76d5c3658ab517cec51a85858585604051610d7894939291906111f6565b60405180910390a15050505050565b60805115610d93575f80fd5b5f5b6007811015610dc757610dbf828260078110610db357610db36111a1565b60200201516001610e56565b600101610d95565b5050565b6007805462ffffff60201b191664010000000062ffffff841690810291909117909155610df8575f610e0a565b600954620186a062ffffff8316909102045b600b55608051610e495760405162ffffff821681527fd03edfeea801807308f0e9302e347c8a12ad32508cae5bce26e9e2a3654158c990602001610651565b50565b620186a091020490565b60175460ff1615610e65575f80fd5b6001600160a01b03821615801590610e8857506001600160a01b03821661dead14155b610e90575f80fd5b6019546001600160a01b03838116911614801590610ebc5750601a546001600160a01b03838116911614155b610f135760405162461bcd60e51b815260206004820152602260248201527f44455820726f7574657220616e642070616972206172652070726976696c6567604482015261195960f21b60648201526084016107c1565b6001600160a01b0382165f81815260026020908152604091829020805460ff191685151590811790915591519182527fa54714518c5d275fdcd3d2a461e4858e4e8cb04fb93cd0bca9d6d34115f26440910160405180910390a25050565b600183019183908215610ff9579160200282015f5b83821115610fc857835183826101000a81548162ffffff021916908362ffffff1602179055509260200192600301602081600201049283019260010302610f86565b8015610ff75782816101000a81549062ffffff0219169055600301602081600201049283019260010302610fc8565b505b50611005929150611009565b5090565b5b80821115611005575f815560010161100a565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061104557607f821691505b60208210810361106357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156110b057805f5260205f20601f840160051c8101602085101561108e5750805b601f840160051c820191505b818110156110ad575f815560010161109a565b50505b505050565b81516001600160401b038111156110ce576110ce61101d565b6110e2816110dc8454611031565b84611069565b602080601f831160018114611115575f84156110fe5750858301515b5f19600386901b1c1916600185901b17855561116c565b5f85815260208120601f198616915b8281101561114357888601518255948401946001909101908401611124565b508582101561116057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215611184575f80fd5b81516001600160a01b038116811461119a575f80fd5b9392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b805f5b60038110156111f057815162ffffff168452602093840193909101906001016111cc565b50505050565b60ff851681526001600160a01b0384166020820152610100810161121d60408301856111c9565b61122a60a08301846111c9565b95945050505050565b60805160a0516144f16112625f395f8181610510015261102501525f81816124f40152612dfe01526144f15ff3fe60806040526004361061038b575f3560e01c806377004851116101d9578063be5e49b211610100578063d89135cd11610099578063f2fde38b1161006b578063f2fde38b14610b12578063f3dc4f4814610b31578063f59c370814610b6d578063f7de0e5714610b8c57005b8063d89135cd14610aa1578063dd62ed3e14610ab5578063edd286cf14610ad4578063f2cda82e14610af357005b8063cc1776d3116100d2578063cc1776d314610a07578063d232c22014610a1b578063d6a018eb14610a6e578063d8454a8214610a8d57005b8063be5e49b2146109a3578063c2921583146109c2578063c77e006d146109df578063c78fe0d4146109f357005b806395d89b4111610172578063a457c2d711610144578063a457c2d714610927578063a4d8971a14610946578063a5596b4f14610965578063a9059cbb1461098457005b806395d89b41146108c757806396ce0795146108db57806397a26b9e146108ef5780639c5ef8d71461091357005b80638bf1acff116101ab5780638bf1acff146108585780638d8350ca1461086c5780638da5cb5b1461088b57806395101f90146108a857005b806377004851146107fd57806379cc6790146108115780638324c3b9146108305780638a8c523c1461084457005b806339509351116102bd57806354fd4d50116102565780636f05be97116102285780636f05be971461077357806370a0823114610794578063715018a6146107c857806375de1496146107dc57005b806354fd4d50146106d95780635a0d4f88146107065780635b90fe66146107235780635f6417581461075457005b806342966c681161028f57806342966c681461065c57806344b691ff1461067b5780634b7d9db41461069a5780634f7041a5146106b157005b806339509351146105b65780633af32abf146105d55780633b7854de1461060c5780633ed8a1691461063d57005b8063186488a81161032f578063313ce56711610301578063313ce567146104fd57806332acf3de1461053a578063370158ea1461057c57806339137f8b146105a257005b8063186488a81461048157806323b872dd146104a05780632623e975146104bf5780632984207a146104de57005b806307e9652c1161036857806307e9652c14610408578063095ea7b3146104255780631171bda91461044457806318160ddd1461046357005b806301b38af514610394578063064a59d0146103b357806306fdde03146103e757005b3661039257005b005b34801561039f575f80fd5b506103926103ae366004613e66565b610ba9565b3480156103be575f80fd5b50600854600160501b900463ffffffff1615155b60405190151581526020015b60405180910390f35b3480156103f2575f80fd5b506103fb610c26565b6040516103de9190613f13565b348015610413575f80fd5b5060075462010000900460ff166103d2565b348015610430575f80fd5b506103d261043f366004613f40565b610cb6565b34801561044f575f80fd5b5061039261045e366004613f6a565b610ccc565b34801561046e575f80fd5b506009545b6040519081526020016103de565b34801561048c575f80fd5b5061039261049b36600461403d565b610e5e565b3480156104ab575f80fd5b506103d26104ba366004613f6a565b610ef8565b3480156104ca575f80fd5b506103926104d936600461409a565b610f19565b3480156104e9575f80fd5b506103926104f83660046140b5565b610fb8565b348015610508575f80fd5b5060405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016103de565b348015610545575f80fd5b5060075462ffffff600160c81b8204811691600160e01b9004165b6040805162ffffff9384168152929091166020830152016103de565b348015610587575f80fd5b50610590611017565b6040516103de969594939291906140d8565b3480156105ad575f80fd5b506103926111a2565b3480156105c1575f80fd5b506103d26105d0366004613f40565b611203565b3480156105e0575f80fd5b506103d26105ef36600461413c565b6001600160a01b03165f9081526002602052604090205460ff1690565b348015610617575f80fd5b50601d546001600160a01b03165b6040516001600160a01b0390911681526020016103de565b348015610648575f80fd5b50610392610657366004614157565b61121a565b348015610667575f80fd5b50610392610676366004614170565b6112d0565b348015610686575f80fd5b50610392610695366004614187565b6112da565b3480156106a5575f80fd5b5060075460ff166103d2565b3480156106bc575f80fd5b506106c56113dc565b60405162ffffff90911681526020016103de565b3480156106e4575f80fd5b50604080518082019091526005815264312e302e3360d81b60208201526103fb565b348015610711575f80fd5b506018546001600160a01b0316610625565b34801561072e575f80fd5b50600854600160901b900463ffffffff1660405163ffffffff90911681526020016103de565b34801561075f575f80fd5b506106c561076e36600461413c565b6113eb565b34801561077e575f80fd5b506107876114e6565b6040516103de91906141df565b34801561079f575f80fd5b506104736107ae36600461413c565b6001600160a01b03165f9081526020819052604090205490565b3480156107d3575f80fd5b50610392611677565b3480156107e7575f80fd5b50600754640100000000900462ffffff166106c5565b348015610808575f80fd5b506103926116bf565b34801561081c575f80fd5b5061039261082b366004613f40565b611700565b34801561083b575f80fd5b50610392611715565b34801561084f575f80fd5b5061039261177a565b348015610863575f80fd5b506106c5611851565b348015610877575f80fd5b506106c561088636600461413c565b611857565b348015610896575f80fd5b50601e546001600160a01b0316610625565b3480156108b3575f80fd5b506106c56108c236600461413c565b61191a565b3480156108d2575f80fd5b506103fb6119f6565b3480156108e6575f80fd5b506103e86106c5565b3480156108fa575f80fd5b5060085462ffffff808216916301000000900416610560565b34801561091e575f80fd5b50610392611a05565b348015610932575f80fd5b506103d2610941366004613f40565b611a7a565b348015610951575f80fd5b5061039261096036600461409a565b611ada565b348015610970575f80fd5b5061039261097f36600461409a565b611b66565b34801561098f575f80fd5b506103d261099e366004613f40565b611bc1565b3480156109ae575f80fd5b506103926109bd36600461413c565b611bcd565b3480156109cd575f80fd5b50601a546001600160a01b0316610625565b3480156109ea575f80fd5b50610392611c2d565b3480156109fe575f80fd5b50610392611c90565b348015610a12575f80fd5b506106c5611cf7565b348015610a26575f80fd5b506017546040805160ff8084161515825261010084048116151560208301526301000000840481161515928201929092526201000090920416151560608201526080016103de565b348015610a79575f80fd5b50610392610a88366004614187565b611d01565b348015610a98575f80fd5b50601254610473565b348015610aac575f80fd5b50600a54610473565b348015610ac0575f80fd5b50610473610acf36600461425e565b611e1f565b348015610adf575f80fd5b50610392610aee36600461413c565b611e49565b348015610afe575f80fd5b50610392610b0d366004613f40565b611e91565b348015610b1d575f80fd5b50610392610b2c36600461413c565b611f76565b348015610b3c575f80fd5b506103d2610b4b36600461413c565b6001600160a01b03165f90815260036020526040902054610100900460ff1690565b348015610b78575f80fd5b50610392610b87366004614295565b611fbb565b348015610b97575f80fd5b506019546001600160a01b0316610625565b601e546001600160a01b03163314610bdc5760405162461bcd60e51b8152600401610bd3906142c1565b60405180910390fd5b815f5b81811015610c1f57610c17858583818110610bfc57610bfc6142e7565b9050602002016020810190610c11919061413c565b84611feb565b600101610bdf565b5050505050565b6060601f8054610c35906142fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610c61906142fb565b8015610cac5780601f10610c8357610100808354040283529160200191610cac565b820191905f5260205f20905b815481529060010190602001808311610c8f57829003601f168201915b5050505050905090565b5f610cc2338484612106565b5060015b92915050565b601e546001600160a01b03163314610cf65760405162461bcd60e51b8152600401610bd3906142c1565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610d3a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5e919061432d565b90505f6001600160a01b0385163014610dab576018546001600160a01b03868116911614610d8c575f610db3565b6018546001600160a01b03165f90815260056020526040902054610db3565b601054601454015b90508282821015610dc45781610dc6565b825b83031015610de65760405162461bcd60e51b8152600401610bd390614344565b505060405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af1158015610e34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e58919061436d565b50505050565b601e546001600160a01b03163314610e885760405162461bcd60e51b8152600401610bd3906142c1565b60175462010000900460ff1615610e9d575f80fd5b60018460ff1610158015610eb5575060058460ff1611155b610eec5760405162461bcd60e51b815260206004820152600860248201526714995cd95c9d995960c21b6044820152606401610bd3565b610e5884848484612167565b5f610f04843384612714565b610f0f848484612777565b5060019392505050565b601e546001600160a01b03163314610f435760405162461bcd60e51b8152600401610bd3906142c1565b6017546301000000900460ff1615610f59575f80fd5b801580610f7057506019546001600160a01b031615155b610fa55760405162461bcd60e51b815260206004820152600660248201526509cde40888ab60d31b6044820152606401610bd3565b6007805460ff1916911515919091179055565b601e546001600160a01b03163314610fe25760405162461bcd60e51b8152600401610bd3906142c1565b60175462010000900460ff1615610ff7575f80fd5b6102588163ffffffff16111561100b575f80fd5b61101481612d61565b50565b6060805f805f6060601f60207f0000000000000000000000000000000000000000000000000000000000000000601e5f9054906101000a90046001600160a01b031660095460405180604001604052806005815260200164312e302e3360d81b815250858054611086906142fb565b80601f01602080910402602001604051908101604052809291908181526020018280546110b2906142fb565b80156110fd5780601f106110d4576101008083540402835291602001916110fd565b820191905f5260205f20905b8154815290600101906020018083116110e057829003601f168201915b50505050509550848054611110906142fb565b80601f016020809104026020016040519081016040528092919081815260200182805461113c906142fb565b80156111875780601f1061115e57610100808354040283529160200191611187565b820191905f5260205f20905b81548152906001019060200180831161116a57829003601f168201915b50505050509450955095509550955095509550909192939495565b601e546001600160a01b031633146111cc5760405162461bcd60e51b8152600401610bd3906142c1565b6017805460ff191660011790556040517f951371dba26ef6174e32c5005af266bb9a0405124df206f136f85716d9c96093905f90a1565b5f610cc23384846112143388611e1f565b01612106565b601e546001600160a01b031633146112445760405162461bcd60e51b8152600401610bd3906142c1565b601754610100900460ff1615611258575f80fd5b62ffffff81161580611283575060648162ffffff16101580156112835750620186a062ffffff821611155b61128b575f80fd5b61129481612db5565b60405162ffffff821681527fd03edfeea801807308f0e9302e347c8a12ad32508cae5bce26e9e2a3654158c9906020015b60405180910390a150565b6110143382612e56565b601e546001600160a01b031633146113045760405162461bcd60e51b8152600401610bd3906142c1565b6017546301000000900460ff161561131a575f80fd5b60018262ffffff161015801561133757506103e88262ffffff1611155b6113725760405162461bcd60e51b815260206004820152600c60248201526b302e3030312520746f20312560a01b6044820152606401610bd3565b8162ffffff168162ffffff161015801561139357506103e88162ffffff1611155b6113ce5760405162461bcd60e51b815260206004820152600c60248201526b302e3030312520746f20312560a01b6044820152606401610bd3565b6113d88282612eb7565b5050565b5f6113e63361191a565b905090565b6007545f9062010000900460ff161561140557505f919050565b6001600160a01b03821630148061143357506001600160a01b0382165f9081526002602052604090205460ff165b8061144b5750601a546001600160a01b038381169116145b8061146357506019546001600160a01b038381169116145b6114df576001600160a01b0382165f90815260036020526040902054610100900460ff16806114b3575060085463ffffffff428116600160901b83048216600160501b9093048216929092011610155b6114cb57600754600160681b900462ffffff16610cc6565b600754600160b01b900462ffffff16610cc6565b5f92915050565b60408051600680825260e08201909252606091816020015b611506613d58565b8152602001906001900390816114fe5790505090505f5b60068160ff161015611673576040805160808101825260ff83165f81815260046020818152858320805461010090046001600160a01b03168652938352908152845160608101958690529394908501939260010191600391908390855b82829054906101000a900462ffffff1662ffffff168152602001906003019060208260020104928301926001038202915080841161157a579050505050918352505060ff83165f9081526004602090815260409182902082516060810190935292019160020160038282826020028201915f905b82829054906101000a900462ffffff1662ffffff16815260200190600301906020826002010492830192600103820291508084116115ee5750505092845250505060ff83165f8181526004602090815260409091206003015492019190915283518491908110611660576116606142e7565b602090810291909101015260010161151d565b5090565b601e546001600160a01b031633146116a15760405162461bcd60e51b8152600401610bd3906142c1565b6017805463ffffffff191663010101011790556116bd5f612f0c565b565b60075460ff1680156116d95750600754610100900460ff16155b80156116ef57506007546301000000900460ff16155b6116f7575f80fd5b6116bd5f612f5d565b61170b823383612714565b6113d88282612e56565b601e546001600160a01b0316331461173f5760405162461bcd60e51b8152600401610bd3906142c1565b6017805462ff00001916620100001790556040517fb18b29d65a3b95dc80df0b9528f12b8592bd02395ca19228958e8b7cdf3ddd2b905f90a1565b601e546001600160a01b031633146117a45760405162461bcd60e51b8152600401610bd3906142c1565b6017546301000000900460ff16156117ba575f80fd5b600854600160501b900463ffffffff16156118095760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610bd3565b6008805463ffffffff60501b1916600160501b63ffffffff4216021790556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c7905f90a1565b5f6113e6335b5f6001600160a01b03821630148061188657506001600160a01b0382165f9081526002602052604090205460ff165b8061189e5750601a546001600160a01b038381169116145b6114df576001600160a01b0382165f90815260036020526040902054610100900460ff16806118ee575060085463ffffffff428116600160901b83048216600160501b9093048216929092011610155b61190657600754600160381b900462ffffff16610cc6565b600754600160801b900462ffffff16610cc6565b6007545f9062010000900460ff161561193457505f919050565b6001600160a01b03821630148061196257506001600160a01b0382165f9081526002602052604090205460ff165b8061197a5750601a546001600160a01b038381169116145b6114df576001600160a01b0382165f90815260036020526040902054610100900460ff16806119ca575060085463ffffffff428116600160901b83048216600160501b9093048216929092011610155b6119e257600754600160501b900462ffffff16610cc6565b600754600160981b900462ffffff16610cc6565b606060208054610c35906142fb565b601e546001600160a01b0316331480611a2c5750335f9081526002602052604090205460ff165b611a485760405162461bcd60e51b8152600401610bd3906142c1565b600754610100900460ff16158015611a6a57506007546301000000900460ff16155b611a72575f80fd5b6116bd613357565b5f80611a863385611e1f565b905082811015611acd5760405162461bcd60e51b81526020600482015260126024820152714e6567617469766520616c6c6f77616e636560701b6044820152606401610bd3565b610f0f3385858403612106565b601e546001600160a01b0316331480611b015750335f9081526002602052604090205460ff165b611b1d5760405162461bcd60e51b8152600401610bd3906142c1565b8080611b2b575060075460ff165b8015611b3f5750600754610100900460ff16155b8015611b5557506007546301000000900460ff16155b611b5d575f80fd5b61101481612f5d565b601e546001600160a01b03163314611b905760405162461bcd60e51b8152600401610bd3906142c1565b60175462010000900460ff1615611ba5575f80fd5b60078054911515620100000262ff000019909216919091179055565b5f610cc2338484612777565b601e546001600160a01b03163314611bf75760405162461bcd60e51b8152600401610bd3906142c1565b60175462010000900460ff1615611c0c575f80fd5b6001600160a01b03165f908152600360205260409020805461ff0019169055565b601e546001600160a01b03163314611c575760405162461bcd60e51b8152600401610bd3906142c1565b6017805461ff0019166101001790556040517f6754c879eecdc6d0fbd95c51f8e377373a9f6be654462f792774fe3740e317ee905f90a1565b601e546001600160a01b03163314611cba5760405162461bcd60e51b8152600401610bd3906142c1565b6017805463ff000000191663010000001790556040517ff7f7205ed48f7a35df9b5857667bdee0189d5d7cd80588f217a82641c3b4d08c905f90a1565b5f6113e6336113eb565b601e546001600160a01b03163314611d2b5760405162461bcd60e51b8152600401610bd3906142c1565b6017546301000000900460ff1615611d41575f80fd5b600a8262ffffff1610158015611d6d5750611d5f6103e8606461439c565b62ffffff168262ffffff1611155b611da95760405162461bcd60e51b815260206004820152600d60248201526c302e30312520746f203130302560981b6044820152606401610bd3565b8162ffffff168162ffffff1610158015611dd95750611dcb6103e8606461439c565b62ffffff168162ffffff1611155b611e155760405162461bcd60e51b815260206004820152600d60248201526c302e30312520746f203130302560981b6044820152606401610bd3565b6113d882826134c9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b601e546001600160a01b03163314611e735760405162461bcd60e51b8152600401610bd3906142c1565b601d80546001600160a01b0319166001600160a01b03831617905550565b601e546001600160a01b03163314611ebb5760405162461bcd60e51b8152600401610bd3906142c1565b601c5460185447915f916001600160a01b03908116911614611edd575f611ee1565b6016545b90508282821015611ef25781611ef4565b825b83031015611f145760405162461bcd60e51b8152600401610bd390614344565b50505f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611f5f576040519150601f19603f3d011682016040523d82523d5f602084013e611f64565b606091505b5050905080611f71575f80fd5b505050565b601e546001600160a01b03163314611fa05760405162461bcd60e51b8152600401610bd3906142c1565b6001600160a01b038116611fb2575f80fd5b61101481612f0c565b601e546001600160a01b03163314611fe55760405162461bcd60e51b8152600401610bd3906142c1565b6113d882825b60175460ff1615611ffa575f80fd5b6001600160a01b0382161580159061201d57506001600160a01b03821661dead14155b612025575f80fd5b6019546001600160a01b038381169116148015906120515750601a546001600160a01b03838116911614155b6120a85760405162461bcd60e51b815260206004820152602260248201527f44455820726f7574657220616e642070616972206172652070726976696c6567604482015261195960f21b6064820152608401610bd3565b6001600160a01b0382165f81815260026020908152604091829020805460ff191685151590811790915591519182527fa54714518c5d275fdcd3d2a461e4858e4e8cb04fb93cd0bca9d6d34115f26440910160405180910390a25050565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60058460ff161115612177575f80fd5b6001600160a01b038316301480159061219857506001600160a01b03831615155b6121a0575f80fd5b60ff84165f81815260046020526040902090158015906121ca57506001600160a01b03841661dead145b80156121d957505f8160030154115b156122185760405162461bcd60e51b815260206004820152600f60248201526e556e636c61696d656420746178657360881b6044820152606401610bd3565b60018101805484516007805469ffffff0000000000000019811662ffffff948516909303600160381b8083048616919091018516810293841780845586546020808c015162ffffff60501b199097166cffffffffffff0000000000000019909516949094176301000000918290048816909603600160501b9283900488160187169091029490941780845595546040808b015162ffffff60681b198916600160301b938490048916909103600160681b808b048a169190910189160290811780875560028b0180548d5162ffffff60801b1990941665ffffffffffff60681b19909c169b909b179a8a16909203600160801b918290048a1601891602989098178086558854948b015162ffffff60981b198216979095048816909403600160981b8086048916919091018816029586178086559754908a0151600160b01b988990048816929091048716900301851690950262ffffff60b01b1990931665ffffffffffff60981b199091161791909117908190556161a892900416118015906123fd57506007546161a8600160501b90910462ffffff16118015906123ce57506007546161a8600160681b90910462ffffff1611155b80156123fd57506007546161a8600160501b820462ffffff908116600160681b90930481169290920190911611155b6124345760405162461bcd60e51b8152602060048201526008602482015267090d2ced040a8c2f60c31b6044820152606401610bd3565b60075462015f90600160801b90910462ffffff1611801590612468575060075462015f90600160981b90910462ffffff1611155b8015612486575060075462015f90600160b01b90910462ffffff1611155b6124c45760405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642050656e616c747960881b6044820152606401610bd3565b8054610100600160a81b0319166101006001600160a01b038616021781556124f160018201846003613d93565b507f0000000000000000000000000000000000000000000000000000000000000000801561252157505f8560ff16115b156126ab575f808052600460209081527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec546040805160608082018352858252938101859052808201859052815193840190915260028501546126ab94936101009093046001600160a01b031692908190606490600a62ffffff9182160216046064895f6020020151600a0262ffffff16816125bf576125bf6143bb565b5f808052600460208181527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ee5462ffffff8082169690950496909603949094018316865260028c01548d850151928052908452630100000094859004831660649582048416600a9081028516879004938102851687900493909303018316938601939093526040808d0151950194600160301b909304821681028216849004939202165f805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ee5462ffffff600160301b9091048116929091049290920301169052612167565b6126ba60028201836003613d93565b50805460ff166126d057805460ff191660011781555b7f30034b3ad500b0a06492ddcfbb1eedee788dff84a77d76d5c3658ab517cec51a8585858560405161270594939291906143cf565b60405180910390a15050505050565b5f61271f8484611e1f565b90508181101561276a5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b6044820152606401610bd3565b610e588484848403612106565b61deac196001600160a01b0383160161279457611f718382612e56565b6007546301000000900460ff161580156127b65750600754610100900460ff16155b80156127e95750601a546001600160a01b038481169116148015906127e957506019546001600160a01b03848116911614155b156127ff576127f75f612f5d565b6127ff613357565b5f8111801561282657506001600160a01b0383165f9081526002602052604090205460ff16155b801561284a57506001600160a01b0382165f9081526002602052604090205460ff16155b801561285f57506001600160a01b0383163014155b801561287457506001600160a01b0382163014155b801561288e57506019546001600160a01b03838116911614155b15612d5657601a546001600160a01b038481169116148015906128bf5750601a546001600160a01b03838116911614155b806129085750601a546001600160a01b03848116911614806128ee5750601a546001600160a01b038381169116145b80156129085750600854600160501b900463ffffffff1615155b6129475760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b6044820152606401610bd3565b600b54158061295e57506001600160a01b03821630145b8061298d5750601a546001600160a01b038381169116148061298d57506019546001600160a01b038381169116145b806129b35750600b546001600160a01b0383165f90815260208190526040902054820111155b6129f45760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617842616c616e636560701b6044820152606401610bd3565b60075462010000900460ff16158015612a1757506007546301000000900460ff16155b8015612a2b5750600754610100900460ff16155b15612d5657601a545f9081906001600160a01b0386811691161480612a5d5750601a546001600160a01b038581169116145b15612a8457601a546001600160a01b03868116911614612a7e576002612a81565b60015b90505b5f8160ff16600114612a965785612a98565b845b60085490915063ffffffff428116600160901b83048216600160501b9093048216929092011610801590612ae957506001600160a01b0381165f90815260036020526040902054610100900460ff16155b15612b13576001600160a01b0381165f908152600360205260409020805461ff0019166101001790555b5f5b60068160ff161015612d3d575f808460ff1611612ba0576001600160a01b0383165f90815260036020526040902054610100900460ff16612b865760ff82165f908152600460205260408120600101905b600a91828204019190066003029054906101000a900462ffffff16612c68565b60ff82165f90815260046020526040812060020190612b66565b8360ff16600114612c06576001600160a01b0383165f90815260036020526040902054610100900460ff16612bea5760ff82165f9081526004602052604090206001016002612b66565b60ff82165f908152600460205260409020600290810190612b66565b6001600160a01b0383165f90815260036020526040902054610100900460ff16612c465760ff82165f908152600460205260409020600190810190612b66565b60ff82165f908152600460205260409020600201546301000000900462ffffff165b62ffffff169050805f03612c7c5750612d35565b620186a086820204612c8f893083613507565b601a5460ff84165f908152600460205260409020546001600160a01b0391821661010090910490911603612cca576010805482019055612d2e565b60ff83165f9081526004602052604090205461deac196101009091046001600160a01b031601612d0357612cfe3082612e56565b612d2e565b60ff83165f908152600460205260409020600301805482019055601480548201905560138054820190555b9490940193505b600101612b15565b508215612d5257601280548401905592829003925b5050505b611f71838383613507565b6008805463ffffffff60901b1916600160901b63ffffffff8416908102919091179091556040519081527f703cced883e2faf6a2d5c676ef2f9dd7cfafa0acecee468ece9314ecf462ba91906020016112c5565b6007805466ffffff00000000191664010000000062ffffff841690810291909117909155612de3575f612df9565b612df96009548262ffffff16620186a091020490565b600b557f00000000000000000000000000000000000000000000000000000000000000006110145760405162ffffff821681527fd03edfeea801807308f0e9302e347c8a12ad32508cae5bce26e9e2a3654158c9906020016112c5565b612e608282613622565b600754612e7990640100000000900462ffffff16612db5565b600754612e9b9062ffffff600160c81b8204811691600160e01b900416612eb7565b6008546113d89062ffffff8082169163010000009004166134c9565b6007805465ffffffffffff60c81b1916600160c81b62ffffff94851690810262ffffff60e01b191691909117600160e01b93909416928302939093179055600954620186a0928102839004600c550204600d55565b601e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6007805461ff00191661010017905580158015612f7d575060075460ff16155b613349575f8060105411612f91575f612fa5565b600260105481612fa357612fa36143bb565b045b601c546018549192505f916001600160a01b03908116911614612fc8575f612fcc565b6014545b905081810183158015612fe05750600d5481115b15613049575f8311612ff2575f613018565b600d546130189082620186a086028161300d5761300d6143bb565b04620186a091020490565b92505f8211613027575f613042565b600d546130429082620186a085028161300d5761300d6143bb565b9150508181015b83806130575750600c548110155b80156130735750305f9081526020819052604090205481840111155b1561324e5760408051600280825260608201835247925f92919060208301908036833701905050905030815f815181106130af576130af6142e7565b6001600160a01b039283166020918202929092010152601c548251911690829060019081106130e0576130e06142e7565b6001600160a01b0392831660209182029290920101526019546131069130911685612106565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac9479061313e9086905f9086903090429060040161440c565b5f604051808303815f87803b158015613155575f80fd5b505af1925050508015613166575060015b613187576019546131829030906001600160a01b03165f612106565b61324b565b60105415613199576010805486900390555b604080518481524784900360208201819052917f9029ea20319a59447bd88162928acbbbe0955dead46655370929b794e46e8d96910160405180910390a18015613249576131f58185620186a089028161300d5761300d6143bb565b601180549091019055601c546018546001600160a01b039182169116036132495761322e8185620186a088028161300d5761300d6143bb565b60168054909101905560158054860190556014805486900390555b505b50505b6018546001600160a01b0316301480159061327a5750601c546018546001600160a01b03908116911614155b1561331e576014549150831580156132935750600d5482115b1561329e57600d5491505b83806132ac5750600c548210155b80156132c65750305f908152602081905260409020548211155b1561331e576018545f906132e3906001600160a01b0316846136c3565b9050801561331c576018546001600160a01b03165f90815260056020526040902080548201905560158054840190556014805484900390555b505b50505061332a8161393a565b6008805463ffffffff60701b19164263ffffffff16600160701b021790555b506007805461ff0019169055565b6007805463ff00000019166301000000179055601354156134ba575f805b60068160ff1610156134535760ff81165f908152600460205260409020805460038201546101009091046001600160a01b03169015806133bf57506001600160a01b03811661dead145b806133d75750601a546001600160a01b038281169116145b156133e357505061344b565b6018545f90613421906001600160a01b0316301461340357601554613407565b6014545b6013546003860154620186a0028161300d5761300d6143bb565b90505f61342e8383613ae6565b90508015613446576003840180548290039055948501945b505050505b600101613375565b506008805469ffffffff0000000000001916600160301b63ffffffff42160217905580156134b8576013805482900390556040518181527fbb245b3c380b63918dc25ab2cc2e4b6939c4d58ffd95ea052b685a031e1ad2979060200160405180910390a15b505b6007805463ff00000019169055565b6008805462ffffff9283166301000000810265ffffffffffff1990921694909316938417179055600954620186a0928102839004600e550204600f55565b6001600160a01b0383161580159061352757506001600160a01b03821615155b6135735760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722066726f6d2f746f207a65726f20616464726573730000006044820152606401610bd3565b6001600160a01b0383165f908152602081905260409020548111156135aa5760405162461bcd60e51b8152600401610bd390614344565b80156135dd576001600160a01b038084165f90815260208190526040808220805485900390559184168152208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161215a91815260200190565b6001600160a01b0382165f908152602081905260409020548111156136595760405162461bcd60e51b8152600401610bd390614344565b6001600160a01b0382165f818152602081815260409182902080548590039055600980548590039055600a805485019055905183815261dead92917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015613709573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061372d919061432d565b604080516003808252608082019092529192505f91906020820160608036833701905050905030815f81518110613766576137666142e7565b6001600160a01b039283166020918202929092010152601c54825191169082906001908110613797576137976142e7565b60200260200101906001600160a01b031690816001600160a01b03168152505084816002815181106137cb576137cb6142e7565b6001600160a01b0392831660209182029290920101526019546137f19130911686612106565b601954604051635c11d79560e01b81526001600160a01b0390911690635c11d795906138299087905f9086903090429060040161440c565b5f604051808303815f87803b158015613840575f80fd5b505af1925050508015613851575060015b6138725760195461386d9030906001600160a01b03165f612106565b613932565b6040516370a0823160e01b815230600482015282906001600160a01b038716906370a0823190602401602060405180830381865afa1580156138b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138da919061432d565b6138e4919061447d565b604080516001600160a01b0388168152602081018790529081018290529093507fa82a03c1e8613c6192a82386fbb3690070528b0dd8bcae8a5c82d9ef937d7f769060600160405180910390a15b505092915050565b801580156139555750600e5460105410806139555750601154155b1561395d5750565b5f8115801561396f5750600f54601054115b61397b5760105461397f565b600f545b90505f821580156139935750600f54601054115b61399f576011546139c8565b6139c8601154601054600f54816139b8576139b86143bb565b04620186a002620186a091020490565b6019549091506139e39030906001600160a01b031684612106565b601954601d5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af193505050508015613a6f575060408051601f3d908101601f19168201909252613a6c91810190614490565b60015b613a8b57601954611f719030906001600160a01b03165f612106565b60408051848152602081018490529081018290527f947eb7d5785b0534dc368370fd3574434082455556a747116a88abea1ec6ceba9060600160405180910390a1505060108054849003905550601180548290039055505050565b5f815f03613af557505f610cc6565b601854306001600160a01b0390911603613bc9575f600b54118015613b345750600b546001600160a01b0384165f908152602081905260409020548301115b8015613b5857506001600160a01b0383165f9081526002602052604090205460ff16155b15613bb0576001600160a01b0383165f90815260208190526040902054600b5411613b83575f613ba0565b6001600160a01b0383165f90815260208190526040902054600b54035b9150815f03613bb057505f610cc6565b613bbb308484613507565b601480548390039055613d52565b6015545f90620186a0840281613be157613be16143bb565b601c546018549290910492505f916001600160a01b03918216911603613c8457601654620186a09083020490505f856001600160a01b031682617530906040515f60405180830381858888f193505050503d805f8114613c5c576040519150601f19603f3d011682016040523d82523d5f602084013e613c61565b606091505b5050905080613c75575f9350505050610cc6565b50601680548290039055613d46565b6018546001600160a01b03165f90815260056020526040902054620186a09083020460185460405163a9059cbb60e01b81526001600160a01b0388811660048301526024820184905292935091169063a9059cbb906044016020604051808303815f875af1925050508015613d16575060408051601f3d908101601f19168201909252613d139181019061436d565b60015b613d24575f92505050610cc6565b506018546001600160a01b03165f908152600560205260409020805482900390555b50506015805483900390555b50919050565b60405180608001604052805f6001600160a01b03168152602001613d7a613e27565b8152602001613d87613e27565b81526020015f81525090565b600183019183908215613e1b579160200282015f5b83821115613dea57835183826101000a81548162ffffff021916908362ffffff1602179055509260200192600301602081600201049283019260010302613da8565b8015613e195782816101000a81549062ffffff0219169055600301602081600201049283019260010302613dea565b505b50611673929150613e45565b60405180606001604052806003906020820280368337509192915050565b5b80821115611673575f8155600101613e46565b8015158114611014575f80fd5b5f805f60408486031215613e78575f80fd5b833567ffffffffffffffff80821115613e8f575f80fd5b818601915086601f830112613ea2575f80fd5b813581811115613eb0575f80fd5b8760208260051b8501011115613ec4575f80fd5b60209283019550935050840135613eda81613e59565b809150509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f613f256020830184613ee5565b9392505050565b6001600160a01b0381168114611014575f80fd5b5f8060408385031215613f51575f80fd5b8235613f5c81613f2c565b946020939093013593505050565b5f805f60608486031215613f7c575f80fd5b8335613f8781613f2c565b92506020840135613f9781613f2c565b929592945050506040919091013590565b803562ffffff81168114613fba575f80fd5b919050565b5f82601f830112613fce575f80fd5b6040516060810181811067ffffffffffffffff82111715613ffd57634e487b7160e01b5f52604160045260245ffd5b604052806060840185811115614011575f80fd5b845b818110156140325761402481613fa8565b835260209283019201614013565b509195945050505050565b5f805f806101008587031215614051575f80fd5b843560ff81168114614061575f80fd5b9350602085013561407181613f2c565b92506140808660408701613fbf565b915061408f8660a08701613fbf565b905092959194509250565b5f602082840312156140aa575f80fd5b8135613f2581613e59565b5f602082840312156140c5575f80fd5b813563ffffffff81168114613f25575f80fd5b60c081525f6140ea60c0830189613ee5565b82810360208401526140fc8189613ee5565b60ff881660408501526001600160a01b03871660608501526080840186905283810360a0850152905061412f8185613ee5565b9998505050505050505050565b5f6020828403121561414c575f80fd5b8135613f2581613f2c565b5f60208284031215614167575f80fd5b613f2582613fa8565b5f60208284031215614180575f80fd5b5035919050565b5f8060408385031215614198575f80fd5b6141a183613fa8565b91506141af60208401613fa8565b90509250929050565b805f5b6003811015610e5857815162ffffff168452602093840193909101906001016141bb565b602080825282518282018190525f919060409081850190868401855b8281101561425157815180516001600160a01b0316855286810151614222888701826141b8565b508581015161423460808701826141b8565b506060015160e085015261010090930192908501906001016141fb565b5091979650505050505050565b5f806040838503121561426f575f80fd5b823561427a81613f2c565b9150602083013561428a81613f2c565b809150509250929050565b5f80604083850312156142a6575f80fd5b82356142b181613f2c565b9150602083013561428a81613e59565b6020808252600c908201526b155b985d5d1a1bdc9a5e995960a21b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b600181811c9082168061430f57607f821691505b602082108103613d5257634e487b7160e01b5f52602260045260245ffd5b5f6020828403121561433d575f80fd5b5051919050565b6020808252600f908201526e457863656564732062616c616e636560881b604082015260600190565b5f6020828403121561437d575f80fd5b8151613f2581613e59565b634e487b7160e01b5f52601160045260245ffd5b62ffffff81811683821602808216919082811461393257613932614388565b634e487b7160e01b5f52601260045260245ffd5b60ff851681526001600160a01b038416602082015261010081016143f660408301856141b8565b61440360a08301846141b8565b95945050505050565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561445c5784516001600160a01b031683529383019391830191600101614437565b50506001600160a01b03969096166060850152505050608001529392505050565b81810381811115610cc657610cc6614388565b5f805f606084860312156144a2575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d71b598f253a6165f8195c77b55992aff30c801ca5d08e2cf79266cf505df2aa64736f6c6343000819003317ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ee