[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "buyTaxTotal", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "buyMarketingTax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "buyProjectTax", "type": "uint256" } ], "name": "BuyFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "DisabledTransferDelay", "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": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludeFromLimits", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "LimitsRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "MarketingWalletUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxTx", "type": "uint256" } ], "name": "MaxTxUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxWallet", "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": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "ProjectWalletUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "sellTaxTotal", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sellMarketingTax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sellProjectTax", "type": "uint256" } ], "name": "SellFeeUpdated", "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": "bool", "name": "enabled", "type": "bool" }, { "indexed": false, "internalType": "uint256", "name": "swapBackValueMin", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "swapBackValueMax", "type": "uint256" } ], "name": "SwapbackSettingsUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "TradingEnabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" } ], "name": "UpdateUniswapV2Router", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_target", "type": "address" } ], "name": "checkMappings", "outputs": [ { "internalType": "bool", "name": "_transferTaxExempt", "type": "bool" }, { "internalType": "bool", "name": "_transferLimitExempt", "type": "bool" }, { "internalType": "bool", "name": "_automatedMarketMakerPairs", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "dexPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "enableTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "updAds", "type": "address" }, { "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "exemptFromMaxWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "exemptFromTaxes", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "feeWallets", "outputs": [ { "internalType": "address", "name": "_marketingWallet", "type": "address" }, { "internalType": "address", "name": "_projectWallet", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_devFee", "type": "uint256" } ], "name": "feesBuySe", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_devFee", "type": "uint256" } ], "name": "feesSellSe", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "limitsDis", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sbInfo", "outputs": [ { "internalType": "bool", "name": "_swapbackEnabled", "type": "bool" }, { "internalType": "uint256", "name": "_swapBackValueMin", "type": "uint256" }, { "internalType": "uint256", "name": "_swapBackValueMax", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_enabled", "type": "bool" }, { "internalType": "uint256", "name": "_min", "type": "uint256" }, { "internalType": "uint256", "name": "_max", "type": "uint256" } ], "name": "sbValuesSet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newDevWlt", "type": "address" } ], "name": "setAddressForDevFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newMktWlt", "type": "address" } ], "name": "setAddressForMarketingFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setAutomatedMarketMakerPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "taxesValues", "outputs": [ { "internalType": "uint256", "name": "_buyTaxTotal", "type": "uint256" }, { "internalType": "uint256", "name": "_buyMarketingTax", "type": "uint256" }, { "internalType": "uint256", "name": "_buyProjectTax", "type": "uint256" }, { "internalType": "uint256", "name": "_sellTaxTotal", "type": "uint256" }, { "internalType": "uint256", "name": "_sellMarketingTax", "type": "uint256" }, { "internalType": "uint256", "name": "_sellProjectTax", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMaxTxLimit", "type": "uint256" } ], "name": "txLimitAmountSet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "txLimits", "outputs": [ { "internalType": "bool", "name": "_limitsEnabled", "type": "bool" }, { "internalType": "uint256", "name": "_maxWallet", "type": "uint256" }, { "internalType": "uint256", "name": "_maxTx", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMaxWalletLimit", "type": "uint256" } ], "name": "walletLimitValueSet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c06040526000600560156101000a81548160ff0219169083151502179055506001600860006101000a81548160ff0219169083151502179055506000600c60006101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600881526020017f4652454e2054454b0000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4652454e000000000000000000000000000000000000000000000000000000008152508160039081620000e0919062000f1f565b508060049081620000f2919062000f1f565b5050506200011562000109620005f860201b60201c565b6200060060201b60201c565b6000734752ba5dbc23f44d87826276bf6fd6b1c372ad24905062000141816001620006c660201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e7919062001070565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000275919062001070565b6040518363ffffffff1660e01b815260040162000294929190620010b3565b6020604051808303816000875af1158015620002b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002da919062001070565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200032260a0516001620006c660201b60201c565b6200033760a05160016200080060201b60201c565b600060149050600080601e905060008062000357620008a160201b60201c565b600a62000365919062001270565b6305f5e100620003769190620012c1565b90506103e86014826200038a9190620012c1565b6200039691906200133b565b600a819055506103e8601482620003ae9190620012c1565b620003ba91906200133b565b6009819055506103e8600182620003d29190620012c1565b620003de91906200133b565b6006819055506064600282620003f59190620012c1565b6200040191906200133b565b60078190555084600f8190555083601081905550601054600f5462000427919062001373565b600e8190555082601281905550816013819055506013546012546200044d919062001373565b601181905550732c84493ecc8a43b7da8fa00df9f657d25864053a600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004fc336001620008aa60201b60201c565b6200050f306001620008aa60201b60201c565b6200052461dead6001620008aa60201b60201c565b62000559600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008aa60201b60201c565b6200056c336001620006c660201b60201c565b6200057f306001620006c660201b60201c565b6200059461dead6001620006c660201b60201c565b620005c9600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006c660201b60201c565b620005da33620009e460201b60201c565b620005ec338262000af960201b60201c565b505050505050620015a3565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006d6620005f860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006fc62000c7160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000755576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200074c906200140f565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9282604051620007f491906200144e565b60405180910390a25050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60006012905090565b620008ba620005f860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008e062000c7160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000930906200140f565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009d891906200144e565b60405180910390a25050565b620009f4620005f860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000a1a62000c7160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a6a906200140f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000ae5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000adc90620014e1565b60405180910390fd5b62000af6816200060060201b60201c565b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b629062001553565b60405180910390fd5b62000b7f6000838362000c9b60201b60201c565b806002600082825462000b93919062001373565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000bea919062001373565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c51919062001586565b60405180910390a362000c6d6000838362000ca060201b60201c565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d2757607f821691505b60208210810362000d3d5762000d3c62000cdf565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000da77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000d68565b62000db3868362000d68565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000e0062000dfa62000df48462000dcb565b62000dd5565b62000dcb565b9050919050565b6000819050919050565b62000e1c8362000ddf565b62000e3462000e2b8262000e07565b84845462000d75565b825550505050565b600090565b62000e4b62000e3c565b62000e5881848462000e11565b505050565b5b8181101562000e805762000e7460008262000e41565b60018101905062000e5e565b5050565b601f82111562000ecf5762000e998162000d43565b62000ea48462000d58565b8101602085101562000eb4578190505b62000ecc62000ec38562000d58565b83018262000e5d565b50505b505050565b600082821c905092915050565b600062000ef46000198460080262000ed4565b1980831691505092915050565b600062000f0f838362000ee1565b9150826002028217905092915050565b62000f2a8262000ca5565b67ffffffffffffffff81111562000f465762000f4562000cb0565b5b62000f52825462000d0e565b62000f5f82828562000e84565b600060209050601f83116001811462000f97576000841562000f82578287015190505b62000f8e858262000f01565b86555062000ffe565b601f19841662000fa78662000d43565b60005b8281101562000fd15784890151825560018201915060208501945060208101905062000faa565b8683101562000ff1578489015162000fed601f89168262000ee1565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062001038826200100b565b9050919050565b6200104a816200102b565b81146200105657600080fd5b50565b6000815190506200106a816200103f565b92915050565b60006020828403121562001089576200108862001006565b5b6000620010998482850162001059565b91505092915050565b620010ad816200102b565b82525050565b6000604082019050620010ca6000830185620010a2565b620010d96020830184620010a2565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200116e57808604811115620011465762001145620010e0565b5b6001851615620011565780820291505b808102905062001166856200110f565b945062001126565b94509492505050565b6000826200118957600190506200125c565b816200119957600090506200125c565b8160018114620011b25760028114620011bd57620011f3565b60019150506200125c565b60ff841115620011d257620011d1620010e0565b5b8360020a915084821115620011ec57620011eb620010e0565b5b506200125c565b5060208310610133831016604e8410600b84101617156200122d5782820a905083811115620012275762001226620010e0565b5b6200125c565b6200123c84848460016200111c565b92509050818404811115620012565762001255620010e0565b5b81810290505b9392505050565b600060ff82169050919050565b60006200127d8262000dcb565b91506200128a8362001263565b9250620012b97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001177565b905092915050565b6000620012ce8262000dcb565b9150620012db8362000dcb565b9250828202620012eb8162000dcb565b91508282048414831517620013055762001304620010e0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620013488262000dcb565b9150620013558362000dcb565b9250826200136857620013676200130c565b5b828204905092915050565b6000620013808262000dcb565b91506200138d8362000dcb565b9250828201905080821115620013a857620013a7620010e0565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620013f7602083620013ae565b91506200140482620013bf565b602082019050919050565b600060208201905081810360008301526200142a81620013e8565b9050919050565b60008115159050919050565b620014488162001431565b82525050565b60006020820190506200146560008301846200143d565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620014c9602683620013ae565b9150620014d6826200146b565b604082019050919050565b60006020820190508181036000830152620014fc81620014ba565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200153b601f83620013ae565b9150620015488262001503565b602082019050919050565b600060208201905081810360008301526200156e816200152c565b9050919050565b620015808162000dcb565b82525050565b60006020820190506200159d600083018462001575565b92915050565b60805160a0516146e3620015de6000396000818161140f0152611cce0152600081816130c0015281816131a101526131c801526146e36000f3fe6080604052600436106101f25760003560e01c80638da5cb5b1161010d578063a9059cbb116100a0578063e25061b81161006f578063e25061b814610712578063e2ea50461461073b578063f242ab4114610752578063f270fde41461077d578063f2fde38b146107aa576101f9565b8063a9059cbb1461062c578063d774cfa914610669578063dd62ed3e14610696578063e13b2007146106d3576101f9565b80639cd5f6eb116100dc5780639cd5f6eb146105745780639d9ecc611461059d578063a457c2d7146105c6578063a51eca0914610603576101f9565b80638da5cb5b146104cc57806390a8e69e146104f757806395d89b41146105205780639a7a23d61461054b576101f9565b80633950935111610185578063715018a611610154578063715018a61461044557806379d010891461045c5780637b5c89d21461048c5780638a8c523c146104b5576101f9565b806339509351146103775780633b7bf060146103b45780634ada218b146103dd57806370a0823114610408576101f9565b80631e5bbf62116101c15780631e5bbf62146102ba57806323b872dd146102e357806325379fc314610320578063313ce5671461034c576101f9565b806306fdde03146101fe578063095ea7b31461022957806314762dca1461026657806318160ddd1461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107d3565b6040516102209190613304565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b91906133bf565b610865565b60405161025d919061341a565b60405180910390f35b34801561027257600080fd5b5061028d60048036038101906102889190613461565b610883565b005b34801561029b57600080fd5b506102a4610a2c565b6040516102b191906134c3565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc91906134de565b610a36565b005b3480156102ef57600080fd5b5061030a6004803603810190610305919061351e565b610b5b565b604051610317919061341a565b60405180910390f35b34801561032c57600080fd5b50610335610c53565b604051610343929190613580565b60405180910390f35b34801561035857600080fd5b50610361610ca4565b60405161036e91906135c5565b60405180910390f35b34801561038357600080fd5b5061039e600480360381019061039991906133bf565b610cad565b6040516103ab919061341a565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d691906135e0565b610d59565b005b3480156103e957600080fd5b506103f2610e7b565b6040516103ff919061341a565b60405180910390f35b34801561041457600080fd5b5061042f600480360381019061042a919061360d565b610e8e565b60405161043c91906134c3565b60405180910390f35b34801561045157600080fd5b5061045a610ed6565b005b34801561046857600080fd5b50610471610f5e565b6040516104839695949392919061363a565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae919061360d565b610f8d565b005b3480156104c157600080fd5b506104ca6110c9565b005b3480156104d857600080fd5b506104e16111aa565b6040516104ee919061369b565b60405180910390f35b34801561050357600080fd5b5061051e600480360381019061051991906136b6565b6111d4565b005b34801561052c57600080fd5b506105356112ff565b6040516105429190613304565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d91906134de565b611391565b005b34801561058057600080fd5b5061059b600480360381019061059691906136b6565b6114a9565b005b3480156105a957600080fd5b506105c460048036038101906105bf919061360d565b6115d4565b005b3480156105d257600080fd5b506105ed60048036038101906105e891906133bf565b611710565b6040516105fa919061341a565b60405180910390f35b34801561060f57600080fd5b5061062a600480360381019061062591906135e0565b6117fb565b005b34801561063857600080fd5b50610653600480360381019061064e91906133bf565b61191d565b604051610660919061341a565b60405180910390f35b34801561067557600080fd5b5061067e61193b565b60405161068d939291906136f6565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b8919061372d565b611961565b6040516106ca91906134c3565b60405180910390f35b3480156106df57600080fd5b506106fa60048036038101906106f5919061360d565b6119e8565b6040516107099392919061376d565b60405180910390f35b34801561071e57600080fd5b50610739600480360381019061073491906134de565b611ae1565b005b34801561074757600080fd5b50610750611c06565b005b34801561075e57600080fd5b50610767611ccc565b604051610774919061369b565b60405180910390f35b34801561078957600080fd5b50610792611cf0565b6040516107a1939291906136f6565b60405180910390f35b3480156107b657600080fd5b506107d160048036038101906107cc919061360d565b611d16565b005b6060600380546107e2906137d3565b80601f016020809104026020016040519081016040528092919081815260200182805461080e906137d3565b801561085b5780601f106108305761010080835404028352916020019161085b565b820191906000526020600020905b81548152906001019060200180831161083e57829003601f168201915b5050505050905090565b6000610879610872611e0d565b8484611e15565b6001905092915050565b61088b611e0d565b73ffffffffffffffffffffffffffffffffffffffff166108a96111aa565b73ffffffffffffffffffffffffffffffffffffffff16146108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f690613850565b60405180910390fd5b6001821015610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a906138e2565b60405180910390fd5b81811015610986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097d90613974565b60405180910390fd5b82600560156101000a81548160ff021916908315150217905550612710826109ac610a2c565b6109b691906139c3565b6109c09190613a34565b600681905550612710816109d2610a2c565b6109dc91906139c3565b6109e69190613a34565b6007819055507f52cd2cdb42ff0eeec9362d7ed5b04f64c8d022697128b5378fc51cea7e63c779838383604051610a1f939291906136f6565b60405180910390a1505050565b6000600254905090565b610a3e611e0d565b73ffffffffffffffffffffffffffffffffffffffff16610a5c6111aa565b73ffffffffffffffffffffffffffffffffffffffff1614610ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa990613850565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9282604051610b4f919061341a565b60405180910390a25050565b6000610b68848484611fde565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bb3611e0d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2a90613ad7565b60405180910390fd5b610c4785610c3f611e0d565b858403611e15565b60019150509392505050565b600080600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b60006012905090565b6000610d4f610cba611e0d565b848460016000610cc8611e0d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d4a9190613af7565b611e15565b6001905092915050565b610d61611e0d565b73ffffffffffffffffffffffffffffffffffffffff16610d7f6111aa565b73ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc90613850565b60405180910390fd5b6002811015610e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1090613b77565b60405180910390fd5b6103e8610e24610a2c565b82610e2f91906139c3565b610e399190613a34565b600a819055507fff3dd5e80294197918c284bbfc3dadd97d0b40ce92106110946329088f80068a600a54604051610e7091906134c3565b60405180910390a150565b600c60009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ede611e0d565b73ffffffffffffffffffffffffffffffffffffffff16610efc6111aa565b73ffffffffffffffffffffffffffffffffffffffff1614610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4990613850565b60405180910390fd5b610f5c6000612a47565b565b600080600080600080600e549550600f5494506010549350601154925060125491506013549050909192939495565b610f95611e0d565b73ffffffffffffffffffffffffffffffffffffffff16610fb36111aa565b73ffffffffffffffffffffffffffffffffffffffff1614611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100090613850565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb91dbdeaf34f885ccae2d8abc3967cb03c079b6af2c7944e3893fd29427d75e760405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110d1611e0d565b73ffffffffffffffffffffffffffffffffffffffff166110ef6111aa565b73ffffffffffffffffffffffffffffffffffffffff1614611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c90613850565b60405180910390fd5b6001600c60006101000a81548160ff0219169083151502179055506001600560156101000a81548160ff021916908315150217905550427fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e92360405160405180910390a2565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111dc611e0d565b73ffffffffffffffffffffffffffffffffffffffff166111fa6111aa565b73ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790613850565b60405180910390fd5b816012819055508060138190555060135460125461126e9190613af7565b601181905550606460115411156112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b190613c09565b60405180910390fd5b7fcb5f36df892836a2eaedc349de29a7581176990398ee185d16eaa8f6c1abd8f16011546012546013546040516112f393929190613c29565b60405180910390a15050565b60606004805461130e906137d3565b80601f016020809104026020016040519081016040528092919081815260200182805461133a906137d3565b80156113875780601f1061135c57610100808354040283529160200191611387565b820191906000526020600020905b81548152906001019060200180831161136a57829003601f168201915b5050505050905090565b611399611e0d565b73ffffffffffffffffffffffffffffffffffffffff166113b76111aa565b73ffffffffffffffffffffffffffffffffffffffff161461140d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140490613850565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361149b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149290613cd2565b60405180910390fd5b6114a58282612b0d565b5050565b6114b1611e0d565b73ffffffffffffffffffffffffffffffffffffffff166114cf6111aa565b73ffffffffffffffffffffffffffffffffffffffff1614611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151c90613850565b60405180910390fd5b81600f8190555080601081905550601054600f546115439190613af7565b600e819055506064600e54111561158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158690613d64565b60405180910390fd5b7f38513c502b0ab4834ac1df9502b76f75dcf7092469782cfd0db7fe664388e25e600e54600f546010546040516115c893929190613c29565b60405180910390a15050565b6115dc611e0d565b73ffffffffffffffffffffffffffffffffffffffff166115fa6111aa565b73ffffffffffffffffffffffffffffffffffffffff1614611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164790613850565b60405180910390fd5b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a380600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806001600061171f611e0d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156117dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d390613df6565b60405180910390fd5b6117f06117e7611e0d565b85858403611e15565b600191505092915050565b611803611e0d565b73ffffffffffffffffffffffffffffffffffffffff166118216111aa565b73ffffffffffffffffffffffffffffffffffffffff1614611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186e90613850565b60405180910390fd5b60058110156118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b290613e88565b60405180910390fd5b6103e86118c6610a2c565b826118d191906139c3565b6118db9190613a34565b6009819055507f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace60095460405161191291906134c3565b60405180910390a150565b600061193161192a611e0d565b8484611fde565b6001905092915050565b6000806000600560159054906101000a900460ff16925060065491506007549050909192565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169250601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169150601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690509193909250565b611ae9611e0d565b73ffffffffffffffffffffffffffffffffffffffff16611b076111aa565b73ffffffffffffffffffffffffffffffffffffffff1614611b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5490613850565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611bfa919061341a565b60405180910390a25050565b611c0e611e0d565b73ffffffffffffffffffffffffffffffffffffffff16611c2c6111aa565b73ffffffffffffffffffffffffffffffffffffffff1614611c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7990613850565b60405180910390fd5b6000600860006101000a81548160ff021916908315150217905550427ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e50261660405160405180910390a2565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000600860009054906101000a900460ff1692506009549150600a549050909192565b611d1e611e0d565b73ffffffffffffffffffffffffffffffffffffffff16611d3c6111aa565b73ffffffffffffffffffffffffffffffffffffffff1614611d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8990613850565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df890613f1a565b60405180910390fd5b611e0a81612a47565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7b90613fac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eea9061403e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fd191906134c3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361204d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612044906140d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b390614162565b60405180910390fd5b600081036120d5576120d083836000612bae565b612a42565b600860009054906101000a900460ff16156125d0576120f26111aa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561216057506121306111aa565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121995750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121d3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121ec5750600560149054906101000a900460ff16155b156125cf57600c60009054906101000a900460ff166122e657601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122a65750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dc906141f4565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123895750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561243057600a548111156123d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ca90614286565b60405180910390fd5b6009546123df83610e8e565b826123ea9190613af7565b111561242b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612422906142f2565b60405180910390fd5b6125ce565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124d35750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561252257600a5481111561251d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251490614384565b60405180910390fd5b6125cd565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166125cc5760095461257f83610e8e565b8261258a9190613af7565b11156125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c2906142f2565b60405180910390fd5b5b5b5b5b5b60006125db30610e8e565b9050600060065482101590508080156126005750600560159054906101000a900460ff165b80156126195750600560149054906101000a900460ff16155b801561266f5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126c55750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561271b5750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561275f576001600560146101000a81548160ff021916908315150217905550612743612e2d565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128155750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561281f57600090505b60008115612a3257601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561288257506000601154115b1561291c576128af60646128a160115488612feb90919063ffffffff16565b61300190919063ffffffff16565b9050601154601354826128c291906139c3565b6128cc9190613a34565b601560008282546128dd9190613af7565b92505081905550601154601254826128f591906139c3565b6128ff9190613a34565b601460008282546129109190613af7565b92505081905550612a0e565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561297757506000600e54115b15612a0d576129a46064612996600e5488612feb90919063ffffffff16565b61300190919063ffffffff16565b9050600e54601054826129b791906139c3565b6129c19190613a34565b601560008282546129d29190613af7565b92505081905550600e54600f54826129ea91906139c3565b6129f49190613a34565b60146000828254612a059190613af7565b925050819055505b5b6000811115612a2357612a22873083612bae565b5b8085612a2f91906143a4565b94505b612a3d878787612bae565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c14906140d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8390614162565b60405180910390fd5b612c97838383613017565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d149061444a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612db09190613af7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e1491906134c3565b60405180910390a3612e2784848461301c565b50505050565b6000612e3830610e8e565b905060008190506000808303612e5057505050612fe9565b600754831115612e605760075492505b60008390506000479050612e7382613021565b6000612e88824761325e90919063ffffffff16565b90506000612eb386612ea560155485612feb90919063ffffffff16565b61300190919063ffffffff16565b905060006014819055506000601581905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612f0b9061449b565b60006040518083038185875af1925050503d8060008114612f48576040519150601f19603f3d011682016040523d82523d6000602084013e612f4d565b606091505b505080955050600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612f999061449b565b60006040518083038185875af1925050503d8060008114612fd6576040519150601f19603f3d011682016040523d82523d6000602084013e612fdb565b606091505b505080955050505050505050505b565b60008183612ff991906139c3565b905092915050565b6000818361300f9190613a34565b905092915050565b505050565b505050565b6000600267ffffffffffffffff81111561303e5761303d6144b0565b5b60405190808252806020026020018201604052801561306c5781602001602082028036833780820191505090505b5090503081600081518110613084576130836144df565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061314d9190614523565b81600181518110613161576131606144df565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131c6307f000000000000000000000000000000000000000000000000000000000000000084611e15565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613228959493929190614653565b600060405180830381600087803b15801561324257600080fd5b505af1158015613256573d6000803e3d6000fd5b505050505050565b6000818361326c91906143a4565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132ae578082015181840152602081019050613293565b60008484015250505050565b6000601f19601f8301169050919050565b60006132d682613274565b6132e0818561327f565b93506132f0818560208601613290565b6132f9816132ba565b840191505092915050565b6000602082019050818103600083015261331e81846132cb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133568261332b565b9050919050565b6133668161334b565b811461337157600080fd5b50565b6000813590506133838161335d565b92915050565b6000819050919050565b61339c81613389565b81146133a757600080fd5b50565b6000813590506133b981613393565b92915050565b600080604083850312156133d6576133d5613326565b5b60006133e485828601613374565b92505060206133f5858286016133aa565b9150509250929050565b60008115159050919050565b613414816133ff565b82525050565b600060208201905061342f600083018461340b565b92915050565b61343e816133ff565b811461344957600080fd5b50565b60008135905061345b81613435565b92915050565b60008060006060848603121561347a57613479613326565b5b60006134888682870161344c565b9350506020613499868287016133aa565b92505060406134aa868287016133aa565b9150509250925092565b6134bd81613389565b82525050565b60006020820190506134d860008301846134b4565b92915050565b600080604083850312156134f5576134f4613326565b5b600061350385828601613374565b92505060206135148582860161344c565b9150509250929050565b60008060006060848603121561353757613536613326565b5b600061354586828701613374565b935050602061355686828701613374565b9250506040613567868287016133aa565b9150509250925092565b61357a8161334b565b82525050565b60006040820190506135956000830185613571565b6135a26020830184613571565b9392505050565b600060ff82169050919050565b6135bf816135a9565b82525050565b60006020820190506135da60008301846135b6565b92915050565b6000602082840312156135f6576135f5613326565b5b6000613604848285016133aa565b91505092915050565b60006020828403121561362357613622613326565b5b600061363184828501613374565b91505092915050565b600060c08201905061364f60008301896134b4565b61365c60208301886134b4565b61366960408301876134b4565b61367660608301866134b4565b61368360808301856134b4565b61369060a08301846134b4565b979650505050505050565b60006020820190506136b06000830184613571565b92915050565b600080604083850312156136cd576136cc613326565b5b60006136db858286016133aa565b92505060206136ec858286016133aa565b9150509250929050565b600060608201905061370b600083018661340b565b61371860208301856134b4565b61372560408301846134b4565b949350505050565b6000806040838503121561374457613743613326565b5b600061375285828601613374565b925050602061376385828601613374565b9150509250929050565b6000606082019050613782600083018661340b565b61378f602083018561340b565b61379c604083018461340b565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137eb57607f821691505b6020821081036137fe576137fd6137a4565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061383a60208361327f565b915061384582613804565b602082019050919050565b600060208201905081810360008301526138698161382d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e30312520746f74616c20737570706c792e000000000000000000000000602082015250565b60006138cc60348361327f565b91506138d782613870565b604082019050919050565b600060208201905081810360008301526138fb816138bf565b9050919050565b7f6d6178696d756d20616d6f756e742063616e742062652068696768657220746860008201527f616e206d696e696d756d00000000000000000000000000000000000000000000602082015250565b600061395e602a8361327f565b915061396982613902565b604082019050919050565b6000602082019050818103600083015261398d81613951565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139ce82613389565b91506139d983613389565b92508282026139e781613389565b915082820484148315176139fe576139fd613994565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a3f82613389565b9150613a4a83613389565b925082613a5a57613a59613a05565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613ac160288361327f565b9150613acc82613a65565b604082019050919050565b60006020820190508181036000830152613af081613ab4565b9050919050565b6000613b0282613389565b9150613b0d83613389565b9250828201905080821115613b2557613b24613994565b5b92915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e3225600082015250565b6000613b6160208361327f565b9150613b6c82613b2b565b602082019050919050565b60006020820190508181036000830152613b9081613b54565b9050919050565b7f546f74616c2073656c6c206665652063616e6e6f74206265206869676865722060008201527f7468616e20313030250000000000000000000000000000000000000000000000602082015250565b6000613bf360298361327f565b9150613bfe82613b97565b604082019050919050565b60006020820190508181036000830152613c2281613be6565b9050919050565b6000606082019050613c3e60008301866134b4565b613c4b60208301856134b4565b613c5860408301846134b4565b949350505050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613cbc60398361327f565b9150613cc782613c60565b604082019050919050565b60006020820190508181036000830152613ceb81613caf565b9050919050565b7f546f74616c20627579206665652063616e6e6f7420626520686967686572207460008201527f68616e2031303025000000000000000000000000000000000000000000000000602082015250565b6000613d4e60288361327f565b9150613d5982613cf2565b604082019050919050565b60006020820190508181036000830152613d7d81613d41565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613de060258361327f565b9150613deb82613d84565b604082019050919050565b60006020820190508181036000830152613e0f81613dd3565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613e7260248361327f565b9150613e7d82613e16565b604082019050919050565b60006020820190508181036000830152613ea181613e65565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f0460268361327f565b9150613f0f82613ea8565b604082019050919050565b60006020820190508181036000830152613f3381613ef7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f9660248361327f565b9150613fa182613f3a565b604082019050919050565b60006020820190508181036000830152613fc581613f89565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061402860228361327f565b915061403382613fcc565b604082019050919050565b600060208201905081810360008301526140578161401b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140ba60258361327f565b91506140c58261405e565b604082019050919050565b600060208201905081810360008301526140e9816140ad565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061414c60238361327f565b9150614157826140f0565b604082019050919050565b6000602082019050818103600083015261417b8161413f565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006141de60228361327f565b91506141e982614182565b604082019050919050565b6000602082019050818103600083015261420d816141d1565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b600061427060268361327f565b915061427b82614214565b604082019050919050565b6000602082019050818103600083015261429f81614263565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006142dc60138361327f565b91506142e7826142a6565b602082019050919050565b6000602082019050818103600083015261430b816142cf565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b600061436e60278361327f565b915061437982614312565b604082019050919050565b6000602082019050818103600083015261439d81614361565b9050919050565b60006143af82613389565b91506143ba83613389565b92508282039050818111156143d2576143d1613994565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061443460268361327f565b915061443f826143d8565b604082019050919050565b6000602082019050818103600083015261446381614427565b9050919050565b600081905092915050565b50565b600061448560008361446a565b915061449082614475565b600082019050919050565b60006144a682614478565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061451d8161335d565b92915050565b60006020828403121561453957614538613326565b5b60006145478482850161450e565b91505092915050565b6000819050919050565b6000819050919050565b600061457f61457a61457584614550565b61455a565b613389565b9050919050565b61458f81614564565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145ca8161334b565b82525050565b60006145dc83836145c1565b60208301905092915050565b6000602082019050919050565b600061460082614595565b61460a81856145a0565b9350614615836145b1565b8060005b8381101561464657815161462d88826145d0565b9750614638836145e8565b925050600181019050614619565b5085935050505092915050565b600060a08201905061466860008301886134b4565b6146756020830187614586565b818103604083015261468781866145f5565b90506146966060830185613571565b6146a360808301846134b4565b969550505050505056fea2646970667358221220ed4c72410066af246ec74926cf76112032834c72c96af11e4dbac7da3420c49864736f6c63430008130033