[ { "inputs": [ { "internalType": "uint256", "name": "initialSupply_", "type": "uint256" }, { "internalType": "address", "name": "feeReceiver_", "type": "address" }, { "internalType": "address", "name": "swapRouter_", "type": "address" }, { "components": [ { "internalType": "bool", "name": "feesInToken", "type": "bool" }, { "internalType": "uint16", "name": "buyFees", "type": "uint16" }, { "internalType": "uint16", "name": "sellFees", "type": "uint16" }, { "internalType": "uint16", "name": "transferFees", "type": "uint16" }, { "internalType": "uint16", "name": "burnFeeRatio", "type": "uint16" }, { "internalType": "uint16", "name": "liquidityFeeRatio", "type": "uint16" }, { "internalType": "uint16", "name": "collectorsFeeRatio", "type": "uint16" } ], "internalType": "struct TaxableToken.FeeConfiguration", "name": "feeConfiguration_", "type": "tuple" }, { "internalType": "address[]", "name": "collectors_", "type": "address[]" }, { "internalType": "uint256[]", "name": "shares_", "type": "uint256[]" } ], "stateMutability": "payable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "ExcludedFromFees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "FeeCollected", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "share", "type": "uint256" } ], "name": "FeeCollectorAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "FeeCollectorRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "oldShare", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newShare", "type": "uint256" } ], "name": "FeeCollectorUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "bool", "name": "feesInToken", "type": "bool" }, { "internalType": "uint16", "name": "buyFees", "type": "uint16" }, { "internalType": "uint16", "name": "sellFees", "type": "uint16" }, { "internalType": "uint16", "name": "transferFees", "type": "uint16" }, { "internalType": "uint16", "name": "burnFeeRatio", "type": "uint16" }, { "internalType": "uint16", "name": "liquidityFeeRatio", "type": "uint16" }, { "internalType": "uint16", "name": "collectorsFeeRatio", "type": "uint16" } ], "indexed": false, "internalType": "struct TaxableToken.FeeConfiguration", "name": "configuration", "type": "tuple" } ], "name": "FeeConfigurationUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "MaxTokenPerWalletUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pairAddress", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isLp", "type": "bool" } ], "name": "SetLpPool", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "router", "type": "address" }, { "indexed": true, "internalType": "address", "name": "pair", "type": "address" } ], "name": "SwapRouterUpdated", "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" }, { "inputs": [], "name": "BURNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "BURN_ADDRESS", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "EXCLUDED_FROM_ANTIWHALE_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEE_PRECISION", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_FEE", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TAX_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TOKEN_CODE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "share", "type": "uint256" } ], "name": "addFeeCollector", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "autoProcessFees", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "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": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bool", "name": "inToken", "type": "bool" } ], "name": "distributeFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "feeCollectorShare", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeConfiguration", "outputs": [ { "internalType": "bool", "name": "feesInToken", "type": "bool" }, { "internalType": "uint16", "name": "buyFees", "type": "uint16" }, { "internalType": "uint16", "name": "sellFees", "type": "uint16" }, { "internalType": "uint16", "name": "transferFees", "type": "uint16" }, { "internalType": "uint16", "name": "burnFeeRatio", "type": "uint16" }, { "internalType": "uint16", "name": "liquidityFeeRatio", "type": "uint16" }, { "internalType": "uint16", "name": "collectorsFeeRatio", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isExcludedFromAntiWhale", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isExcludedFromFees", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isFeeCollector", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pairAddress", "type": "address" } ], "name": "isLpPool", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "liquidityOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTokenPerWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numTokensToSwap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountOut", "type": "uint256" } ], "name": "processFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeFeeCollector", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "autoProcess", "type": "bool" } ], "name": "setAutoprocessFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bool", "name": "feesInToken", "type": "bool" }, { "internalType": "uint16", "name": "buyFees", "type": "uint16" }, { "internalType": "uint16", "name": "sellFees", "type": "uint16" }, { "internalType": "uint16", "name": "transferFees", "type": "uint16" }, { "internalType": "uint16", "name": "burnFeeRatio", "type": "uint16" }, { "internalType": "uint16", "name": "liquidityFeeRatio", "type": "uint16" }, { "internalType": "uint16", "name": "collectorsFeeRatio", "type": "uint16" } ], "internalType": "struct TaxableToken.FeeConfiguration", "name": "configuration", "type": "tuple" } ], "name": "setFeeConfiguration", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "setIsExcludedFromFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pairAddress", "type": "address" }, { "internalType": "bool", "name": "isLp", "type": "bool" } ], "name": "setIsLpPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "setLiquidityOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setMaxTokenPerWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setNumTokensToSwap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newRouter", "type": "address" } ], "name": "setSwapRouter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapRouter", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalFeeCollectorsShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "share", "type": "uint256" } ], "name": "updateFeeCollectorShare", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c06040526040516200472e3803806200472e833981016040819052620000269162000ef0565b600162000036612710886200104f565b858585856200004760648d6200104f565b6040518060400160405280600c81526020016b416e6f6e796d6f757320564360a01b8152506040518060400160405280600481526020016320a727a760e11b815250601270312f313639393932342f412f422f572f5483838160039081620000b09190620010f8565b506004620000bf8282620010f8565b50505060ff90911660805260a05250506005558051825114620001295760405162461bcd60e51b815260206004820152601660248201527f496e76616c69642066656520636f6c6c6563746f72730000000000000000000060448201526064015b60405180910390fd5b60005b82518110156200019557620001808382815181106200014f576200014f620011c4565b60200260200101518383815181106200016c576200016c620011c4565b60200260200101516200046960201b60201c565b806200018c81620011da565b9150506200012c565b505050600e839055600d805460ff60a81b1916600160a81b86151502179055620001bc3390565b600d80546001600160a01b039283166001600160a01b031991821617909155600b805492851692909116821790556040805163c45a015560e01b81529051620002c7929163c45a01559160048083019260209291908290030181865afa1580156200022b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002519190620011f6565b600b54604080516315ab88c960e31b8152905130926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa1580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c19190620011f6565b6200058c565b600c80546001600160a01b0319166001600160a01b039290921691821790556000908152601160205260409020805460ff19166001179055620003136200030b3390565b60016200068f565b620003203060016200068f565b6200032b8162000748565b5050505060008611620003815760405162461bcd60e51b815260206004820152601d60248201527f496e697469616c20737570706c792063616e6e6f74206265207a65726f000000604482015260640162000120565b6040516001600160a01b038616903480156108fc02916000818181858888f19350505050158015620003b7573d6000803e3d6000fd5b50620003c560003362000a3e565b620003e26000805160206200470e83398151915261dead62000a3e565b620003fd6000805160206200470e8339815191523362000a3e565b600c5462000425906000805160206200470e833981519152906001600160a01b031662000a3e565b620004517fcaa508224cbc2c612b91345550b57fa87a9308bdc3d83a613f48278c1ef824853362000a3e565b6200045d338762000a4e565b5050505050506200124f565b6200047660078362000b1f565b15620004c55760405162461bcd60e51b815260206004820152601560248201527f416c72656164792066656520636f6c6c6563746f720000000000000000000000604482015260640162000120565b60008111620005075760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420736861726560981b604482015260640162000120565b6200051460078362000b46565b506001600160a01b0382166000908152600960205260408120829055600a80548392906200054490849062001214565b90915550506040518181526001600160a01b038316907f918584c21fe4a093f5014c0dabaed3e43b642781e27984aef122cae8245fbb23906020015b60405180910390a25050565b6000806000836001600160a01b0316856001600160a01b031610620005b3578385620005b6565b84845b6040516001600160601b0319606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016200066d9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b6001600160601b031916600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b6001600160a01b03821660009081526010602052604090205481151560ff909116151503620006ef5760405162461bcd60e51b815260206004820152600b60248201526a105b1c9958591e481cd95d60aa1b604482015260640162000120565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb910162000580565b6107d061ffff16816020015161ffff1611156200079a5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206275792066656560881b604482015260640162000120565b6107d061ffff16816040015161ffff161115620007ed5760405162461bcd60e51b815260206004820152601060248201526f496e76616c69642073656c6c2066656560801b604482015260640162000120565b6107d061ffff16816060015161ffff1611156200084d5760405162461bcd60e51b815260206004820152601460248201527f496e76616c6964207472616e7366657220666565000000000000000000000000604482015260640162000120565b60008160c001518260a0015183608001516200086a91906200122a565b6200087691906200122a565b905061ffff811615806200088f575061ffff8116612710145b620008d15760405162461bcd60e51b8152602060048201526011602482015270496e76616c69642066656520736861726560781b604482015260640162000120565b8151600f805460208501516040808701516060880151608089015160a08a015160c08b015161ffff9081166b0100000000000000000000000261ffff60581b1992821669010000000000000000000261ffff60481b19948316670100000000000000029490941663ffffffff60381b19958316650100000000000261ffff60281b199784166301000000029790971666ffffffff00000019939099166101000262ffff00199c15159c909c1662ffffff19909a16999099179a909a1716959095179290921716939093179290921716929092179055517ff34b49a91d91598b7774795175736ebf4db4fa5a4edf72772cf50fb27c135efd9062000a32908490600060e082019050825115158252602083015161ffff80821660208501528060408601511660408501528060608601511660608501528060808601511660808501528060a08601511660a08501528060c08601511660c0850152505092915050565b60405180910390a15050565b62000a4a828262000b5d565b5050565b6001600160a01b03821662000aa65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000120565b62000ab46000838362000c01565b806002600082825462000ac8919062001214565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038116600090815260018301602052604081205415155b90505b92915050565b600062000b3d836001600160a01b03841662000c13565b60008281526006602090815260408083206001600160a01b038516845290915290205460ff1662000a4a5760008281526006602090815260408083206001600160a01b03851684529091529020805460ff1916600117905562000bbd3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b62000c0e83838362000c65565b505050565b600081815260018301602052604081205462000c5c5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000b40565b50600062000b40565b82828260055460001415801562000c84575062000c828262000d07565b155b1562000cff576005548162000cae846001600160a01b031660009081526020819052604090205490565b62000cba919062001214565b111562000cff5760405162461bcd60e51b81526020600482015260126024820152710aec2d8d8cae840caf0c6cacac8e640dac2f60731b604482015260640162000120565b505050505050565b6001600160a01b03811660009081527fe3c409d54039d66586f458c2b7d6d78dff5fb18c24d32eed4011358c6e316201602052604081205460ff1662000b40565b80516001600160a01b038116811462000d6057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b038111828210171562000da05762000da062000d65565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000dd15762000dd162000d65565b604052919050565b805161ffff8116811462000d6057600080fd5b60006001600160401b0382111562000e085762000e0862000d65565b5060051b60200190565b600082601f83011262000e2457600080fd5b8151602062000e3d62000e378362000dec565b62000da6565b82815260059290921b8401810191818101908684111562000e5d57600080fd5b8286015b8481101562000e835762000e758162000d48565b835291830191830162000e61565b509695505050505050565b600082601f83011262000ea057600080fd5b8151602062000eb362000e378362000dec565b82815260059290921b8401810191818101908684111562000ed357600080fd5b8286015b8481101562000e83578051835291830191830162000ed7565b60008060008060008086880361018081121562000f0c57600080fd5b8751965062000f1e6020890162000d48565b955062000f2e6040890162000d48565b945060e0605f198201121562000f4357600080fd5b5062000f4e62000d7b565b6060880151801515811462000f6257600080fd5b815262000f726080890162000dd9565b602082015262000f8560a0890162000dd9565b604082015262000f9860c0890162000dd9565b606082015262000fab60e0890162000dd9565b608082015262000fbf610100890162000dd9565b60a082015262000fd3610120890162000dd9565b60c08201526101408801519093506001600160401b038082111562000ff757600080fd5b620010058a838b0162000e12565b93506101608901519150808211156200101d57600080fd5b506200102c89828a0162000e8e565b9150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b6000826200106d57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c908216806200108757607f821691505b602082108103620010a857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000c0e57600081815260208120601f850160051c81016020861015620010d75750805b601f850160051c820191505b8181101562000cff57828155600101620010e3565b81516001600160401b0381111562001114576200111462000d65565b6200112c8162001125845462001072565b84620010ae565b602080601f8311600181146200116457600084156200114b5750858301515b600019600386901b1c1916600185901b17855562000cff565b600085815260208120601f198616915b82811015620011955788860151825594840194600190910190840162001174565b5085821015620011b45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b600060018201620011ef57620011ef62001039565b5060010190565b6000602082840312156200120957600080fd5b62000b3d8262000d48565b8082018082111562000b405762000b4062001039565b61ffff81811683821601908082111562001248576200124862001039565b5092915050565b60805160a0516134996200127560003960006104190152600061058001526134996000f3fe60806040526004361061031e5760003560e01c80636f741f2a116101ab578063a457c2d7116100f7578063c31c9c0711610095578063e55096b01161006f578063e55096b014610a83578063e63a391f14610aa3578063f4232d2514610ab9578063fccc281314610ad957600080fd5b8063c31c9c0714610a23578063d547741f14610a43578063dd62ed3e14610a6357600080fd5b8063b3c20ebd116100d1578063b3c20ebd146109a2578063b3c6e9ee146109c4578063bc063e1a146109da578063bd82394314610a0357600080fd5b8063a457c2d714610942578063a9059cbb14610962578063adf186931461098257600080fd5b80638e3166bc1161016457806395d89b411161013e57806395d89b411461085c57806398c47e8c146108715780639b61f1d01461090c578063a217fddf1461092d57600080fd5b80638e3166bc146107d257806391d148541461080657806394b8a7031461082657600080fd5b80636f741f2a1461070357806370a082311461073c57806372bc55831461075c57806379cc67901461077c5780637a8baf521461079c5780637f5bbb2c146107b257600080fd5b8063282c51f31161026a578063395093511161022357806342966c68116101fd57806342966c681461066a5780634569c4451461068a578063490e5147146106aa5780634fbee193146106ca57600080fd5b8063395093511461060a5780633b90b9bf1461062a578063412736571461064a57600080fd5b8063282c51f3146105185780632f2ff15d1461054c578063313ce5671461056c5780633502628a146105aa57806336568abe146105ca5780633935ebf9146105ea57600080fd5b806312363f4a116102d757806323b872dd116102b157806323b872dd14610470578063248a9ca31461049057806326991cc8146104c0578063269f534c146104f857600080fd5b806312363f4a1461040757806318160ddd1461043b5780631fa67b4d1461045057600080fd5b806301a6c43b1461032a57806301ffc9a71461035357806306fdde0314610383578063095ea7b3146103a55780630a4e42ef146103c55780630f569dad146103e757600080fd5b3661032557005b600080fd5b34801561033657600080fd5b50610340600e5481565b6040519081526020015b60405180910390f35b34801561035f57600080fd5b5061037361036e366004612e73565b610aef565b604051901515815260200161034a565b34801561038f57600080fd5b50610398610b26565b60405161034a9190612ec1565b3480156103b157600080fd5b506103736103c0366004612f09565b610bb8565b3480156103d157600080fd5b506103e56103e0366004612f35565b610bd0565b005b3480156103f357600080fd5b506103e5610402366004612f57565b610c46565b34801561041357600080fd5b506103407f000000000000000000000000000000000000000000000000000000000000000081565b34801561044757600080fd5b50600254610340565b34801561045c57600080fd5b506103e561046b366004612f70565b610c64565b34801561047c57600080fd5b5061037361048b366004612f8d565b610c89565b34801561049c57600080fd5b506103406104ab366004612f57565b60009081526006602052604090206001015490565b3480156104cc57600080fd5b50600c546104e0906001600160a01b031681565b6040516001600160a01b03909116815260200161034a565b34801561050457600080fd5b50610373610513366004612f70565b610cad565b34801561052457600080fd5b506103407f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b34801561055857600080fd5b506103e5610567366004612fce565b610cd9565b34801561057857600080fd5b5060405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161034a565b3480156105b657600080fd5b506103e56105c5366004612f09565b610cfe565b3480156105d657600080fd5b506103e56105e5366004612fce565b610d20565b3480156105f657600080fd5b50600d546104e0906001600160a01b031681565b34801561061657600080fd5b50610373610625366004612f09565b610d9a565b34801561063657600080fd5b50610373610645366004612f70565b610dbc565b34801561065657600080fd5b506103e5610665366004612f70565b610dc9565b34801561067657600080fd5b506103e5610685366004612f57565b610dea565b34801561069657600080fd5b506103e56106a5366004613013565b610e1e565b3480156106b657600080fd5b506103e56106c536600461303f565b610ee3565b3480156106d657600080fd5b506103736106e5366004612f70565b6001600160a01b031660009081526010602052604090205460ff1690565b34801561070f57600080fd5b5061037361071e366004612f70565b6001600160a01b031660009081526011602052604090205460ff1690565b34801561074857600080fd5b50610340610757366004612f70565b610f12565b34801561076857600080fd5b506103e5610777366004612f70565b610f2d565b34801561078857600080fd5b506103e5610797366004612f09565b610f68565b3480156107a857600080fd5b5061034060055481565b3480156107be57600080fd5b506103e56107cd366004613057565b610f9c565b3480156107de57600080fd5b506103407f5df7ebf31955a926cc63dac31c1a31bc588cdae5c3e13e63b89ebfe0eaba875381565b34801561081257600080fd5b50610373610821366004612fce565b611005565b34801561083257600080fd5b50610340610841366004612f70565b6001600160a01b031660009081526009602052604090205490565b34801561086857600080fd5b50610398611030565b34801561087d57600080fd5b50600f546108ca9060ff81169061ffff610100820481169163010000008104821691650100000000008204811691600160381b8104821691600160481b8204811691600160581b90041687565b60408051971515885261ffff968716602089015294861694870194909452918416606086015283166080850152821660a08401521660c082015260e00161034a565b34801561091857600080fd5b50600d5461037390600160a81b900460ff1681565b34801561093957600080fd5b50610340600081565b34801561094e57600080fd5b5061037361095d366004612f09565b61103f565b34801561096e57600080fd5b5061037361097d366004612f09565b6110ba565b34801561098e57600080fd5b506103e561099d366004613072565b6110c8565b3480156109ae57600080fd5b5061034060008051602061344483398151915281565b3480156109d057600080fd5b50610340600a5481565b3480156109e657600080fd5b506109f06107d081565b60405161ffff909116815260200161034a565b348015610a0f57600080fd5b506103e5610a1e366004612f57565b6110ea565b348015610a2f57600080fd5b50600b546104e0906001600160a01b031681565b348015610a4f57600080fd5b506103e5610a5e366004612fce565b6110fe565b348015610a6f57600080fd5b50610340610a7e36600461309e565b611123565b348015610a8f57600080fd5b506103e5610a9e366004613072565b61114e565b348015610aaf57600080fd5b506109f061271081565b348015610ac557600080fd5b506103e5610ad4366004612f09565b611170565b348015610ae557600080fd5b506104e061dead81565b60006001600160e01b03198216637965db0b60e01b1480610b2057506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060038054610b35906130cc565b80601f0160208091040260200160405190810160405280929190818152602001828054610b61906130cc565b8015610bae5780601f10610b8357610100808354040283529160200191610bae565b820191906000526020600020905b815481529060010190602001808311610b9157829003601f168201915b5050505050905090565b600033610bc6818585611192565b5060019392505050565b600080516020613444833981519152610be8816112b6565b610bf130610f12565b831115610c375760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b60448201526064015b60405180910390fd5b610c4183836112c3565b505050565b600080516020613444833981519152610c5e816112b6565b50600e55565b600080516020613444833981519152610c7c816112b6565b610c8582611425565b5050565b600033610c978582856114f1565b610ca2858585611565565b506001949350505050565b6000610b207f5df7ebf31955a926cc63dac31c1a31bc588cdae5c3e13e63b89ebfe0eaba875383611005565b600082815260066020526040902060010154610cf4816112b6565b610c418383611570565b600080516020613444833981519152610d16816112b6565b610c4183836115f6565b6001600160a01b0381163314610d905760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610c2e565b610c858282611707565b600033610bc6818585610dad8383611123565b610db79190613116565b611192565b6000610b2060078361176e565b600080516020613444833981519152610de1816112b6565b610c8582611793565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848610e14816112b6565b610c853383611ad0565b600080516020613444833981519152610e36816112b6565b8115610e8e5782610e4630610f12565b1015610e895760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f7567682062616c616e636560701b6044820152606401610c2e565b610ed3565b82471015610ed35760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f7567682062616c616e636560701b6044820152606401610c2e565b610edd8383611c0e565b50505050565b600080516020613444833981519152610efb816112b6565b610c85610f0d36849003840184613151565b611d6d565b6001600160a01b031660009081526020819052604090205490565b600080516020613444833981519152610f45816112b6565b50600d80546001600160a01b0319166001600160a01b0392909216919091179055565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848610f92816112b6565b610c418383612046565b600080516020613444833981519152610fb4816112b6565b811515600d60159054906101000a900460ff16151503610fe65760405162461bcd60e51b8152600401610c2e9061320f565b50600d8054911515600160a81b0260ff60a81b19909216919091179055565b60009182526006602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060048054610b35906130cc565b6000338161104d8286611123565b9050838110156110ad5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c2e565b610ca28286868403611192565b600033610bc6818585611565565b6000805160206134448339815191526110e0816112b6565b610c4183836120d0565b60006110f5816112b6565b610c8582612168565b600082815260066020526040902060010154611119816112b6565b610c418383611707565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600080516020613444833981519152611166816112b6565b610c41838361220c565b600080516020613444833981519152611188816112b6565b610c4183836122a4565b6001600160a01b0383166111f45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c2e565b6001600160a01b0382166112555760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c2e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6112c081336123db565b50565b600d805460ff60a01b1916600160a01b17905560006112e130610f12565b905082811061141257600f5460009061130790600160381b900461ffff16612710613234565b600f5461ffff9182169161132391600160481b9004168661324f565b61132d9190613266565b9050600061133c600283613266565b9050600061134a8387613288565b905060006113588385613288565b600f5490915060ff166113725761136f8282613116565b90505b80156113e457600c5461138d906001600160a01b0316610f12565b60000361139e575050505050611414565b476113a98288612434565b60006113b58247613288565b90506000836113c4878461324f565b6113ce9190613266565b905080156113e0576113e0868261258e565b5050505b600f5460ff1615611400576113fa826001611c0e565b5061140d565b61140b476000611c0e565b505b505050505b505b5050600d805460ff60a01b19169055565b61143060078261176e565b6114705760405162461bcd60e51b81526020600482015260116024820152702737ba103332b29031b7b63632b1ba37b960791b6044820152606401610c2e565b61147b600782612642565b506001600160a01b038116600090815260096020526040812054600a8054919290916114a8908490613288565b90915550506001600160a01b038116600081815260096020526040808220829055517f904316769e154356a5e4aad5d41591b55913c7717fab281d818c1fed7d80e8149190a250565b60006114fd8484611123565b90506000198114610edd57818110156115585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610c2e565b610edd8484848403611192565b610c41838383612657565b61157a8282611005565b610c855760008281526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790556115b23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61160160078361176e565b156116465760405162461bcd60e51b815260206004820152601560248201527420b63932b0b23c903332b29031b7b63632b1ba37b960591b6044820152606401610c2e565b600081116116865760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420736861726560981b6044820152606401610c2e565b6116916007836128ea565b506001600160a01b0382166000908152600960205260408120829055600a80548392906116bf908490613116565b90915550506040518181526001600160a01b038316907f918584c21fe4a093f5014c0dabaed3e43b642781e27984aef122cae8245fbb23906020015b60405180910390a25050565b6117118282611005565b15610c855760008281526006602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b6001600160a01b0381166117da5760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b2103937baba32b960911b6044820152606401610c2e565b600b80546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa158015611836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185a919061329b565b90506001600160a01b0381166118a45760405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420666163746f727960881b6044820152606401610c2e565b600b54604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa1580156118ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611912919061329b565b60405163e6a4390560e01b81523060048201526001600160a01b0380831660248301529192509083169063e6a4390590604401602060405180830381865afa158015611962573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611986919061329b565b600c80546001600160a01b0319166001600160a01b03929092169182179055611a3c576040516364e329cb60e11b81523060048201526001600160a01b03828116602483015283169063c9c65396906044016020604051808303816000875af11580156119f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1b919061329b565b600c80546001600160a01b0319166001600160a01b03929092169190911790555b600c546001600160a01b0316611a8c5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103830b4b91030b2323932b9b99760591b6044820152606401610c2e565b600c54600b546040516001600160a01b0392831692909116907fca394f95d8dbf1e8b2e76b9a8da90cacce1da85181a65508dab13212dc1df53b90600090a3505050565b6001600160a01b038216611b305760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c2e565b611b3c826000836128ff565b6001600160a01b03821660009081526020819052604090205481811015611bb05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610c2e565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600082600003611c2057506000610b20565b600a54600003611c3257506000610b20565b600080611c3f600761290a565b905060005b81811015611d61576000611c59600783612914565b90506000611c68600185613288565b8314611ca357600a546001600160a01b038316600090815260096020526040902054611c94908a61324f565b611c9e9190613266565b611cad565b611cad8589613288565b90508615611cc557611cc0308383611565565b611cfd565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611cfb573d6000803e3d6000fd5b505b816001600160a01b03167f06c5efeff5c320943d265dc4e5f1af95ad523555ce0c1957e367dda5514572df82604051611d3891815260200190565b60405180910390a2611d4a8186613116565b945050508080611d59906132b8565b915050611c44565b50600195945050505050565b6107d061ffff16816020015161ffff161115611dbd5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206275792066656560881b6044820152606401610c2e565b6107d061ffff16816040015161ffff161115611e0e5760405162461bcd60e51b815260206004820152601060248201526f496e76616c69642073656c6c2066656560801b6044820152606401610c2e565b6107d061ffff16816060015161ffff161115611e635760405162461bcd60e51b8152602060048201526014602482015273496e76616c6964207472616e736665722066656560601b6044820152606401610c2e565b60008160c001518260a001518360800151611e7e91906132d1565b611e8891906132d1565b905061ffff81161580611ea0575061ffff8116612710145b611ee05760405162461bcd60e51b8152602060048201526011602482015270496e76616c69642066656520736861726560781b6044820152606401610c2e565b8151600f805460208501516040808701516060880151608089015160a08a015160c08b015161ffff908116600160581b0261ffff60581b19928216600160481b026affff00000000000000000019948316600160381b02949094166affffffff0000000000000019958316650100000000000266ffff0000000000199784166301000000029790971666ffffffff00000019939099166101000262ffff00199c15159c909c1662ffffff19909a16999099179a909a1716959095179290921716939093179290921716929092179055517ff34b49a91d91598b7774795175736ebf4db4fa5a4edf72772cf50fb27c135efd9061203a908490600060e082019050825115158252602083015161ffff80821660208501528060408601511660408501528060608601511660608501528060808601511660808501528060a08601511660a08501528060c08601511660c0850152505092915050565b60405180910390a15050565b60006120528333611123565b9050818110156120b95760405162461bcd60e51b815260206004820152602c60248201527f45524332304275726e61626c653a206275726e20616d6f756e7420657863656560448201526b647320616c6c6f77616e636560a01b6064820152608401610c2e565b6120c68333848403611192565b610c418383611ad0565b6001600160a01b03821660009081526010602052604090205481151560ff9091161515036121105760405162461bcd60e51b8152600401610c2e9061320f565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb91016116fb565b80158061219457506103e861217c60025490565b61218790600561324f565b6121919190613266565b81115b6121d15760405162461bcd60e51b815260206004820152600e60248201526d416d6f756e7420746f6f206c6f7760901b6044820152606401610c2e565b60058190556040518181527f0271c3ca991d8fa13fc3df55bfd888e9347a178a375ef6e0f63afa9639d144f49060200160405180910390a150565b6001600160a01b03821660009081526011602052604090205481151560ff90911615150361224c5760405162461bcd60e51b8152600401610c2e9061320f565b6001600160a01b038216600081815260116020908152604091829020805460ff191685151590811790915591519182527f902b2ea0acdec5a260e398590d055fe29bd61ef5dd41e45db54a4cd98d5569e091016116fb565b6122af60078361176e565b6122ef5760405162461bcd60e51b81526020600482015260116024820152702737ba103332b29031b7b63632b1ba37b960791b6044820152606401610c2e565b6000811161232f5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420736861726560981b6044820152606401610c2e565b6001600160a01b038216600090815260096020526040812054600a80549192839261235b908490613288565b90915550506001600160a01b0383166000908152600960205260408120839055600a805484929061238d908490613116565b909155505060408051828152602081018490526001600160a01b038516917fd350c3685bdab1285c0b97ffb6e96d96ed0ad4578a135c38250e771e7cb831aa910160405180910390a2505050565b6123e58282611005565b610c85576123f281612920565b6123fd836020612932565b60405160200161240e9291906132ec565b60408051601f198184030181529082905262461bcd60e51b8252610c2e91600401612ec1565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061246957612469613361565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156124c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e6919061329b565b816001815181106124f9576124f9613361565b6001600160a01b039283166020918202929092010152600b5461251f9130911685611192565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac947906125579086908690869030904290600401613377565b600060405180830381600087803b15801561257157600080fd5b505af1158015612585573d6000803e3d6000fd5b50505050505050565b600b546125a69030906001600160a01b031684611192565b600b54600d5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612616573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061263b91906133e8565b5050505050565b600061178c836001600160a01b038416612ace565b600081116126975760405162461bcd60e51b815260206004820152600d60248201526c05472616e73666572203c3d203609c1b6044820152606401610c2e565b600d546000908190600160a01b900460ff161580156126bf5750600d54600160a81b900460ff165b600d54909150600160a01b900460ff166127df576001600160a01b03858116600081815260106020908152604080832054948916808452818420549484526011909252808320549183529091205460ff93841693928316929182169116818015612727575080155b8015612731575082155b801561274b5750600b546001600160a01b03898116911614155b1561276357600f54610100900461ffff1695506127da565b80801561276e575083155b8015612778575082155b1561279257600f546301000000900461ffff1695506127da565b8115801561279e575080155b80156127b85750600b546001600160a01b038a8116911614155b80156127c2575083155b156127da57600f5465010000000000900461ffff1695505b505050505b8080156127ec5750600082115b801561281157506001600160a01b03851660009081526011602052604090205460ff16155b1561283b57600061282130610f12565b9050600e54811061283957612839600e5460006112c3565b505b81156128df576000612710612850848661324f565b61285a9190613266565b905060006128688286613288565b600f549091506000906127109061288a90600160381b900461ffff168561324f565b6128949190613266565b905080156128b5576128a68184613288565b92506128b58861dead83612bc8565b82156128c6576128c6883085612bc8565b81156128d7576128d7888884612bc8565b50505061263b565b61263b858585612bc8565b600061178c836001600160a01b038416612d77565b610c41838383612dc6565b6000610b20825490565b600061178c8383612e49565b6060610b206001600160a01b03831660145b6060600061294183600261324f565b61294c906002613116565b67ffffffffffffffff81111561296457612964613129565b6040519080825280601f01601f19166020018201604052801561298e576020820181803683370190505b509050600360fc1b816000815181106129a9576129a9613361565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106129d8576129d8613361565b60200101906001600160f81b031916908160001a90535060006129fc84600261324f565b612a07906001613116565b90505b6001811115612a7f576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612a3b57612a3b613361565b1a60f81b828281518110612a5157612a51613361565b60200101906001600160f81b031916908160001a90535060049490941c93612a7881613416565b9050612a0a565b50831561178c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610c2e565b60008181526001830160205260408120548015612bb7576000612af2600183613288565b8554909150600090612b0690600190613288565b9050818114612b6b576000866000018281548110612b2657612b26613361565b9060005260206000200154905080876000018481548110612b4957612b49613361565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612b7c57612b7c61342d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610b20565b6000915050610b20565b5092915050565b6001600160a01b038316612c2c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c2e565b6001600160a01b038216612c8e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c2e565b612c998383836128ff565b6001600160a01b03831660009081526020819052604090205481811015612d115760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c2e565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610edd565b6000818152600183016020526040812054612dbe57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b20565b506000610b20565b828282600554600014158015612de25750612de082610cad565b155b15612e415760055481612df484610f12565b612dfe9190613116565b1115612e415760405162461bcd60e51b81526020600482015260126024820152710aec2d8d8cae840caf0c6cacac8e640dac2f60731b6044820152606401610c2e565b505050505050565b6000826000018281548110612e6057612e60613361565b9060005260206000200154905092915050565b600060208284031215612e8557600080fd5b81356001600160e01b03198116811461178c57600080fd5b60005b83811015612eb8578181015183820152602001612ea0565b50506000910152565b6020815260008251806020840152612ee0816040850160208701612e9d565b601f01601f19169190910160400192915050565b6001600160a01b03811681146112c057600080fd5b60008060408385031215612f1c57600080fd5b8235612f2781612ef4565b946020939093013593505050565b60008060408385031215612f4857600080fd5b50508035926020909101359150565b600060208284031215612f6957600080fd5b5035919050565b600060208284031215612f8257600080fd5b813561178c81612ef4565b600080600060608486031215612fa257600080fd5b8335612fad81612ef4565b92506020840135612fbd81612ef4565b929592945050506040919091013590565b60008060408385031215612fe157600080fd5b823591506020830135612ff381612ef4565b809150509250929050565b8035801515811461300e57600080fd5b919050565b6000806040838503121561302657600080fd5b8235915061303660208401612ffe565b90509250929050565b600060e0828403121561305157600080fd5b50919050565b60006020828403121561306957600080fd5b61178c82612ffe565b6000806040838503121561308557600080fd5b823561309081612ef4565b915061303660208401612ffe565b600080604083850312156130b157600080fd5b82356130bc81612ef4565b91506020830135612ff381612ef4565b600181811c908216806130e057607f821691505b60208210810361305157634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610b2057610b20613100565b634e487b7160e01b600052604160045260246000fd5b803561ffff8116811461300e57600080fd5b600060e0828403121561316357600080fd5b60405160e0810181811067ffffffffffffffff8211171561319457634e487b7160e01b600052604160045260246000fd5b6040526131a083612ffe565b81526131ae6020840161313f565b60208201526131bf6040840161313f565b60408201526131d06060840161313f565b60608201526131e16080840161313f565b60808201526131f260a0840161313f565b60a082015261320360c0840161313f565b60c08201529392505050565b6020808252600b908201526a105b1c9958591e481cd95d60aa1b604082015260600190565b61ffff828116828216039080821115612bc157612bc1613100565b8082028115828204841417610b2057610b20613100565b60008261328357634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610b2057610b20613100565b6000602082840312156132ad57600080fd5b815161178c81612ef4565b6000600182016132ca576132ca613100565b5060010190565b61ffff818116838216019080821115612bc157612bc1613100565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613324816017850160208801612e9d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613355816028840160208801612e9d565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133c75784516001600160a01b0316835293830193918301916001016133a2565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156133fd57600080fd5b8351925060208401519150604084015190509250925092565b60008161342557613425613100565b506000190190565b634e487b7160e01b600052603160045260246000fdfecaa508224cbc2c612b91345550b57fa87a9308bdc3d83a613f48278c1ef82485a2646970667358221220f4f556e7fa0da4ef89bb1c88f77c2cdf6e41fd7c1380b97cd9f5c0a094948e3864736f6c634300081300335df7ebf31955a926cc63dac31c1a31bc588cdae5c3e13e63b89ebfe0eaba87530000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000eb2a9ee506c18566f826849b3c56deb7ff67d8050000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000028168a117d819d2bcfc3598031262767c4054ec000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002710
0xa2646970667358221220f4f556e7fa0da4ef89bb1c88f77c2cdf6e41fd7c1380b97cd9f5c0a094948e3864736f6c634300081300335df7ebf31955a926cc63dac31c1a31bc588cdae5c3e13e63b89ebfe0eaba87530000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000eb2a9ee506c18566f826849b3c56deb7ff67d8050000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000028168a117d819d2bcfc3598031262767c4054ec000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002710