[ { "inputs": [], "stateMutability": "payable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_maxTxAmount", "type": "uint256" } ], "name": "MaxTxAmountUpdated", "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": "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": false, "internalType": "uint256", "name": "_tax", "type": "uint256" } ], "name": "TransferTaxUpdated", "type": "event" }, { "inputs": [], "name": "GEN_MIN", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_maxTaxSwap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_maxTxAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_maxWalletSize", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_taxSwapThreshold", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "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": "bots_", "type": "address[]" } ], "name": "blacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "breed_total_count", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "counts", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "disableLimits", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "gen", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gen_max", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "get_account_breeds", "outputs": [ { "internalType": "uint256", "name": "page_count", "type": "uint256" }, { "internalType": "string[]", "name": "accounts", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "get_account_items", "outputs": [ { "internalType": "uint256", "name": "page_count", "type": "uint256" }, { "internalType": "string[]", "name": "accounts", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "get_account_svgs", "outputs": [ { "internalType": "uint256", "name": "page_count", "type": "uint256" }, { "internalType": "string[]", "name": "accounts", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "get_holders_list", "outputs": [ { "internalType": "uint256", "name": "page_count", "type": "uint256" }, { "internalType": "address[]", "name": "accounts", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "get_svg_acc_index", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "holders_count", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "a", "type": "address" } ], "name": "isBot", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "manualSend", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "manualSwap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "max_breed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newFee", "type": "uint256" } ], "name": "newFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "notbot", "type": "address[]" } ], "name": "removeBlacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "removeTransferFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_accessories", "type": "uint256" } ], "name": "set_Accessories", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_accessories_color", "type": "uint256" } ], "name": "set_Accessories_color", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_background_color", "type": "uint256" } ], "name": "set_Background_color", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_body", "type": "uint256" } ], "name": "set_Body", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_body_color", "type": "uint256" } ], "name": "set_Body_color", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_eyes", "type": "uint256" } ], "name": "set_Eyes", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_eyes_base_color", "type": "uint256" } ], "name": "set_Eyes_base_color", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_eyes_color", "type": "uint256" } ], "name": "set_Eyes_color", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_facial_hair", "type": "uint256" } ], "name": "set_Facial_hair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_facial_hair_color", "type": "uint256" } ], "name": "set_Facial_hair_color", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_hair", "type": "uint256" } ], "name": "set_Hair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_hair_color", "type": "uint256" } ], "name": "set_Hair_color", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_hat", "type": "uint256" } ], "name": "set_Hat", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_hat_color", "type": "uint256" } ], "name": "set_Hat_color", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mask", "type": "uint256" } ], "name": "set_Mask", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mask_color", "type": "uint256" } ], "name": "set_Mask_color", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mouth", "type": "uint256" } ], "name": "set_Mouth", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_nose", "type": "uint256" } ], "name": "set_Nose", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_nose_color", "type": "uint256" } ], "name": "set_Nose_color", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shirt_1", "type": "uint256" } ], "name": "set_Shirt_1", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shirt_1_color", "type": "uint256" } ], "name": "set_Shirt_1_color", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shirt_2", "type": "uint256" } ], "name": "set_Shirt_2", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shirt_2_color", "type": "uint256" } ], "name": "set_Shirt_2_color", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shirt_3", "type": "uint256" } ], "name": "set_Shirt_3", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shirt_3_color", "type": "uint256" } ], "name": "set_Shirt_3_color", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mouth_color", "type": "uint256" } ], "name": "set_mouth_color", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "start", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "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": "uint256", "name": "index", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "transfer_breed_from_to_by_index", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040525f6006555f6007555f6008555f6009555f600a555f600b555f600c556046600d555f600e556009600a6100379190610590565b600661004391906105da565b600f556009600a6100549190610590565b600661006091906105da565b6010556009600a6100719190610590565b600461007d91906105da565b6011556009600a61008e9190610590565b600461009a91906105da565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f6016556103e8601a555f6100ee6103f160201b60201c565b9050805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101986103f160201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6101e59190610590565b6102b26101f291906105da565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6102466103f860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061036e6103f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6103ca9190610590565b6102b26103d791906105da565b6040516103e4919061062a565b60405180910390a3610643565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b60018511156104a15780860481111561047d5761047c61041f565b5b600185161561048c5780820291505b808102905061049a8561044c565b9450610461565b94509492505050565b5f826104b95760019050610574565b816104c6575f9050610574565b81600181146104dc57600281146104e657610515565b6001915050610574565b60ff8411156104f8576104f761041f565b5b8360020a91508482111561050f5761050e61041f565b5b50610574565b5060208310610133831016604e8410600b841016171561054a5782820a9050838111156105455761054461041f565b5b610574565b6105578484846001610458565b9250905081840481111561056e5761056d61041f565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61059a8261057b565b91506105a583610584565b92506105d27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104aa565b905092915050565b5f6105e48261057b565b91506105ef8361057b565b92508282026105fd8161057b565b915082820484148315176106145761061361041f565b5b5092915050565b6106248161057b565b82525050565b5f60208201905061063d5f83018461061b565b92915050565b615573806106505f395ff3fe6080604052600436106103bb575f3560e01c80638da5cb5b116101f1578063caea71221161010c578063dd62ed3e1161009f578063ebe07bb41161006e578063ebe07bb414610dc8578063f024cdef14610df0578063f429389014610e18578063f928364c14610e2e576103c2565b8063dd62ed3e14610d12578063dde415fa14610d4e578063df7e586c14610d78578063e30d904114610da0576103c2565b8063d2263998116100db578063d226399814610c5d578063d2b0fea314610c85578063d5a4260614610cad578063db41fae614610cea576103c2565b8063caea712214610bbd578063cb57d04514610be5578063cbc2ff7214610c0d578063cd38bbb814610c35576103c2565b8063af504def11610184578063b6d5e2f411610153578063b6d5e2f414610b2d578063ba1ad43814610b55578063be9a655514610b7d578063bf474bed14610b93576103c2565b8063af504def14610a75578063b42dfa0d14610a9f578063b4377a3e14610ac9578063b4f243a414610af1576103c2565b806398bafaa3116101c057806398bafaa3146109be578063a201b328146109fb578063a7d66ba814610a23578063a9059cbb14610a39576103c2565b80638da5cb5b146109165780638f9a55c0146109405780638fdada4a1461096a57806395d89b4114610994576103c2565b80632dd98b22116102e157806351bc3c8511610274578063715018a611610243578063715018a614610871578063750e8d10146108875780637911ef9d146108c45780637d1db4a5146108ec576103c2565b806351bc3c85146107cf57806354f06cb0146107e55780635952bd631461080d57806370a0823114610835576103c2565b80633bbac579116102b05780633bbac5791461071b57806347dca7c914610757578063481eeb7f1461077f57806351b8b09e146107a7576103c2565b80632dd98b2214610664578063313ce5671461068c5780633860a393146106b65780633946816a146106f3576103c2565b80630cc6c42f1161035957806323b872dd1161032857806323b872dd146105ae57806327c295de146105ea57806329885220146106125780632d12d34b1461063a576103c2565b80630cc6c42f1461050a5780630faee56f1461053257806318160ddd1461055c5780631b1581aa14610586576103c2565b806304b49b381161039557806304b49b38146104405780630568e65e1461046857806306fdde03146104a4578063095ea7b3146104ce576103c2565b8063018a3741146103c657806302e4cda5146103f0578063041f173f14610418576103c2565b366103c257005b5f5ffd5b3480156103d1575f5ffd5b506103da610e44565b6040516103e791906142eb565b60405180910390f35b3480156103fb575f5ffd5b506104166004803603810190610411919061433f565b610e4a565b005b348015610423575f5ffd5b5061043e60048036038101906104399190614514565b610ee9565b005b34801561044b575f5ffd5b506104666004803603810190610461919061433f565b61100c565b005b348015610473575f5ffd5b5061048e6004803603810190610489919061455b565b6110ab565b60405161049b91906142eb565b60405180910390f35b3480156104af575f5ffd5b506104b86110c0565b6040516104c591906145e6565b60405180910390f35b3480156104d9575f5ffd5b506104f460048036038101906104ef9190614606565b6110fd565b604051610501919061465e565b60405180910390f35b348015610515575f5ffd5b50610530600480360381019061052b919061433f565b61111a565b005b34801561053d575f5ffd5b506105466111b9565b60405161055391906142eb565b60405180910390f35b348015610567575f5ffd5b506105706111bf565b60405161057d91906142eb565b60405180910390f35b348015610591575f5ffd5b506105ac60048036038101906105a7919061433f565b6111e0565b005b3480156105b9575f5ffd5b506105d460048036038101906105cf9190614677565b61127f565b6040516105e1919061465e565b60405180910390f35b3480156105f5575f5ffd5b50610610600480360381019061060b919061433f565b611353565b005b34801561061d575f5ffd5b506106386004803603810190610633919061433f565b6113f2565b005b348015610645575f5ffd5b5061064e611491565b60405161065b91906142eb565b60405180910390f35b34801561066f575f5ffd5b5061068a6004803603810190610685919061433f565b611496565b005b348015610697575f5ffd5b506106a0611535565b6040516106ad91906146e2565b60405180910390f35b3480156106c1575f5ffd5b506106dc60048036038101906106d791906146fb565b61153d565b6040516106ea9291906147f0565b60405180910390f35b3480156106fe575f5ffd5b506107196004803603810190610714919061433f565b6116bf565b005b348015610726575f5ffd5b50610741600480360381019061073c919061455b565b61175e565b60405161074e919061465e565b60405180910390f35b348015610762575f5ffd5b5061077d6004803603810190610778919061433f565b6117b0565b005b34801561078a575f5ffd5b506107a560048036038101906107a0919061433f565b61184f565b005b3480156107b2575f5ffd5b506107cd60048036038101906107c8919061433f565b6118ee565b005b3480156107da575f5ffd5b506107e361198d565b005b3480156107f0575f5ffd5b5061080b6004803603810190610806919061433f565b611a24565b005b348015610818575f5ffd5b50610833600480360381019061082e919061433f565b611ac3565b005b348015610840575f5ffd5b5061085b6004803603810190610856919061455b565b611b62565b60405161086891906142eb565b60405180910390f35b34801561087c575f5ffd5b50610885611ba8565b005b348015610892575f5ffd5b506108ad60048036038101906108a8919061481e565b611cf8565b6040516108bb929190614971565b60405180910390f35b3480156108cf575f5ffd5b506108ea60048036038101906108e59190614514565b611d88565b005b3480156108f7575f5ffd5b50610900611eaa565b60405161090d91906142eb565b60405180910390f35b348015610921575f5ffd5b5061092a611eb0565b60405161093791906149ae565b60405180910390f35b34801561094b575f5ffd5b50610954611ed7565b60405161096191906142eb565b60405180910390f35b348015610975575f5ffd5b5061097e611edd565b60405161098b91906142eb565b60405180910390f35b34801561099f575f5ffd5b506109a8611ee3565b6040516109b591906145e6565b60405180910390f35b3480156109c9575f5ffd5b506109e460048036038101906109df919061481e565b611f20565b6040516109f2929190614971565b60405180910390f35b348015610a06575f5ffd5b50610a216004803603810190610a1c919061433f565b611fb0565b005b348015610a2e575f5ffd5b50610a3761204f565b005b348015610a44575f5ffd5b50610a5f6004803603810190610a5a9190614606565b612124565b604051610a6c919061465e565b60405180910390f35b348015610a80575f5ffd5b50610a89612141565b604051610a9691906142eb565b60405180910390f35b348015610aaa575f5ffd5b50610ab3612147565b604051610ac091906142eb565b60405180910390f35b348015610ad4575f5ffd5b50610aef6004803603810190610aea91906149c7565b61214d565b005b348015610afc575f5ffd5b50610b176004803603810190610b129190614606565b6121db565b604051610b2491906145e6565b60405180910390f35b348015610b38575f5ffd5b50610b536004803603810190610b4e919061433f565b6121e3565b005b348015610b60575f5ffd5b50610b7b6004803603810190610b76919061433f565b612282565b005b348015610b88575f5ffd5b50610b9161230e565b005b348015610b9e575f5ffd5b50610ba76127f6565b604051610bb491906142eb565b60405180910390f35b348015610bc8575f5ffd5b50610be36004803603810190610bde919061433f565b6127fc565b005b348015610bf0575f5ffd5b50610c0b6004803603810190610c06919061433f565b61289b565b005b348015610c18575f5ffd5b50610c336004803603810190610c2e919061433f565b61293a565b005b348015610c40575f5ffd5b50610c5b6004803603810190610c56919061433f565b6129d9565b005b348015610c68575f5ffd5b50610c836004803603810190610c7e919061433f565b612a78565b005b348015610c90575f5ffd5b50610cab6004803603810190610ca6919061433f565b612a82565b005b348015610cb8575f5ffd5b50610cd36004803603810190610cce919061481e565b612b21565b604051610ce1929190614971565b60405180910390f35b348015610cf5575f5ffd5b50610d106004803603810190610d0b919061433f565b612c67565b005b348015610d1d575f5ffd5b50610d386004803603810190610d339190614a05565b612d06565b604051610d4591906142eb565b60405180910390f35b348015610d59575f5ffd5b50610d62612d88565b604051610d6f91906142eb565b60405180910390f35b348015610d83575f5ffd5b50610d9e6004803603810190610d99919061433f565b612d8e565b005b348015610dab575f5ffd5b50610dc66004803603810190610dc1919061433f565b612e2d565b005b348015610dd3575f5ffd5b50610dee6004803603810190610de9919061433f565b612ecc565b005b348015610dfb575f5ffd5b50610e166004803603810190610e11919061433f565b612f6b565b005b348015610e23575f5ffd5b50610e2c61300a565b005b348015610e39575f5ffd5b50610e42613079565b005b60195481565b610e526131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690614a8d565b60405180910390fd5b80602b8190555050565b610ef16131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7590614a8d565b60405180910390fd5b5f5f90505b815181101561100857600160045f848481518110610fa457610fa3614aab565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610f83565b5050565b6110146131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109890614a8d565b60405180910390fd5b8060328190555050565b601b602052805f5260405f205f915090505481565b60606040518060400160405280600781526020017f4d696c6164797300000000000000000000000000000000000000000000000000815250905090565b5f6111106111096131a3565b84846131aa565b6001905092915050565b6111226131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a690614a8d565b60405180910390fd5b8060308190555050565b60125481565b5f6009600a6111ce9190614c34565b6102b26111db9190614c7e565b905090565b6111e86131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126c90614a8d565b60405180910390fd5b80602e8190555050565b5f61128b84848461336d565b611348846112976131a3565b611343856040518060600160405280602881526020016155166028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6112fa6131a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613dbf9092919063ffffffff16565b6131aa565b600190509392505050565b61135b6131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df90614a8d565b60405180910390fd5b80602f8190555050565b6113fa6131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147e90614a8d565b60405180910390fd5b8060318190555050565b600181565b61149e6131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152290614a8d565b60405180910390fd5b80602c8190555050565b5f6009905090565b5f6060601954841061159c575f5f67ffffffffffffffff8111156115645761156361437e565b5b6040519080825280602002602001820160405280156115925781602001602082028036833780820191505090505b50915091506116b8565b5f83856115a99190614cbf565b90506019548111156115bb5760195490505b84816115c79190614cf2565b92508267ffffffffffffffff8111156115e3576115e261437e565b5b6040519080825280602002602001820160405280156116115781602001602082028036833780820191505090505b5091505f8590505b838110156116b55760175f82886116309190614cbf565b81526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168382815181106116705761166f614aab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050611619565b50505b9250929050565b6116c76131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b90614a8d565b60405180910390fd5b8060218190555050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6117b86131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183c90614a8d565b60405180910390fd5b8060268190555050565b6118576131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db90614a8d565b60405180910390fd5b8060228190555050565b6118f66131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a90614a8d565b60405180910390fd5b8060258190555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119cd6131a3565b73ffffffffffffffffffffffffffffffffffffffff16146119ec575f5ffd5b5f6119f630611b62565b90505f811115611a0a57611a0981613e21565b5b5f4790505f811115611a2057611a1f8161408c565b5b5050565b611a2c6131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090614a8d565b60405180910390fd5b8060208190555050565b611acb6131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4f90614a8d565b60405180910390fd5b8060238190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611bb06131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490614a8d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60605f601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8486611d499190614cbf565b905081811115611d57578190505b8581611d639190614cf2565b93505f5f90505b84811015611d7d57806001019050611d6a565b505050935093915050565b611d906131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1490614a8d565b60405180910390fd5b5f5f90505b8151811015611ea6575f60045f848481518110611e4257611e41614aab565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611e22565b5050565b600f5481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b6103e881565b60606040518060400160405280600181526020017f4d00000000000000000000000000000000000000000000000000000000000000815250905090565b5f60605f601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8486611f719190614cbf565b905081811115611f7f578190505b8581611f8b9190614cf2565b93505f5f90505b84811015611fa557806001019050611f92565b505050935093915050565b611fb86131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203c90614a8d565b60405180910390fd5b8060338190555050565b6120576131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120db90614a8d565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f60405161211a9190614d67565b60405180910390a1565b5f6121376121306131a3565b848461336d565b6001905092915050565b601c5481565b601a5481565b601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482106121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c390614dca565b60405180910390fd5b6121d73383836140f4565b5050565b606092915050565b6121eb6131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226f90614a8d565b60405180910390fd5b80602d8190555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122c26131a3565b73ffffffffffffffffffffffffffffffffffffffff16146122e1575f5ffd5b60085481111580156122f557506009548111155b6122fd575f5ffd5b806008819055508060098190555050565b6123166131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239a90614a8d565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061243d3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61242b9190614c34565b6102b26124389190614c7e565b6131aa565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124cb9190614dfc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612551573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125759190614dfc565b6040518363ffffffff1660e01b8152600401612592929190614e27565b6020604051808303815f875af11580156125ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125d29190614dfc565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306064605061265d30611b62565b6126679190614c7e565b6126719190614e7b565b5f5f61267b611eb0565b426040518863ffffffff1660e01b815260040161269d96959493929190614eab565b60606040518083038185885af11580156126b9573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906126de9190614f1e565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161277e929190614f6e565b6020604051808303815f875af115801561279a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127be9190614fbf565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b60115481565b6128046131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288890614a8d565b60405180910390fd5b8060298190555050565b6128a36131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292790614a8d565b60405180910390fd5b80602a8190555050565b6129426131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c690614a8d565b60405180910390fd5b8060368190555050565b6129e16131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6590614a8d565b60405180910390fd5b80601e8190555050565b8060358190555050565b612a8a6131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0e90614a8d565b60405180910390fd5b8060378190555050565b5f60605f601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050808510612bc5575f5f67ffffffffffffffff811115612b8757612b8661437e565b5b604051908082528060200260200182016040528015612bba57816020015b6060815260200190600190039081612ba55790505b509250925050612c5f565b5f8486612bd29190614cbf565b905081811115612bee578190508086612beb9190614cf2565b93505b8367ffffffffffffffff811115612c0857612c0761437e565b5b604051908082528060200260200182016040528015612c3b57816020015b6060815260200190600190039081612c265790505b5092505f5f5f90508791505b82821015612c5a57816001019150612c47565b505050505b935093915050565b612c6f6131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf390614a8d565b60405180910390fd5b8060248190555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6103e881565b612d966131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1a90614a8d565b60405180910390fd5b8060288190555050565b612e356131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb990614a8d565b60405180910390fd5b80601f8190555050565b612ed46131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5890614a8d565b60405180910390fd5b8060278190555050565b612f736131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff790614a8d565b60405180910390fd5b8060348190555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661304a6131a3565b73ffffffffffffffffffffffffffffffffffffffff1614613069575f5ffd5b5f4790506130768161408c565b50565b6130816131a3565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461310e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310590614a8d565b60405180910390fd5b6009600a61311c9190614c34565b6102b26131299190614c7e565b600f819055506009600a61313d9190614c34565b6102b261314a9190614c7e565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a61317f9190614c34565b6102b261318c9190614c7e565b60405161319991906142eb565b60405180910390a1565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320f9061505a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327d906150e8565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161336091906142eb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036133db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d290615176565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344090615204565b60405180910390fd5b5f811161348b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348290615292565b60405180910390fd5b5f5f9050613497611eb0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561350557506134d5611eb0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613b0f5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156135a8575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6135b0575f5ffd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015613659575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156136ac575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156137a457600f548211156136f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ed906152fa565b60405180910390fd5b6010548261370385611b62565b61370d9190614cbf565b111561374e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374590615362565b60405180910390fd5b61378a606461377c600a54600e54116137695760065461376d565b6008545b8561410c90919063ffffffff16565b61418390919063ffffffff16565b9050600e5f81548092919061379e90615380565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561382c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15613a42575f613859606461384b60028661410c90919063ffffffff16565b61418390919063ffffffff16565b90506138ab8160015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546141cc90919063ffffffff16565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061393c8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461421590919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139da91906142eb565b60405180910390a36139eb81613e21565b5f4790505f811115613a0157613a008161408c565b5b613a3d6064613a2f600b54600e5411613a1c57600754613a20565b6009545b8761410c90919063ffffffff16565b61418390919063ffffffff16565b925050505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015613aca57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15613b0e57613b0b6064613afd600b54600e5411613aea57600754613aee565b6009545b8561410c90919063ffffffff16565b61418390919063ffffffff16565b90505b5b5f811115613c0e57613b678160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461421590919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c0591906142eb565b60405180910390a35b613c5e8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546141cc90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613d01613cb582846141cc90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461421590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613da484866141cc90919063ffffffff16565b604051613db191906142eb565b60405180910390a350505050565b5f838311158290613e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dfd91906145e6565b60405180910390fd5b505f8385613e149190614cf2565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115613e5857613e5761437e565b5b604051908082528060200260200182016040528015613e865781602001602082028036833780820191505090505b50905030815f81518110613e9d57613e9c614aab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f41573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f659190614dfc565b81600181518110613f7957613f78614aab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613fdf3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846131aa565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016140419594939291906153c7565b5f604051808303815f87803b158015614058575f5ffd5b505af115801561406a573d5f5f3e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156140f0573d5f5f3e3d5ffd5b5050565b5f60405180602001604052805f815250905050505050565b5f5f830361411c575f905061417d565b5f82846141299190614c7e565b90508284826141389190614e7b565b14614178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161416f9061548f565b60405180910390fd5b809150505b92915050565b5f6141c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614272565b905092915050565b5f61420d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613dbf565b905092915050565b5f5f82846142239190614cbf565b905083811015614268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161425f906154f7565b60405180910390fd5b8091505092915050565b5f5f831182906142b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142af91906145e6565b60405180910390fd5b505f83856142c69190614e7b565b9050809150509392505050565b5f819050919050565b6142e5816142d3565b82525050565b5f6020820190506142fe5f8301846142dc565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b61431e816142d3565b8114614328575f5ffd5b50565b5f8135905061433981614315565b92915050565b5f602082840312156143545761435361430d565b5b5f6143618482850161432b565b91505092915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6143b48261436e565b810181811067ffffffffffffffff821117156143d3576143d261437e565b5b80604052505050565b5f6143e5614304565b90506143f182826143ab565b919050565b5f67ffffffffffffffff8211156144105761440f61437e565b5b602082029050602081019050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61444e82614425565b9050919050565b61445e81614444565b8114614468575f5ffd5b50565b5f8135905061447981614455565b92915050565b5f61449161448c846143f6565b6143dc565b905080838252602082019050602084028301858111156144b4576144b3614421565b5b835b818110156144dd57806144c9888261446b565b8452602084019350506020810190506144b6565b5050509392505050565b5f82601f8301126144fb576144fa61436a565b5b813561450b84826020860161447f565b91505092915050565b5f602082840312156145295761452861430d565b5b5f82013567ffffffffffffffff81111561454657614545614311565b5b614552848285016144e7565b91505092915050565b5f602082840312156145705761456f61430d565b5b5f61457d8482850161446b565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6145b882614586565b6145c28185614590565b93506145d28185602086016145a0565b6145db8161436e565b840191505092915050565b5f6020820190508181035f8301526145fe81846145ae565b905092915050565b5f5f6040838503121561461c5761461b61430d565b5b5f6146298582860161446b565b925050602061463a8582860161432b565b9150509250929050565b5f8115159050919050565b61465881614644565b82525050565b5f6020820190506146715f83018461464f565b92915050565b5f5f5f6060848603121561468e5761468d61430d565b5b5f61469b8682870161446b565b93505060206146ac8682870161446b565b92505060406146bd8682870161432b565b9150509250925092565b5f60ff82169050919050565b6146dc816146c7565b82525050565b5f6020820190506146f55f8301846146d3565b92915050565b5f5f604083850312156147115761471061430d565b5b5f61471e8582860161432b565b925050602061472f8582860161432b565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61476b81614444565b82525050565b5f61477c8383614762565b60208301905092915050565b5f602082019050919050565b5f61479e82614739565b6147a88185614743565b93506147b383614753565b805f5b838110156147e35781516147ca8882614771565b97506147d583614788565b9250506001810190506147b6565b5085935050505092915050565b5f6040820190506148035f8301856142dc565b81810360208301526148158184614794565b90509392505050565b5f5f5f606084860312156148355761483461430d565b5b5f6148428682870161446b565b93505060206148538682870161432b565b92505060406148648682870161432b565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f6148b182614586565b6148bb8185614897565b93506148cb8185602086016145a0565b6148d48161436e565b840191505092915050565b5f6148ea83836148a7565b905092915050565b5f602082019050919050565b5f6149088261486e565b6149128185614878565b93508360208202850161492485614888565b805f5b8581101561495f578484038952815161494085826148df565b945061494b836148f2565b925060208a01995050600181019050614927565b50829750879550505050505092915050565b5f6040820190506149845f8301856142dc565b818103602083015261499681846148fe565b90509392505050565b6149a881614444565b82525050565b5f6020820190506149c15f83018461499f565b92915050565b5f5f604083850312156149dd576149dc61430d565b5b5f6149ea8582860161432b565b92505060206149fb8582860161446b565b9150509250929050565b5f5f60408385031215614a1b57614a1a61430d565b5b5f614a288582860161446b565b9250506020614a398582860161446b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614a77602083614590565b9150614a8282614a43565b602082019050919050565b5f6020820190508181035f830152614aa481614a6b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115614b5a57808604811115614b3657614b35614ad8565b5b6001851615614b455780820291505b8081029050614b5385614b05565b9450614b1a565b94509492505050565b5f82614b725760019050614c2d565b81614b7f575f9050614c2d565b8160018114614b955760028114614b9f57614bce565b6001915050614c2d565b60ff841115614bb157614bb0614ad8565b5b8360020a915084821115614bc857614bc7614ad8565b5b50614c2d565b5060208310610133831016604e8410600b8410161715614c035782820a905083811115614bfe57614bfd614ad8565b5b614c2d565b614c108484846001614b11565b92509050818404811115614c2757614c26614ad8565b5b81810290505b9392505050565b5f614c3e826142d3565b9150614c49836146c7565b9250614c767fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614b63565b905092915050565b5f614c88826142d3565b9150614c93836142d3565b9250828202614ca1816142d3565b91508282048414831517614cb857614cb7614ad8565b5b5092915050565b5f614cc9826142d3565b9150614cd4836142d3565b9250828201905080821115614cec57614ceb614ad8565b5b92915050565b5f614cfc826142d3565b9150614d07836142d3565b9250828203905081811115614d1f57614d1e614ad8565b5b92915050565b5f819050919050565b5f819050919050565b5f614d51614d4c614d4784614d25565b614d2e565b6142d3565b9050919050565b614d6181614d37565b82525050565b5f602082019050614d7a5f830184614d58565b92915050565b7f696e636f727265637420696e64657800000000000000000000000000000000005f82015250565b5f614db4600f83614590565b9150614dbf82614d80565b602082019050919050565b5f6020820190508181035f830152614de181614da8565b9050919050565b5f81519050614df681614455565b92915050565b5f60208284031215614e1157614e1061430d565b5b5f614e1e84828501614de8565b91505092915050565b5f604082019050614e3a5f83018561499f565b614e47602083018461499f565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614e85826142d3565b9150614e90836142d3565b925082614ea057614e9f614e4e565b5b828204905092915050565b5f60c082019050614ebe5f83018961499f565b614ecb60208301886142dc565b614ed86040830187614d58565b614ee56060830186614d58565b614ef2608083018561499f565b614eff60a08301846142dc565b979650505050505050565b5f81519050614f1881614315565b92915050565b5f5f5f60608486031215614f3557614f3461430d565b5b5f614f4286828701614f0a565b9350506020614f5386828701614f0a565b9250506040614f6486828701614f0a565b9150509250925092565b5f604082019050614f815f83018561499f565b614f8e60208301846142dc565b9392505050565b614f9e81614644565b8114614fa8575f5ffd5b50565b5f81519050614fb981614f95565b92915050565b5f60208284031215614fd457614fd361430d565b5b5f614fe184828501614fab565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f615044602483614590565b915061504f82614fea565b604082019050919050565b5f6020820190508181035f83015261507181615038565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6150d2602283614590565b91506150dd82615078565b604082019050919050565b5f6020820190508181035f8301526150ff816150c6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f615160602583614590565b915061516b82615106565b604082019050919050565b5f6020820190508181035f83015261518d81615154565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6151ee602383614590565b91506151f982615194565b604082019050919050565b5f6020820190508181035f83015261521b816151e2565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61527c602983614590565b915061528782615222565b604082019050919050565b5f6020820190508181035f8301526152a981615270565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6152e4601983614590565b91506152ef826152b0565b602082019050919050565b5f6020820190508181035f830152615311816152d8565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61534c601a83614590565b915061535782615318565b602082019050919050565b5f6020820190508181035f83015261537981615340565b9050919050565b5f61538a826142d3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036153bc576153bb614ad8565b5b600182019050919050565b5f60a0820190506153da5f8301886142dc565b6153e76020830187614d58565b81810360408301526153f98186614794565b9050615408606083018561499f565b61541560808301846142dc565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f615479602183614590565b91506154848261541f565b604082019050919050565b5f6020820190508181035f8301526154a68161546d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6154e1601b83614590565b91506154ec826154ad565b602082019050919050565b5f6020820190508181035f83015261550e816154d5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fa2cd00e2fb1a19ac99c73587b992eee65a5fd799530394fdd81cfb4f091220364736f6c634300081b0033