[ { "inputs": [ { "internalType": "string", "name": "contractUri_", "type": "string" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint256", "name": "iPrice", "type": "uint256" }, { "internalType": "string", "name": "bURI", "type": "string" }, { "internalType": "string[]", "name": "endings_", "type": "string[]" }, { "internalType": "address", "name": "oracle_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "rarityId", "type": "uint256" } ], "name": "MintedNft", "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": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "batchMint", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentDolphins", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentSharks", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentShrimps", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentWhales", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_reqId", "type": "bytes32" }, { "internalType": "uint256", "name": "oraichainRandomness", "type": "uint256" } ], "name": "fulfillRandomness", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getDolphin", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getShark", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getShrimp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getWhale", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mint", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_oraiNumber", "type": "uint256" }, { "internalType": "uint256", "name": "_weight", "type": "uint256" } ], "name": "random", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_seed", "type": "uint256" } ], "name": "randomnessRequest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newBase", "type": "string" } ], "name": "setBaseURI", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newContractURI", "type": "string" } ], "name": "setContractURI", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "royaltyReceiver", "type": "address" }, { "internalType": "uint96", "name": "royaltyRate", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMax", "type": "uint256" } ], "name": "setMax", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOracle", "type": "address" } ], "name": "setOracle", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newPrice", "type": "uint256" } ], "name": "setPrice", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeFactor", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "tokenRarity", "outputs": [ { "internalType": "uint256", "name": "Rarity", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "userToNFTs", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040526000601b553480156200001657600080fd5b50604051620067c4380380620067c483398181016040528101906200003c91906200071a565b6200005c62000050620001a060201b60201c565b620001a860201b60201c565b8560049080519060200190620000749291906200041a565b5084600590805190602001906200008d9291906200041a565b508260079080519060200190620000a69291906200041a565b508160109080519060200190620000bf929190620004ab565b5083601781905550600560168190555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200013262000124620001a060201b60201c565b60006200026c60201b60201c565b86600890805190602001906200014a9291906200041a565b5060006017541162000193576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200018a90620008dd565b60405180910390fd5b5050505050505062000c1f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200027c6200041060201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115620002dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002d490620008ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000350576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003479062000921565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000612710905090565b828054620004289062000a56565b90600052602060002090601f0160209004810192826200044c576000855562000498565b82601f106200046757805160ff191683800117855562000498565b8280016001018555821562000498579182015b82811115620004975782518255916020019190600101906200047a565b5b509050620004a7919062000512565b5090565b828054828255906000526020600020908101928215620004ff579160200282015b82811115620004fe578251829080519060200190620004ed9291906200041a565b5091602001919060010190620004cc565b5b5090506200050e919062000531565b5090565b5b808211156200052d57600081600090555060010162000513565b5090565b5b808211156200055557600081816200054b919062000559565b5060010162000532565b5090565b508054620005679062000a56565b6000825580601f106200057b57506200059c565b601f0160209004906000526020600020908101906200059b919062000512565b5b50565b6000620005b6620005b0846200096c565b62000943565b90508083825260208201905082856020860282011115620005dc57620005db62000b25565b5b60005b858110156200063157815167ffffffffffffffff81111562000606576200060562000b20565b5b808601620006158982620006d0565b85526020850194506020840193505050600181019050620005df565b5050509392505050565b6000620006526200064c846200099b565b62000943565b90508281526020810184848401111562000671576200067062000b2a565b5b6200067e84828562000a20565b509392505050565b600081519050620006978162000beb565b92915050565b600082601f830112620006b557620006b462000b20565b5b8151620006c78482602086016200059f565b91505092915050565b600082601f830112620006e857620006e762000b20565b5b8151620006fa8482602086016200063b565b91505092915050565b600081519050620007148162000c05565b92915050565b600080600080600080600060e0888a0312156200073c576200073b62000b34565b5b600088015167ffffffffffffffff8111156200075d576200075c62000b2f565b5b6200076b8a828b01620006d0565b975050602088015167ffffffffffffffff8111156200078f576200078e62000b2f565b5b6200079d8a828b01620006d0565b965050604088015167ffffffffffffffff811115620007c157620007c062000b2f565b5b620007cf8a828b01620006d0565b9550506060620007e28a828b0162000703565b945050608088015167ffffffffffffffff81111562000806576200080562000b2f565b5b620008148a828b01620006d0565b93505060a088015167ffffffffffffffff81111562000838576200083762000b2f565b5b620008468a828b016200069d565b92505060c0620008598a828b0162000686565b91505092959891949750929550565b600062000877601183620009d1565b9150620008848262000b4a565b602082019050919050565b60006200089e602a83620009d1565b9150620008ab8262000b73565b604082019050919050565b6000620008c5601983620009d1565b9150620008d28262000bc2565b602082019050919050565b60006020820190508181036000830152620008f88162000868565b9050919050565b600060208201905081810360008301526200091a816200088f565b9050919050565b600060208201905081810360008301526200093c81620008b6565b9050919050565b60006200094f62000962565b90506200095d828262000a8c565b919050565b6000604051905090565b600067ffffffffffffffff8211156200098a576200098962000af1565b5b602082029050602081019050919050565b600067ffffffffffffffff821115620009b957620009b862000af1565b5b620009c48262000b39565b9050602081019050919050565b600082825260208201905092915050565b6000620009ef82620009f6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000a4057808201518184015260208101905062000a23565b8381111562000a50576000848401525b50505050565b6000600282049050600182168062000a6f57607f821691505b6020821081141562000a865762000a8562000ac2565b5b50919050565b62000a978262000b39565b810181811067ffffffffffffffff8211171562000ab95762000ab862000af1565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f50726963652063616e6e6f742062652030000000000000000000000000000000600082015250565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b62000bf681620009e2565b811462000c0257600080fd5b50565b62000c108162000a16565b811462000c1c57600080fd5b50565b615b958062000c2f6000396000f3fe60806040526004361061027d5760003560e01c806370a082311161014f578063a69d1c2d116100c1578063e8a3d4851161007a578063e8a3d48514610a77578063e985e9c514610aa2578063ecf74e3114610adf578063f2fde38b14610b0a578063f3fef3a314610b33578063f7b8eeb714610b5c5761027d565b8063a69d1c2d14610931578063a9dd12251461096e578063afb0a369146109ab578063b88d4fde146109e8578063c87b56dd14610a11578063d8fa2f6a14610a4e5761027d565b80638da5cb5b116101135780638da5cb5b1461080d57806391b7f5ed14610838578063938e3d7b1461087557806395d89b41146108b257806398d5fdca146108dd578063a22cb465146109085761027d565b806370a0823114610721578063715018a61461075e5780637adbf973146107755780637fc2833e146107b25780638467be0d146107dd5761027d565b806323b872dd116101f357806348597429116101ac57806348597429146105d75780634f6ccce71461060257806355f804b31461063f5780635944c7531461067c57806362323a4d146106b95780636352211e146106e45761027d565b806323b872dd146104a25780632a55205a146104cb5780632f745c591461050957806332cb6b0c14610546578063385bbd701461057157806342842e0e146105ae5761027d565b8063095ea7b311610245578063095ea7b31461038d5780630d3cf8a7146103b65780631249c58b146103f357806318160ddd146104115780631f1f897f1461043c5780631fe9eabc146104655761027d565b806301ffc9a7146102825780630319a68a146102bf57806304634d8d146102fc57806306fdde0314610325578063081812fc14610350575b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a49190614311565b610b99565b6040516102b69190614b23565b60405180910390f35b3480156102cb57600080fd5b506102e660048036038101906102e19190614224565b610e0b565b6040516102f39190614ea0565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190614264565b610e3c565b005b34801561033157600080fd5b5061033a610ee3565b6040516103479190614b3e565b60405180910390f35b34801561035c57600080fd5b50610377600480360381019061037291906143b8565b610f75565b6040516103849190614a6a565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af9190614224565b610ffa565b005b3480156103c257600080fd5b506103dd60048036038101906103d891906143b8565b611112565b6040516103ea9190614ea0565b60405180910390f35b6103fb61113a565b6040516104089190614b23565b60405180910390f35b34801561041d57600080fd5b5061042661125f565b6040516104339190614ea0565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e91906142d1565b61126c565b005b34801561047157600080fd5b5061048c600480360381019061048791906143b8565b6112f7565b6040516104999190614b23565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c4919061410e565b611385565b005b3480156104d757600080fd5b506104f260048036038101906104ed9190614465565b6113e5565b604051610500929190614afa565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b9190614224565b6115d0565b60405161053d9190614ea0565b60405180910390f35b34801561055257600080fd5b5061055b611675565b6040516105689190614ea0565b60405180910390f35b34801561057d57600080fd5b50610598600480360381019061059391906143b8565b61167b565b6040516105a59190614ea0565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d0919061410e565b6116a3565b005b3480156105e357600080fd5b506105ec6116c3565b6040516105f99190614ea0565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906143b8565b6116d0565b6040516106369190614ea0565b60405180910390f35b34801561064b57600080fd5b506106666004803603810190610661919061436b565b611741565b6040516106739190614b23565b60405180910390f35b34801561068857600080fd5b506106a3600480360381019061069e9190614412565b6117db565b6040516106b09190614b23565b60405180910390f35b3480156106c557600080fd5b506106ce61186f565b6040516106db9190614ea0565b60405180910390f35b3480156106f057600080fd5b5061070b600480360381019061070691906143b8565b61187c565b6040516107189190614a6a565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190614061565b61192e565b6040516107559190614ea0565b60405180910390f35b34801561076a57600080fd5b506107736119e6565b005b34801561078157600080fd5b5061079c60048036038101906107979190614061565b611a6e565b6040516107a99190614b23565b60405180910390f35b3480156107be57600080fd5b506107c7611b36565b6040516107d49190614ea0565b60405180910390f35b6107f760048036038101906107f291906143b8565b611b43565b6040516108049190614b23565b60405180910390f35b34801561081957600080fd5b50610822611d6e565b60405161082f9190614a6a565b60405180910390f35b34801561084457600080fd5b5061085f600480360381019061085a91906143b8565b611d97565b60405161086c9190614b23565b60405180910390f35b34801561088157600080fd5b5061089c6004803603810190610897919061436b565b611e25565b6040516108a99190614b23565b60405180910390f35b3480156108be57600080fd5b506108c7611ebf565b6040516108d49190614b3e565b60405180910390f35b3480156108e957600080fd5b506108f2611f51565b6040516108ff9190614ea0565b60405180910390f35b34801561091457600080fd5b5061092f600480360381019061092a91906141e4565b611f5b565b005b34801561093d57600080fd5b50610958600480360381019061095391906143b8565b611f71565b6040516109659190614ea0565b60405180910390f35b34801561097a57600080fd5b5061099560048036038101906109909190614465565b611f99565b6040516109a29190614ea0565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd91906143b8565b611fe2565b6040516109df9190614ea0565b60405180910390f35b3480156109f457600080fd5b50610a0f6004803603810190610a0a9190614161565b612047565b005b348015610a1d57600080fd5b50610a386004803603810190610a3391906143b8565b6120a9565b604051610a459190614b3e565b60405180910390f35b348015610a5a57600080fd5b50610a756004803603810190610a7091906143b8565b61215a565b005b348015610a8357600080fd5b50610a8c6122e8565b604051610a999190614b3e565b60405180910390f35b348015610aae57600080fd5b50610ac96004803603810190610ac491906140ce565b612376565b604051610ad69190614b23565b60405180910390f35b348015610aeb57600080fd5b50610af461240a565b604051610b019190614ea0565b60405180910390f35b348015610b1657600080fd5b50610b316004803603810190610b2c9190614061565b612417565b005b348015610b3f57600080fd5b50610b5a6004803603810190610b55919061408e565b61250f565b005b348015610b6857600080fd5b50610b836004803603810190610b7e91906143b8565b6125d6565b604051610b909190614ea0565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610c6457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ccc57507f150b7a02000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610d3457507f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610d9c57507f7288eab5000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610e0457507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b601c6020528160005260406000208181548110610e2757600080fd5b90600052602060002001600091509150505481565b610e446125fe565b73ffffffffffffffffffffffffffffffffffffffff16610e62611d6e565b73ffffffffffffffffffffffffffffffffffffffff1614610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf90614d80565b60405180910390fd5b6000816bffffffffffffffffffffffff161415610ed5576101f490505b610edf8282612606565b5050565b606060048054610ef2906151c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1e906151c1565b8015610f6b5780601f10610f4057610100808354040283529160200191610f6b565b820191906000526020600020905b815481529060010190602001808311610f4e57829003601f168201915b5050505050905090565b6000610f808261279c565b610fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb690614d60565b60405180910390fd5b600b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006110058261187c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d90614de0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166110956125fe565b73ffffffffffffffffffffffffffffffffffffffff1614806110c457506110c3816110be6125fe565b612376565b5b611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90614ce0565b60405180910390fd5b61110d8383612808565b505050565b6000601282815481106111285761112761539a565b5b90600052602060002001549050919050565b60006016546020600061114b6125fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90614d20565b60405180910390fd5b601754341461120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190614ba0565b60405180910390fd5b6107d060155410611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790614dc0565b60405180910390fd5b6112586128c1565b6001905090565b6000600680549050905090565b611278816107d0611f99565b60198190555060005b60008114801561129457506107d0601554105b156112f257601f6000601954815260200190815260200160002060009054906101000a900460ff16156112e8576107d060016019546112d39190614fc2565b6112dd91906152ad565b6019819055506112ed565b600190505b611281565b505050565b60006113016125fe565b73ffffffffffffffffffffffffffffffffffffffff1661131f611d6e565b73ffffffffffffffffffffffffffffffffffffffff1614611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136c90614d80565b60405180910390fd5b8160168190555060019050919050565b6113966113906125fe565b82612d2e565b6113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc90614e00565b60405180910390fd5b6113e0838383612e0c565b505050565b6000806000600260008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16141561157b5760016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000611585613073565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff16866115b19190615049565b6115bb9190615018565b90508160000151819350935050509250929050565b60006115db8361192e565b821061161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161390614bc0565b60405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6107d081565b6000601482815481106116915761169061539a565b5b90600052602060002001549050919050565b6116be83838360405180602001604052806000815250612047565b505050565b6000601380549050905090565b60006116da61125f565b821061171b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171290614e40565b60405180910390fd5b6006828154811061172f5761172e61539a565b5b90600052602060002001549050919050565b600061174b6125fe565b73ffffffffffffffffffffffffffffffffffffffff16611769611d6e565b73ffffffffffffffffffffffffffffffffffffffff16146117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b690614d80565b60405180910390fd5b8282600791906117d0929190613d99565b506001905092915050565b60006117e56125fe565b73ffffffffffffffffffffffffffffffffffffffff16611803611d6e565b73ffffffffffffffffffffffffffffffffffffffff1614611859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185090614d80565b60405180910390fd5b61186484848461307d565b600190509392505050565b6000601180549050905090565b6000806009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191c90614d00565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199690614cc0565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119ee6125fe565b73ffffffffffffffffffffffffffffffffffffffff16611a0c611d6e565b73ffffffffffffffffffffffffffffffffffffffff1614611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5990614d80565b60405180910390fd5b611a6c6000613225565b565b6000611a786125fe565b73ffffffffffffffffffffffffffffffffffffffff16611a96611d6e565b73ffffffffffffffffffffffffffffffffffffffff1614611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae390614d80565b60405180910390fd5b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000601480549050905090565b60006005821115611b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8090614b60565b60405180910390fd5b60165460206000611b986125fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0a90614d20565b60405180910390fd5b60165460206000611c226125fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611c689190614fc2565b1115611ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca090614d20565b60405180910390fd5b60175482611cb79190615049565b3414611cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cef90614ba0565b60405180910390fd5b6107d060155410611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3590614dc0565b60405180910390fd5b60005b82811015611d6457611d516128c1565b8080611d5c90615224565b915050611d41565b5060019050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000611da16125fe565b73ffffffffffffffffffffffffffffffffffffffff16611dbf611d6e565b73ffffffffffffffffffffffffffffffffffffffff1614611e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0c90614d80565b60405180910390fd5b8160178190555060019050919050565b6000611e2f6125fe565b73ffffffffffffffffffffffffffffffffffffffff16611e4d611d6e565b73ffffffffffffffffffffffffffffffffffffffff1614611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90614d80565b60405180910390fd5b828260089190611eb4929190613d99565b506001905092915050565b606060058054611ece906151c1565b80601f0160208091040260200160405190810160405280929190818152602001828054611efa906151c1565b8015611f475780601f10611f1c57610100808354040283529160200191611f47565b820191906000526020600020905b815481529060010190602001808311611f2a57829003601f168201915b5050505050905090565b6000601754905090565b611f6d611f666125fe565b83836132e9565b5050565b600060138281548110611f8757611f8661539a565b5b90600052602060002001549050919050565b600081834442414333604051602001611fb7969594939291906149fa565b6040516020818303038152906040528051906020012060001c611fda91906152ad565b905092915050565b6000611fed8261279c565b61202c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202390614b80565b60405180910390fd5b601e6000838152602001908152602001600020549050919050565b6120586120526125fe565b83612d2e565b612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208e90614e00565b60405180910390fd5b6120a384848484613456565b50505050565b60606120b48261279c565b6120f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ea90614da0565b60405180910390fd5b60006120fd6134b2565b9050600081511161211d5760405180602001604052806000815250612152565b80601d60008581526020019081526020016000206040516020016121429291906149d6565b6040516020818303038152906040525b915050919050565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ced72f876040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fe91906143e5565b9050600030631f1f897f60e01b60405160200161221c929190614ad1565b6040516020818303038152906040529050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bc5fc5328385846040518463ffffffff1660e01b815260040161228b929190614ebb565b6020604051808303818588803b1580156122a457600080fd5b505af11580156122b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122dd91906142a4565b601a81905550505050565b600880546122f5906151c1565b80601f0160208091040260200160405190810160405280929190818152602001828054612321906151c1565b801561236e5780601f106123435761010080835404028352916020019161236e565b820191906000526020600020905b81548152906001019060200180831161235157829003601f168201915b505050505081565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000601280549050905090565b61241f6125fe565b73ffffffffffffffffffffffffffffffffffffffff1661243d611d6e565b73ffffffffffffffffffffffffffffffffffffffff1614612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a90614d80565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fa90614c00565b60405180910390fd5b61250c81613225565b50565b6125176125fe565b73ffffffffffffffffffffffffffffffffffffffff16612535611d6e565b73ffffffffffffffffffffffffffffffffffffffff161461258b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258290614d80565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125d1573d6000803e3d6000fd5b505050565b6000601182815481106125ec576125eb61539a565b5b90600052602060002001549050919050565b600033905090565b61260e613073565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111561266c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266390614e60565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d390614e80565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b60008073ffffffffffffffffffffffffffffffffffffffff166009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b81600b600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661287b8361187c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b601b60008154809291906128d490615224565b91905055506000601b54426040516020016128f0929190614eeb565b6040516020818303038152906040528051906020012060001c90506129148161215a565b612920601a548261126c565b61292a6003613544565b6000612936600361355a565b9050601460195410156129d45760106000815481106129585761295761539a565b5b90600052602060002001601d6000838152602001908152602001600020908054612981906151c1565b61298c929190613e1f565b506001601e6000838152602001908152602001600020819055506011819080600181540180825580915050600190039060005260206000200160009091909190915055612bba565b6014601954101580156129e9575060c8601954105b15612a7f576010600181548110612a0357612a0261539a565b5b90600052602060002001601d6000838152602001908152602001600020908054612a2c906151c1565b612a37929190613e1f565b506002601e6000838152602001908152602001600020819055506012819080600181540180825580915050600190039060005260206000200160009091909190915055612bb9565b60c860195410158015612a955750610320601954105b15612b2b576010600281548110612aaf57612aae61539a565b5b90600052602060002001601d6000838152602001908152602001600020908054612ad8906151c1565b612ae3929190613e1f565b506003601e6000838152602001908152602001600020819055506013819080600181540180825580915050600190039060005260206000200160009091909190915055612bb8565b6010600381548110612b4057612b3f61539a565b5b90600052602060002001601d6000838152602001908152602001600020908054612b69906151c1565b612b74929190613e1f565b506004601e60008381526020019081526020016000208190555060148190806001815401808255809150506001900390600052602060002001600090919091909150555b5b5b612bcb612bc56125fe565b82613568565b6001601f6000601954815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000828254612c0c9190614fc2565b92505081905550600160206000612c216125fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c6a9190614fc2565b92505081905550601c6000612c7d6125fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002001600090919091909150557feb3db5cfacfb1d9a412c3d6b9bd784fda8be2991254044dcf29a4f38952b4d2c81601e600084815260200190815260200160002054604051612d22929190614eeb565b60405180910390a15050565b6000612d398261279c565b612d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6f90614ca0565b60405180910390fd5b6000612d838361187c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612dc55750612dc48185612376565b5b80612e0357508373ffffffffffffffffffffffffffffffffffffffff16612deb84610f75565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612e2c8261187c565b73ffffffffffffffffffffffffffffffffffffffff1614612e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7990614c20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee990614c60565b60405180910390fd5b612efd838383613586565b612f08600082612808565b6001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f5891906150a3565b925050819055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612faf9190614fc2565b92505081905550816009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461306e83838361369a565b505050565b6000612710905090565b613085613073565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff1611156130e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130da90614e60565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314a90614e20565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff168152506002600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334f90614c80565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516134499190614b23565b60405180910390a3505050565b613461848484612e0c565b61346d8484848461369f565b6134ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a390614be0565b60405180910390fd5b50505050565b6060600780546134c1906151c1565b80601f01602080910402602001604051908101604052809291908181526020018280546134ed906151c1565b801561353a5780601f1061350f5761010080835404028352916020019161353a565b820191906000526020600020905b81548152906001019060200180831161351d57829003601f168201915b5050505050905090565b6001816000016000828254019250508190555050565b600081600001549050919050565b613582828260405180602001604052806000815250613836565b5050565b613591838383613891565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135d4576135cf81613896565b613613565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146136125761361183826138df565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136565761365181613a4c565b613695565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613694576136938282613b1d565b5b5b505050565b505050565b60006136c08473ffffffffffffffffffffffffffffffffffffffff16613b9c565b15613829578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026136e96125fe565b8786866040518563ffffffff1660e01b815260040161370b9493929190614a85565b602060405180830381600087803b15801561372557600080fd5b505af192505050801561375657506040513d601f19601f82011682018060405250810190613753919061433e565b60015b6137d9573d8060008114613786576040519150601f19603f3d011682016040523d82523d6000602084013e61378b565b606091505b506000815114156137d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137c890614be0565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061382e565b600190505b949350505050565b6138408383613bbf565b61384d600084848461369f565b61388c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161388390614be0565b60405180910390fd5b505050565b505050565b600680549050600f600083815260200190815260200160002081905550600681908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016138ec8461192e565b6138f691906150a3565b90506000600e60008481526020019081526020016000205490508181146139db576000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000208190555081600e600083815260200190815260200160002081905550505b600e600084815260200190815260200160002060009055600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600680549050613a6091906150a3565b90506000600f6000848152602001908152602001600020549050600060068381548110613a9057613a8f61539a565b5b906000526020600020015490508060068381548110613ab257613ab161539a565b5b906000526020600020018190555081600f600083815260200190815260200160002081905550600f6000858152602001908152602001600020600090556006805480613b0157613b0061536b565b5b6001900381819060005260206000200160009055905550505050565b6000613b288361192e565b905081600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555080600e600084815260200190815260200160002081905550505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c2690614d40565b60405180910390fd5b613c388161279c565b15613c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c6f90614c40565b60405180910390fd5b613c8460008383613586565b6001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613cd49190614fc2565b92505081905550816009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613d956000838361369a565b5050565b828054613da5906151c1565b90600052602060002090601f016020900481019282613dc75760008555613e0e565b82601f10613de057803560ff1916838001178555613e0e565b82800160010185558215613e0e579182015b82811115613e0d578235825591602001919060010190613df2565b5b509050613e1b9190613eac565b5090565b828054613e2b906151c1565b90600052602060002090601f016020900481019282613e4d5760008555613e9b565b82601f10613e5e5780548555613e9b565b82800160010185558215613e9b57600052602060002091601f016020900482015b82811115613e9a578254825591600101919060010190613e7f565b5b509050613ea89190613eac565b5090565b5b80821115613ec5576000816000905550600101613ead565b5090565b6000613edc613ed784614f39565b614f14565b905082815260208101848484011115613ef857613ef7615407565b5b613f0384828561517f565b509392505050565b600081359050613f1a81615abe565b92915050565b600081359050613f2f81615ad5565b92915050565b600081359050613f4481615aec565b92915050565b600081359050613f5981615b03565b92915050565b600081519050613f6e81615b03565b92915050565b600081359050613f8381615b1a565b92915050565b600081519050613f9881615b1a565b92915050565b600082601f830112613fb357613fb26153fd565b5b8135613fc3848260208601613ec9565b91505092915050565b60008083601f840112613fe257613fe16153fd565b5b8235905067ffffffffffffffff811115613fff57613ffe6153f8565b5b60208301915083600182028301111561401b5761401a615402565b5b9250929050565b60008135905061403181615b31565b92915050565b60008151905061404681615b31565b92915050565b60008135905061405b81615b48565b92915050565b60006020828403121561407757614076615411565b5b600061408584828501613f0b565b91505092915050565b600080604083850312156140a5576140a4615411565b5b60006140b385828601613f20565b92505060206140c485828601614022565b9150509250929050565b600080604083850312156140e5576140e4615411565b5b60006140f385828601613f0b565b925050602061410485828601613f0b565b9150509250929050565b60008060006060848603121561412757614126615411565b5b600061413586828701613f0b565b935050602061414686828701613f0b565b925050604061415786828701614022565b9150509250925092565b6000806000806080858703121561417b5761417a615411565b5b600061418987828801613f0b565b945050602061419a87828801613f0b565b93505060406141ab87828801614022565b925050606085013567ffffffffffffffff8111156141cc576141cb61540c565b5b6141d887828801613f9e565b91505092959194509250565b600080604083850312156141fb576141fa615411565b5b600061420985828601613f0b565b925050602061421a85828601613f35565b9150509250929050565b6000806040838503121561423b5761423a615411565b5b600061424985828601613f0b565b925050602061425a85828601614022565b9150509250929050565b6000806040838503121561427b5761427a615411565b5b600061428985828601613f0b565b925050602061429a8582860161404c565b9150509250929050565b6000602082840312156142ba576142b9615411565b5b60006142c884828501613f5f565b91505092915050565b600080604083850312156142e8576142e7615411565b5b60006142f685828601613f4a565b925050602061430785828601614022565b9150509250929050565b60006020828403121561432757614326615411565b5b600061433584828501613f74565b91505092915050565b60006020828403121561435457614353615411565b5b600061436284828501613f89565b91505092915050565b6000806020838503121561438257614381615411565b5b600083013567ffffffffffffffff8111156143a05761439f61540c565b5b6143ac85828601613fcc565b92509250509250929050565b6000602082840312156143ce576143cd615411565b5b60006143dc84828501614022565b91505092915050565b6000602082840312156143fb576143fa615411565b5b600061440984828501614037565b91505092915050565b60008060006060848603121561442b5761442a615411565b5b600061443986828701614022565b935050602061444a86828701613f0b565b925050604061445b8682870161404c565b9150509250925092565b6000806040838503121561447c5761447b615411565b5b600061448a85828601614022565b925050602061449b85828601614022565b9150509250929050565b6144b66144b1826150e9565b61527f565b82525050565b6144c5816150d7565b82525050565b6144dc6144d7826150d7565b61526d565b82525050565b6144eb816150fb565b82525050565b6144fa81615111565b82525050565b600061450b82614f7f565b6145158185614f95565b935061452581856020860161518e565b61452e81615416565b840191505092915050565b600061454482614f8a565b61454e8185614fa6565b935061455e81856020860161518e565b61456781615416565b840191505092915050565b600061457d82614f8a565b6145878185614fb7565b935061459781856020860161518e565b80840191505092915050565b600081546145b0816151c1565b6145ba8186614fb7565b945060018216600081146145d557600181146145e657614619565b60ff19831686528186019350614619565b6145ef85614f6a565b60005b83811015614611578154818901526001820191506020810190506145f2565b838801955050505b50505092915050565b600061462f602883614fa6565b915061463a82615434565b604082019050919050565b6000614652601b83614fa6565b915061465d82615483565b602082019050919050565b6000614675600a83614fa6565b9150614680826154ac565b602082019050919050565b6000614698602b83614fa6565b91506146a3826154d5565b604082019050919050565b60006146bb603283614fa6565b91506146c682615524565b604082019050919050565b60006146de602683614fa6565b91506146e982615573565b604082019050919050565b6000614701602583614fa6565b915061470c826155c2565b604082019050919050565b6000614724601c83614fa6565b915061472f82615611565b602082019050919050565b6000614747602483614fa6565b91506147528261563a565b604082019050919050565b600061476a601983614fa6565b915061477582615689565b602082019050919050565b600061478d602c83614fa6565b9150614798826156b2565b604082019050919050565b60006147b0602983614fa6565b91506147bb82615701565b604082019050919050565b60006147d3603883614fa6565b91506147de82615750565b604082019050919050565b60006147f6602983614fa6565b91506148018261579f565b604082019050919050565b6000614819601a83614fa6565b9150614824826157ee565b602082019050919050565b600061483c602083614fa6565b915061484782615817565b602082019050919050565b600061485f602c83614fa6565b915061486a82615840565b604082019050919050565b6000614882602083614fa6565b915061488d8261588f565b602082019050919050565b60006148a5602f83614fa6565b91506148b0826158b8565b604082019050919050565b60006148c8600e83614fa6565b91506148d382615907565b602082019050919050565b60006148eb602183614fa6565b91506148f682615930565b604082019050919050565b600061490e603183614fa6565b91506149198261597f565b604082019050919050565b6000614931601b83614fa6565b915061493c826159ce565b602082019050919050565b6000614954602c83614fa6565b915061495f826159f7565b604082019050919050565b6000614977602a83614fa6565b915061498282615a46565b604082019050919050565b600061499a601983614fa6565b91506149a582615a95565b602082019050919050565b6149b98161515d565b82525050565b6149d06149cb8261515d565b6152a3565b82525050565b60006149e28285614572565b91506149ee82846145a3565b91508190509392505050565b6000614a0682896149bf565b602082019150614a1682886149bf565b602082019150614a2682876149bf565b602082019150614a3682866144a5565b601482019150614a4682856149bf565b602082019150614a5682846144cb565b601482019150819050979650505050505050565b6000602082019050614a7f60008301846144bc565b92915050565b6000608082019050614a9a60008301876144bc565b614aa760208301866144bc565b614ab460408301856149b0565b8181036060830152614ac68184614500565b905095945050505050565b6000604082019050614ae660008301856144bc565b614af360208301846144f1565b9392505050565b6000604082019050614b0f60008301856144bc565b614b1c60208301846149b0565b9392505050565b6000602082019050614b3860008301846144e2565b92915050565b60006020820190508181036000830152614b588184614539565b905092915050565b60006020820190508181036000830152614b7981614622565b9050919050565b60006020820190508181036000830152614b9981614645565b9050919050565b60006020820190508181036000830152614bb981614668565b9050919050565b60006020820190508181036000830152614bd98161468b565b9050919050565b60006020820190508181036000830152614bf9816146ae565b9050919050565b60006020820190508181036000830152614c19816146d1565b9050919050565b60006020820190508181036000830152614c39816146f4565b9050919050565b60006020820190508181036000830152614c5981614717565b9050919050565b60006020820190508181036000830152614c798161473a565b9050919050565b60006020820190508181036000830152614c998161475d565b9050919050565b60006020820190508181036000830152614cb981614780565b9050919050565b60006020820190508181036000830152614cd9816147a3565b9050919050565b60006020820190508181036000830152614cf9816147c6565b9050919050565b60006020820190508181036000830152614d19816147e9565b9050919050565b60006020820190508181036000830152614d398161480c565b9050919050565b60006020820190508181036000830152614d598161482f565b9050919050565b60006020820190508181036000830152614d7981614852565b9050919050565b60006020820190508181036000830152614d9981614875565b9050919050565b60006020820190508181036000830152614db981614898565b9050919050565b60006020820190508181036000830152614dd9816148bb565b9050919050565b60006020820190508181036000830152614df9816148de565b9050919050565b60006020820190508181036000830152614e1981614901565b9050919050565b60006020820190508181036000830152614e3981614924565b9050919050565b60006020820190508181036000830152614e5981614947565b9050919050565b60006020820190508181036000830152614e798161496a565b9050919050565b60006020820190508181036000830152614e998161498d565b9050919050565b6000602082019050614eb560008301846149b0565b92915050565b6000604082019050614ed060008301856149b0565b8181036020830152614ee28184614500565b90509392505050565b6000604082019050614f0060008301856149b0565b614f0d60208301846149b0565b9392505050565b6000614f1e614f2f565b9050614f2a82826151f3565b919050565b6000604051905090565b600067ffffffffffffffff821115614f5457614f536153c9565b5b614f5d82615416565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614fcd8261515d565b9150614fd88361515d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561500d5761500c6152de565b5b828201905092915050565b60006150238261515d565b915061502e8361515d565b92508261503e5761503d61530d565b5b828204905092915050565b60006150548261515d565b915061505f8361515d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615098576150976152de565b5b828202905092915050565b60006150ae8261515d565b91506150b98361515d565b9250828210156150cc576150cb6152de565b5b828203905092915050565b60006150e28261513d565b9050919050565b60006150f48261513d565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006bffffffffffffffffffffffff82169050919050565b82818337600083830152505050565b60005b838110156151ac578082015181840152602081019050615191565b838111156151bb576000848401525b50505050565b600060028204905060018216806151d957607f821691505b602082108114156151ed576151ec61533c565b5b50919050565b6151fc82615416565b810181811067ffffffffffffffff8211171561521b5761521a6153c9565b5b80604052505050565b600061522f8261515d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615262576152616152de565b5b600182019050919050565b600061527882615291565b9050919050565b600061528a82615291565b9050919050565b600061529c82615427565b9050919050565b6000819050919050565b60006152b88261515d565b91506152c38361515d565b9250826152d3576152d261530d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f43616e6e6f74206d696e74206d6f7265207468616e203520746f6b656e73206160008201527f7420612074696d65000000000000000000000000000000000000000000000000602082015250565b7f517565727920666f72206e6f6e6578697374656e7420746f6b656e0000000000600082015250565b7f57726f6e6720636f737400000000000000000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4d6178204e4654207065722077616c6c65742072656163686564000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4d6178204e4654206d696e746564000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243323938313a20496e76616c696420706172616d65746572730000000000600082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b615ac7816150d7565b8114615ad257600080fd5b50565b615ade816150e9565b8114615ae957600080fd5b50565b615af5816150fb565b8114615b0057600080fd5b50565b615b0c81615107565b8114615b1757600080fd5b50565b615b2381615111565b8114615b2e57600080fd5b50565b615b3a8161515d565b8114615b4557600080fd5b50565b615b5181615167565b8114615b5c57600080fd5b5056fea2646970667358221220464cf32f73ea358c83bac72fee89711975dd59b2d80c20f95a9c9570452becd464736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000022b1c8c1227a000000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000002600000000000000000000000006b5866f4b9832bff3d8ad81b1151a37393f6b7d50000000000000000000000000000000000000000000000000000000000000042697066733a2f2f6261666b726569677970326b6d687a6a756868327033676364776c333335687a667972796c7662787335686d757832746866333233727677346771000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c426c6f636b7061794e6674730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c426c6f636b7061794e66747300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043697066733a2f2f62616679626569667a6868797179357274703469656f763767366c3665657561336774647961376d766f70616733746b7933746b6b6e35736e676d2f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000055768616c650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005536861726b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007446f6c7068696e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006536872696d700000000000000000000000000000000000000000000000000000