[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "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": "newWallet", "type": "address" } ], "name": "DevWalletUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludeFromFees", "type": "event" }, { "anonymous": false, "inputs": [], "name": "LimitsRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokensSwapped", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethReceived", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "devPortion", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "marketingPortion", "type": "uint256" } ], "name": "ManualSwap", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" } ], "name": "MarketingWalletUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "MaxTransactionAmountUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "MaxWalletUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pair", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "SetAutomatedMarketMakerPair", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokensSwapped", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ethReceived", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "devPortion", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "marketingPortion", "type": "uint256" } ], "name": "SwapAndDistributeTaxes", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "SwapEnabledUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "SwapTokensAtAmountUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "buyDevTax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "buyMarketingTax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sellDevTax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sellMarketingTax", "type": "uint256" } ], "name": "TaxesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" } ], "name": "UpdateUniswapV2Router", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_isBlacklisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyDevTax", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyMarketingTax", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "devWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "excludeFromFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "ethAmount", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint256", "name": "minLiquidity", "type": "uint256" } ], "name": "hippoLaunch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "includeInFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "manualSwap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "marketingWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTransactionAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "removeLimits", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "removeMaxTransactionLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "removeMaxWalletLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "saveETH", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sellDevTax", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellMarketingTax", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "blacklisted", "type": "bool" } ], "name": "setBlacklistStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_devWallet", "type": "address" } ], "name": "setDevWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_marketingWallet", "type": "address" } ], "name": "setMarketingWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxTxAmount", "type": "uint256" } ], "name": "setMaxTransactionAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxWallet", "type": "uint256" } ], "name": "setMaxWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "setOwnerWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_enabled", "type": "bool" } ], "name": "setSwapEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_swapTokensAtAmount", "type": "uint256" } ], "name": "setSwapTokensAtAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_buyDevTax", "type": "uint256" }, { "internalType": "uint256", "name": "_buyMarketingTax", "type": "uint256" }, { "internalType": "uint256", "name": "_sellDevTax", "type": "uint256" }, { "internalType": "uint256", "name": "_sellMarketingTax", "type": "uint256" } ], "name": "setTaxes", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokens", "type": "uint256" } ], "name": "swapAndDistributeTaxes", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapTokensAtAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "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": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "uniswapV2Pair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uniswapV2Router", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040526001600d5f6101000a81548160ff021916908315150217905550348015610029575f80fd5b50336040518060400160405280601481526020017f4d61676e6966696375732074686520486970706f0000000000000000000000008152506040518060400160405280600581526020017f484950504f00000000000000000000000000000000000000000000000000000081525081600390816100a69190610e0c565b5080600490816100b69190610e0c565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610129575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101209190610f1a565b60405180910390fd5b6101388161068260201b60201c565b505f61014861074560201b60201c565b600a610154919061109b565b633b9aca0061016391906110e5565b905073315773a5a961e200607b019d60d715eb6924bb3260085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073703d3b474d079bc4f1c329c28c13496d55e9bbc360095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606460018261021c91906110e5565b6102269190611153565b600a81905550606460018261023b91906110e5565b6102459190611153565b600b8190555061025961074560201b60201c565b600a610265919061109b565b6207a12061027391906110e5565b600c81905550600f6010819055506019601181905550600f60128190555060196013819055506102a9338261074d60201b60201c565b6001600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c491906111b1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610529573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061054d91906111b1565b6040518363ffffffff1660e01b815260040161056a9291906111dc565b6020604051808303815f875af1158015610586573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105aa91906111b1565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061067b3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107d260201b60201c565b5050611293565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107bd575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107b49190610f1a565b60405180910390fd5b6107ce5f83836107ea60201b60201c565b5050565b6107e58383836001610a0360201b60201c565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361083a578060025f82825461082e9190611203565b92505081905550610908565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156108c3578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016108ba93929190611245565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361094f578060025f8282540392505081905550610999565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109f6919061127a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610a73575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610a6a9190610f1a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ae3575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610ada9190610f1a565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610bcc578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610bc3919061127a565b60405180910390a35b50505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610c4d57607f821691505b602082108103610c6057610c5f610c09565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610cc27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610c87565b610ccc8683610c87565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610d10610d0b610d0684610ce4565b610ced565b610ce4565b9050919050565b5f819050919050565b610d2983610cf6565b610d3d610d3582610d17565b848454610c93565b825550505050565b5f90565b610d51610d45565b610d5c818484610d20565b505050565b5b81811015610d7f57610d745f82610d49565b600181019050610d62565b5050565b601f821115610dc457610d9581610c66565b610d9e84610c78565b81016020851015610dad578190505b610dc1610db985610c78565b830182610d61565b50505b505050565b5f82821c905092915050565b5f610de45f1984600802610dc9565b1980831691505092915050565b5f610dfc8383610dd5565b9150826002028217905092915050565b610e1582610bd2565b67ffffffffffffffff811115610e2e57610e2d610bdc565b5b610e388254610c36565b610e43828285610d83565b5f60209050601f831160018114610e74575f8415610e62578287015190505b610e6c8582610df1565b865550610ed3565b601f198416610e8286610c66565b5f5b82811015610ea957848901518255600182019150602085019450602081019050610e84565b86831015610ec65784890151610ec2601f891682610dd5565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f0482610edb565b9050919050565b610f1481610efa565b82525050565b5f602082019050610f2d5f830184610f0b565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610fb557808604811115610f9157610f90610f33565b5b6001851615610fa05780820291505b8081029050610fae85610f60565b9450610f75565b94509492505050565b5f82610fcd5760019050611088565b81610fda575f9050611088565b8160018114610ff05760028114610ffa57611029565b6001915050611088565b60ff84111561100c5761100b610f33565b5b8360020a91508482111561102357611022610f33565b5b50611088565b5060208310610133831016604e8410600b841016171561105e5782820a90508381111561105957611058610f33565b5b611088565b61106b8484846001610f6c565b9250905081840481111561108257611081610f33565b5b81810290505b9392505050565b5f60ff82169050919050565b5f6110a582610ce4565b91506110b08361108f565b92506110dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610fbe565b905092915050565b5f6110ef82610ce4565b91506110fa83610ce4565b925082820261110881610ce4565b9150828204841483151761111f5761111e610f33565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61115d82610ce4565b915061116883610ce4565b92508261117857611177611126565b5b828204905092915050565b5f80fd5b61119081610efa565b811461119a575f80fd5b50565b5f815190506111ab81611187565b92915050565b5f602082840312156111c6576111c5611183565b5b5f6111d38482850161119d565b91505092915050565b5f6040820190506111ef5f830185610f0b565b6111fc6020830184610f0b565b9392505050565b5f61120d82610ce4565b915061121883610ce4565b92508282019050808211156112305761122f610f33565b5b92915050565b61123f81610ce4565b82525050565b5f6060820190506112585f830186610f0b565b6112656020830185611236565b6112726040830184611236565b949350505050565b5f60208201905061128d5f830184611236565b92915050565b6142f1806112a05f395ff3fe60806040526004361061025f575f3560e01c8063715018a611610143578063afa4f3b2116100b5578063dd62ed3e11610079578063dd62ed3e14610858578063e01af92c14610894578063e2f45605146108bc578063e96db1ef146108e6578063f2fde38b14610910578063f8b45b051461093857610266565b8063afa4f3b21461078c578063bb542ef0146107b4578063be691883146107dc578063c024666814610806578063c8c8ebe41461082e57610266565b80638ea5220f116101075780638ea5220f1461069457806395d89b41146106be57806398e3bc36146106e8578063a12a7d61146106fe578063a9059cbb14610726578063af8f26e71461076257610266565b8063715018a6146105ec578063751039fc1461060257806375f0a8741461061857806382eb6146146106425780638da5cb5b1461066a57610266565b80631f53ac02116101dc57806351bc3c85116101a057806351bc3c851461050a5780635d0044ca146105205780635d098b38146105485780635d8d3526146105705780636ddd17131461058657806370a08231146105b057610266565b80631f53ac021461042857806323b872dd14610450578063313ce5671461048c57806333012411146104b657806349bd5a5e146104e057610266565b80631694505e116102235780631694505e1461034857806316a2f82a1461037257806318160ddd1461039a5780631cdd3be3146103c45780631e293c101461040057610266565b806303d29d281461026a578063057382df1461029257806306fdde03146102ba578063095ea7b3146102e45780631400e6361461032057610266565b3661026657005b5f80fd5b348015610275575f80fd5b50610290600480360381019061028b9190612fde565b610962565b005b34801561029d575f80fd5b506102b860048036038101906102b3919061304f565b6109c2565b005b3480156102c5575f80fd5b506102ce610a5b565b6040516102db91906130ea565b60405180910390f35b3480156102ef575f80fd5b5061030a6004803603810190610305919061310a565b610aeb565b6040516103179190613157565b60405180910390f35b34801561032b575f80fd5b506103466004803603810190610341919061304f565b610b0d565b005b348015610353575f80fd5b5061035c610d3a565b60405161036991906131cb565b60405180910390f35b34801561037d575f80fd5b50610398600480360381019061039391906131e4565b610d5f565b005b3480156103a5575f80fd5b506103ae610dbe565b6040516103bb919061321e565b60405180910390f35b3480156103cf575f80fd5b506103ea60048036038101906103e591906131e4565b610dc7565b6040516103f79190613157565b60405180910390f35b34801561040b575f80fd5b506104266004803603810190610421919061304f565b610de4565b005b348015610433575f80fd5b5061044e600480360381019061044991906131e4565b610e2d565b005b34801561045b575f80fd5b5061047660048036038101906104719190613237565b610f29565b6040516104839190613157565b60405180910390f35b348015610497575f80fd5b506104a0610f57565b6040516104ad91906132a2565b60405180910390f35b3480156104c1575f80fd5b506104ca610f5f565b6040516104d7919061321e565b60405180910390f35b3480156104eb575f80fd5b506104f4610f65565b60405161050191906132ca565b60405180910390f35b348015610515575f80fd5b5061051e610f8a565b005b34801561052b575f80fd5b506105466004803603810190610541919061304f565b610fec565b005b348015610553575f80fd5b5061056e600480360381019061056991906131e4565b611035565b005b34801561057b575f80fd5b50610584611131565b005b348015610591575f80fd5b5061059a611187565b6040516105a79190613157565b60405180910390f35b3480156105bb575f80fd5b506105d660048036038101906105d191906131e4565b611199565b6040516105e3919061321e565b60405180910390f35b3480156105f7575f80fd5b506106006111de565b005b34801561060d575f80fd5b506106166111f1565b005b348015610623575f80fd5b5061062c611243565b60405161063991906132ca565b60405180910390f35b34801561064d575f80fd5b50610668600480360381019061066391906132e3565b611268565b005b348015610675575f80fd5b5061067e6115a2565b60405161068b91906132ca565b60405180910390f35b34801561069f575f80fd5b506106a86115ca565b6040516106b591906132ca565b60405180910390f35b3480156106c9575f80fd5b506106d26115ef565b6040516106df91906130ea565b60405180910390f35b3480156106f3575f80fd5b506106fc61167f565b005b348015610709575f80fd5b50610724600480360381019061071f91906132e3565b6116d5565b005b348015610731575f80fd5b5061074c6004803603810190610747919061310a565b6117da565b6040516107599190613157565b60405180910390f35b34801561076d575f80fd5b506107766117fc565b604051610783919061321e565b60405180910390f35b348015610797575f80fd5b506107b260048036038101906107ad919061304f565b611802565b005b3480156107bf575f80fd5b506107da60048036038101906107d591906131e4565b61184b565b005b3480156107e7575f80fd5b506107f061185f565b6040516107fd919061321e565b60405180910390f35b348015610811575f80fd5b5061082c60048036038101906108279190612fde565b611865565b005b348015610839575f80fd5b50610842611913565b60405161084f919061321e565b60405180910390f35b348015610863575f80fd5b5061087e60048036038101906108799190613347565b611919565b60405161088b919061321e565b60405180910390f35b34801561089f575f80fd5b506108ba60048036038101906108b59190613385565b61199b565b005b3480156108c7575f80fd5b506108d06119f6565b6040516108dd919061321e565b60405180910390f35b3480156108f1575f80fd5b506108fa6119fc565b604051610907919061321e565b60405180910390f35b34801561091b575f80fd5b50610936600480360381019061093191906131e4565b611a02565b005b348015610943575f80fd5b5061094c611a86565b604051610959919061321e565b60405180910390f35b61096a611a8c565b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6109ca611a8c565b80471015610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a04906133fa565b60405180910390fd5b610a156115a2565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610a57573d5f803e3d5ffd5b5050565b606060038054610a6a90613445565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9690613445565b8015610ae15780601f10610ab857610100808354040283529160200191610ae1565b820191905f5260205f20905b815481529060010190602001808311610ac457829003601f168201915b5050505050905090565b5f80610af5611b13565b9050610b02818585611b1a565b600191505092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b72906134bf565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055505f610ba030611199565b90505f82821015610bb15782610bb3565b815b90505f479050610bc282611b2c565b5f8147610bcf919061350a565b90505f601154601054610be2919061353d565b90505f8160105484610bf49190613570565b610bfe91906135de565b90505f8184610c0d919061350a565b905060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610c73573d5f803e3d5ffd5b5060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610cd8573d5f803e3d5ffd5b507fa110b1be6b9e49f5261f025f3b7ac34249b1d714c9fa4c236ea3c9f51ac17f4a86858484604051610d0e949392919061360e565b60405180910390a15f600d60016101000a81548160ff0219169083151502179055505050505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d67611a8c565b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600254905090565b600f602052805f5260405f205f915054906101000a900460ff1681565b610dec611a8c565b80600a819055507f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac81604051610e22919061321e565b60405180910390a150565b610e35611a8c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9a906136c1565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f31bb1993faff4f8409d7baad771f861e093ef4ce2c92c6e0cb10b82d1c7324cb60405160405180910390a250565b5f80610f33611b13565b9050610f40858285611d62565b610f4b858585611df4565b60019150509392505050565b5f6012905090565b60115481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f92611a8c565b5f610f9c30611199565b90505f8111610fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd790613729565b60405180910390fd5b610fe981610b0d565b50565b610ff4611a8c565b80600b819055507f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace8160405161102a919061321e565b60405180910390a150565b61103d611a8c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a2906137b7565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fbf86feedee5b30c30a8243bd21deebb704d141478d39b1be04fe5ee739f214e760405160405180910390a250565b611139611a8c565b611141610dbe565b600a819055507f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac611170610dbe565b60405161117d919061321e565b60405180910390a1565b600d5f9054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6111e6611a8c565b6111ef5f6129b0565b565b6111f9611a8c565b611201610dbe565b600a8190555061120f610dbe565b600b819055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a1565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611270611a8c565b5f84116112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a990613845565b60405180910390fd5b5f83116112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb906138d3565b60405180910390fd5b428211611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d9061393b565b60405180910390fd5b5f61133f610f57565b600a61134b9190613a88565b856113569190613570565b90505f670de0b6b3a76400008561136d9190613570565b9050804710156113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a990613b1c565b60405180910390fd5b6113bd333084611df4565b6113e93060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b1a565b5f805f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198530886064605f8b61143b9190613570565b61144591906135de565b6064605f8b6114549190613570565b61145e91906135de565b6114666115a2565b8e6040518863ffffffff1660e01b815260040161148896959493929190613b3a565b60606040518083038185885af11580156114a4573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114c99190613bad565b92509250925085811015611512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150990613c47565b60405180910390fd5b81841115611571576115226115a2565b73ffffffffffffffffffffffffffffffffffffffff166108fc8386611547919061350a565b90811502906040515f60405180830381858888f1935050505015801561156f573d5f803e3d5ffd5b505b8285111561159757611596306115856115a2565b8588611591919061350a565b611df4565b5b505050505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546115fe90613445565b80601f016020809104026020016040519081016040528092919081815260200182805461162a90613445565b80156116755780601f1061164c57610100808354040283529160200191611675565b820191905f5260205f20905b81548152906001019060200180831161165857829003601f168201915b5050505050905090565b611687611a8c565b61168f610dbe565b600b819055507f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace6116be610dbe565b6040516116cb919061321e565b60405180910390a1565b6116dd611a8c565b603283856116eb919061353d565b111561172c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172390613caf565b60405180910390fd5b6032818361173a919061353d565b111561177b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177290613d17565b60405180910390fd5b836010819055508260118190555081601281905550806013819055507f266990f438f33a45bd93d84038f3917b65c08a08f5589ba44c6b16fc7a940b49848484846040516117cc949392919061360e565b60405180910390a150505050565b5f806117e4611b13565b90506117f1818585611df4565b600191505092915050565b60105481565b61180a611a8c565b80600c819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b14581604051611840919061321e565b60405180910390a150565b611853611a8c565b61185c81611a02565b50565b60125481565b61186d611a8c565b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516119079190613157565b60405180910390a25050565b600a5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6119a3611a8c565b80600d5f6101000a81548160ff0219169083151502179055507f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a12816040516119eb9190613157565b60405180910390a150565b600c5481565b60135481565b611a0a611a8c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a7a575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611a7191906132ca565b60405180910390fd5b611a83816129b0565b50565b600b5481565b611a94611b13565b73ffffffffffffffffffffffffffffffffffffffff16611ab26115a2565b73ffffffffffffffffffffffffffffffffffffffff1614611b1157611ad5611b13565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611b0891906132ca565b60405180910390fd5b565b5f33905090565b611b278383836001612a73565b505050565b5f600267ffffffffffffffff811115611b4857611b47613d35565b5b604051908082528060200260200182016040528015611b765781602001602082028036833780820191505090505b50905030815f81518110611b8d57611b8c613d62565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c559190613da3565b81600181518110611c6957611c68613d62565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ccf3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b1a565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611d31959493929190613ebe565b5f604051808303815f87803b158015611d48575f80fd5b505af1158015611d5a573d5f803e3d5ffd5b505050505050565b5f611d6d8484611919565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611dee5781811015611ddf578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611dd693929190613f16565b60405180910390fd5b611ded84848484035f612a73565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5990613fbb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec790614049565b60405180910390fd5b600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f6e5750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa4906140b1565b60405180910390fd5b5f8103611fc457611fbf83835f612c42565b6129ab565b611fcc6115a2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561203a575061200a6115a2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561207257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120aa57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612103575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561215c575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121b5575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561220e575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561225957600a54811115612258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224f9061413f565b60405180910390fd5b5b5f61226330611199565b90505f600c5482101590508080156122885750600d60019054906101000a900460ff16155b801561229f5750600d5f9054906101000a900460ff165b80156122f8575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561234b5750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561239e5750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612408573073ffffffffffffffffffffffffffffffffffffffff16631400e636600c546040518263ffffffff1660e01b81526004016123de919061321e565b5f604051808303815f87803b1580156123f5575f80fd5b505af1925050508015612406575060015b505b5f600d60019054906101000a900460ff16159050600e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806124b75750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156124c0575f90505b801561277c575f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361261157600d5f9054906101000a900460ff168061256757506125386115a2565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b806125a457506125756115a2565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b6125e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125da906141a7565b60405180910390fd5b60646011546010546125f5919061353d565b866126009190613570565b61260a91906135de565b9050612758565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361275757600d5f9054906101000a900460ff16806126b157506126826115a2565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b806126ee57506126bf6115a2565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b61272d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127249061420f565b60405180910390fd5b606460135460125461273f919061353d565b8661274a9190613570565b61275491906135de565b90505b5b5f81111561277a5761276b873083612c42565b8085612777919061350a565b94505b505b612787868686612c42565b600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561281157506127e16115a2565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561286a575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156128a257503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156128fb575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612954575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156129a757600b5461296586611199565b11156129a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299d9061429d565b60405180910390fd5b5b5050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612ae3575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401612ada91906132ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b53575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401612b4a91906132ca565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015612c3c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051612c33919061321e565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cb2575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401612ca991906132ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d22575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401612d1991906132ca565b60405180910390fd5b612d2d838383612d32565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d82578060025f828254612d76919061353d565b92505081905550612e50565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612e0b578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401612e0293929190613f16565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e97578060025f8282540392505081905550612ee1565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f3e919061321e565b60405180910390a3505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f7882612f4f565b9050919050565b612f8881612f6e565b8114612f92575f80fd5b50565b5f81359050612fa381612f7f565b92915050565b5f8115159050919050565b612fbd81612fa9565b8114612fc7575f80fd5b50565b5f81359050612fd881612fb4565b92915050565b5f8060408385031215612ff457612ff3612f4b565b5b5f61300185828601612f95565b925050602061301285828601612fca565b9150509250929050565b5f819050919050565b61302e8161301c565b8114613038575f80fd5b50565b5f8135905061304981613025565b92915050565b5f6020828403121561306457613063612f4b565b5b5f6130718482850161303b565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6130bc8261307a565b6130c68185613084565b93506130d6818560208601613094565b6130df816130a2565b840191505092915050565b5f6020820190508181035f83015261310281846130b2565b905092915050565b5f80604083850312156131205761311f612f4b565b5b5f61312d85828601612f95565b925050602061313e8582860161303b565b9150509250929050565b61315181612fa9565b82525050565b5f60208201905061316a5f830184613148565b92915050565b5f819050919050565b5f61319361318e61318984612f4f565b613170565b612f4f565b9050919050565b5f6131a482613179565b9050919050565b5f6131b58261319a565b9050919050565b6131c5816131ab565b82525050565b5f6020820190506131de5f8301846131bc565b92915050565b5f602082840312156131f9576131f8612f4b565b5b5f61320684828501612f95565b91505092915050565b6132188161301c565b82525050565b5f6020820190506132315f83018461320f565b92915050565b5f805f6060848603121561324e5761324d612f4b565b5b5f61325b86828701612f95565b935050602061326c86828701612f95565b925050604061327d8682870161303b565b9150509250925092565b5f60ff82169050919050565b61329c81613287565b82525050565b5f6020820190506132b55f830184613293565b92915050565b6132c481612f6e565b82525050565b5f6020820190506132dd5f8301846132bb565b92915050565b5f805f80608085870312156132fb576132fa612f4b565b5b5f6133088782880161303b565b94505060206133198782880161303b565b935050604061332a8782880161303b565b925050606061333b8782880161303b565b91505092959194509250565b5f806040838503121561335d5761335c612f4b565b5b5f61336a85828601612f95565b925050602061337b85828601612f95565b9150509250929050565b5f6020828403121561339a57613399612f4b565b5b5f6133a784828501612fca565b91505092915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f6133e4601483613084565b91506133ef826133b0565b602082019050919050565b5f6020820190508181035f830152613411816133d8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061345c57607f821691505b60208210810361346f5761346e613418565b5b50919050565b7f4f6e6c7920636f6e74726163742063616e2063616c6c000000000000000000005f82015250565b5f6134a9601683613084565b91506134b482613475565b602082019050919050565b5f6020820190508181035f8301526134d68161349d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6135148261301c565b915061351f8361301c565b9250828203905081811115613537576135366134dd565b5b92915050565b5f6135478261301c565b91506135528361301c565b925082820190508082111561356a576135696134dd565b5b92915050565b5f61357a8261301c565b91506135858361301c565b92508282026135938161301c565b915082820484148315176135aa576135a96134dd565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135e88261301c565b91506135f38361301c565b925082613603576136026135b1565b5b828204905092915050565b5f6080820190506136215f83018761320f565b61362e602083018661320f565b61363b604083018561320f565b613648606083018461320f565b95945050505050565b7f4465762077616c6c65742063616e6e6f74206265207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136ab602183613084565b91506136b682613651565b604082019050919050565b5f6020820190508181035f8301526136d88161369f565b9050919050565b7f4e6f20746f6b656e7320746f20737761700000000000000000000000000000005f82015250565b5f613713601183613084565b915061371e826136df565b602082019050919050565b5f6020820190508181035f83015261374081613707565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f74206265207a65726f205f8201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b5f6137a1602783613084565b91506137ac82613747565b604082019050919050565b5f6020820190508181035f8301526137ce81613795565b9050919050565b7f546f6b656e20616d6f756e74206d7573742062652067726561746572207468615f8201527f6e20300000000000000000000000000000000000000000000000000000000000602082015250565b5f61382f602383613084565b915061383a826137d5565b604082019050919050565b5f6020820190508181035f83015261385c81613823565b9050919050565b7f45544820616d6f756e74206d7573742062652067726561746572207468616e205f8201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138bd602183613084565b91506138c882613863565b604082019050919050565b5f6020820190508181035f8301526138ea816138b1565b9050919050565b7f446561646c696e65206d75737420626520696e207468652066757475726500005f82015250565b5f613925601e83613084565b9150613930826138f1565b602082019050919050565b5f6020820190508181035f83015261395281613919565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156139ae5780860481111561398a576139896134dd565b5b60018516156139995780820291505b80810290506139a785613959565b945061396e565b94509492505050565b5f826139c65760019050613a81565b816139d3575f9050613a81565b81600181146139e957600281146139f357613a22565b6001915050613a81565b60ff841115613a0557613a046134dd565b5b8360020a915084821115613a1c57613a1b6134dd565b5b50613a81565b5060208310610133831016604e8410600b8410161715613a575782820a905083811115613a5257613a516134dd565b5b613a81565b613a648484846001613965565b92509050818404811115613a7b57613a7a6134dd565b5b81810290505b9392505050565b5f613a928261301c565b9150613a9d83613287565b9250613aca7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846139b7565b905092915050565b7f496e73756666696369656e742045544820696e20636f6e7472616374000000005f82015250565b5f613b06601c83613084565b9150613b1182613ad2565b602082019050919050565b5f6020820190508181035f830152613b3381613afa565b9050919050565b5f60c082019050613b4d5f8301896132bb565b613b5a602083018861320f565b613b67604083018761320f565b613b74606083018661320f565b613b8160808301856132bb565b613b8e60a083018461320f565b979650505050505050565b5f81519050613ba781613025565b92915050565b5f805f60608486031215613bc457613bc3612f4b565b5b5f613bd186828701613b99565b9350506020613be286828701613b99565b9250506040613bf386828701613b99565b9150509250925092565b7f496e73756666696369656e74206c6971756964697479206d696e7465640000005f82015250565b5f613c31601d83613084565b9150613c3c82613bfd565b602082019050919050565b5f6020820190508181035f830152613c5e81613c25565b9050919050565b7f4275792074617865732063616e6e6f74206578636565642035302500000000005f82015250565b5f613c99601b83613084565b9150613ca482613c65565b602082019050919050565b5f6020820190508181035f830152613cc681613c8d565b9050919050565b7f53656c6c2074617865732063616e6e6f742065786365656420353025000000005f82015250565b5f613d01601c83613084565b9150613d0c82613ccd565b602082019050919050565b5f6020820190508181035f830152613d2e81613cf5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613d9d81612f7f565b92915050565b5f60208284031215613db857613db7612f4b565b5b5f613dc584828501613d8f565b91505092915050565b5f819050919050565b5f613df1613dec613de784613dce565b613170565b61301c565b9050919050565b613e0181613dd7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e3981612f6e565b82525050565b5f613e4a8383613e30565b60208301905092915050565b5f602082019050919050565b5f613e6c82613e07565b613e768185613e11565b9350613e8183613e21565b805f5b83811015613eb1578151613e988882613e3f565b9750613ea383613e56565b925050600181019050613e84565b5085935050505092915050565b5f60a082019050613ed15f83018861320f565b613ede6020830187613df8565b8181036040830152613ef08186613e62565b9050613eff60608301856132bb565b613f0c608083018461320f565b9695505050505050565b5f606082019050613f295f8301866132bb565b613f36602083018561320f565b613f43604083018461320f565b949350505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613fa5602583613084565b9150613fb082613f4b565b604082019050919050565b5f6020820190508181035f830152613fd281613f99565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614033602383613084565b915061403e82613fd9565b604082019050919050565b5f6020820190508181035f83015261406081614027565b9050919050565b7f426c61636b6c69737465642061646472657373000000000000000000000000005f82015250565b5f61409b601383613084565b91506140a682614067565b602082019050919050565b5f6020820190508181035f8301526140c88161408f565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178545f8201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b5f614129602883613084565b9150614134826140cf565b604082019050919050565b5f6020820190508181035f8301526141568161411d565b9050919050565b7f427579696e672069732063757272656e746c792064697361626c6564000000005f82015250565b5f614191601c83613084565b915061419c8261415d565b602082019050919050565b5f6020820190508181035f8301526141be81614185565b9050919050565b7f53656c6c2069732063757272656e746c792064697361626c65640000000000005f82015250565b5f6141f9601a83613084565b9150614204826141c5565b602082019050919050565b5f6020820190508181035f830152614226816141ed565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f5f8201527f756e740000000000000000000000000000000000000000000000000000000000602082015250565b5f614287602383613084565b91506142928261422d565b604082019050919050565b5f6020820190508181035f8301526142b48161427b565b905091905056fea2646970667358221220be6e664524aeb527a0f4b3ff66146b7849e938523dd5714048d1ddfdcd60b33b64736f6c634300081a0033