[ { "inputs": [], "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": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [], "name": "Reveal", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "fee", "type": "uint256" } ], "name": "RoyaltyReceiver", "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "treasury", "type": "address" } ], "name": "TreasuryChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TreasuryWithdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "proxy", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "state", "type": "bool" } ], "name": "Whitelist", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "AIRDROP_AMOUNT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_MINT_AMOUNT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINT_START", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PAUSER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PRICE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "REVEALER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ROYALTIES_FEE", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TREASURY_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UNREVEALED_URI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "URI_EXTENSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WHITELIST_MINT_DURATION", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "airdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "airdropped", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "allOwners", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "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": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "publicMintStart", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newBaseURI", "type": "string" } ], "name": "reveal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "revealed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "royaltiesReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": "address", "name": "_newReceiver", "type": "address" } ], "name": "setRoyaltyReceiver", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newTreasury", "type": "address" } ], "name": "setTreasury", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "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": "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": [], "name": "treasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_investor", "type": "address" }, { "internalType": "bool", "name": "_newState", "type": "bool" } ], "name": "whitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040526201fa406363d9ab8062000019919062000629565b601155600060125573a9849ec5db1dd4cd5eb25d2180a64f21a45e7bd8601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a9849ec5db1dd4cd5eb25d2180a64f21a45e7bd8601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000d857600080fd5b506040518060400160405280601181526020017f43455255532047454e45534953204e46540000000000000000000000000000008152506040518060400160405280600481526020017f43525347000000000000000000000000000000000000000000000000000000008152508160009081620001569190620008d4565b508060019081620001689190620008d4565b5050506000600c60006101000a81548160ff0219169083151502179055506200019b6000801b33620002c860201b60201c565b620001cd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620002c860201b60201c565b620002217f7eedb2e31886aee6b48ad5b19b07b41f829d56c86a5c8a5cc10a185aeed92904601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620002c860201b60201c565b620002757fe1dcbdb91df27212a29bc27177c840cf2f819ecf2187432e1fac86c2dd5dfca9601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620002c860201b60201c565b620002ab601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166101f4620003ba60201b60201c565b620002c2600e6200055d60201b620021b61760201c565b62000ad6565b620002da82826200057360201b60201c565b620003b6576001600d600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200035b620005de60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b620003ca620005e660201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff1611156200042b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004229062000a42565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200049d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004949062000ab4565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600a60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6001816000016000828254019250508190555050565b6000600d600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b6000612710905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200063682620005f0565b91506200064383620005f0565b92508282019050808211156200065e576200065d620005fa565b5b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006e657607f821691505b602082108103620006fc57620006fb6200069e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007667fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000727565b62000772868362000727565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620007b5620007af620007a984620005f0565b6200078a565b620005f0565b9050919050565b6000819050919050565b620007d18362000794565b620007e9620007e082620007bc565b84845462000734565b825550505050565b600090565b62000800620007f1565b6200080d818484620007c6565b505050565b5b81811015620008355762000829600082620007f6565b60018101905062000813565b5050565b601f82111562000884576200084e8162000702565b620008598462000717565b8101602085101562000869578190505b62000881620008788562000717565b83018262000812565b50505b505050565b600082821c905092915050565b6000620008a96000198460080262000889565b1980831691505092915050565b6000620008c4838362000896565b9150826002028217905092915050565b620008df8262000664565b67ffffffffffffffff811115620008fb57620008fa6200066f565b5b620009078254620006cd565b6200091482828562000839565b600060209050601f8311600181146200094c576000841562000937578287015190505b620009438582620008b6565b865550620009b3565b601f1984166200095c8662000702565b60005b8281101562000986578489015182556001820191506020850194506020810190506200095f565b86831015620009a65784890151620009a2601f89168262000896565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b600062000a2a602a83620009bb565b915062000a3782620009cc565b604082019050919050565b6000602082019050818103600083015262000a5d8162000a1b565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b600062000a9c601983620009bb565b915062000aa98262000a64565b602082019050919050565b6000602082019050818103600083015262000acf8162000a8d565b9050919050565b615e7e8062000ae66000396000f3fe60806040526004361061031e5760003560e01c806370a08231116101ab578063a3a51bd5116100f7578063d547741f11610095578063e985e9c51161006f578063e985e9c514610bc8578063f0f4426014610c05578063f59c370814610c2e578063fa9b701814610c5757610325565b8063d547741f14610b37578063d936547e14610b60578063e63ab1e914610b9d57610325565b8063b88d4fde116100d1578063b88d4fde14610a7b578063c6374d0c14610aa4578063c87b56dd14610acf578063d11a57ec14610b0c57610325565b8063a3a51bd5146109fa578063ab9ea1f814610a25578063b1901a2414610a5057610325565b80638dc251e311610164578063a0712d681161013e578063a0712d681461095f578063a12a52dc1461097b578063a217fddf146109a6578063a22cb465146109d157610325565b80638dc251e3146108ce57806391d14854146108f757806395d89b411461093457610325565b806370a08231146107d057806377a605d91461080d5780638456cb59146108385780638ba4cc3c1461084f5780638cfec4c0146108785780638d859f3e146108a357610325565b806332cb6b0c1161026a5780634f6ccce7116102235780635c975abb116101fd5780635c975abb1461071257806361d027b31461073d5780636352211e146107685780636c0360eb146107a557610325565b80634f6ccce71461067f578063507862d1146106bc57806351830227146106e757610325565b806332cb6b0c146105ab57806336568abe146105d65780633ccfd60b146105ff5780633f4ba83a1461061657806342842e0e1461062d5780634c2612471461065657610325565b806323b872dd116102d75780632b5b6872116102b15780632b5b6872146104ef5780632f2ff15d1461051a5780632f745c591461054357806331a7608e1461058057610325565b806323b872dd1461044b578063248a9ca3146104745780632a55205a146104b157610325565b806301ffc9a71461032757806306fdde0314610364578063081812fc1461038f578063095ea7b3146103cc57806318160ddd146103f557806319cc02aa1461042057610325565b3661032557005b005b34801561033357600080fd5b5061034e60048036038101906103499190613fbb565b610c82565b60405161035b9190614003565b60405180910390f35b34801561037057600080fd5b50610379610c94565b60405161038691906140ae565b60405180910390f35b34801561039b57600080fd5b506103b660048036038101906103b19190614106565b610d26565b6040516103c39190614174565b60405180910390f35b3480156103d857600080fd5b506103f360048036038101906103ee91906141bb565b610d6c565b005b34801561040157600080fd5b5061040a610e83565b604051610417919061420a565b60405180910390f35b34801561042c57600080fd5b50610435610e90565b604051610442919061420a565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d9190614225565b610e96565b005b34801561048057600080fd5b5061049b600480360381019061049691906142ae565b610ef6565b6040516104a891906142ea565b60405180910390f35b3480156104bd57600080fd5b506104d860048036038101906104d39190614305565b610f16565b6040516104e6929190614345565b60405180910390f35b3480156104fb57600080fd5b50610504611100565b604051610511919061420a565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c919061436e565b611106565b005b34801561054f57600080fd5b5061056a600480360381019061056591906141bb565b611127565b604051610577919061420a565b60405180910390f35b34801561058c57600080fd5b506105956111cc565b6040516105a291906143d5565b60405180910390f35b3480156105b757600080fd5b506105c06111d2565b6040516105cd919061420a565b60405180910390f35b3480156105e257600080fd5b506105fd60048036038101906105f8919061436e565b6111d8565b005b34801561060b57600080fd5b5061061461125b565b005b34801561062257600080fd5b5061062b6112f9565b005b34801561063957600080fd5b50610654600480360381019061064f9190614225565b61132e565b005b34801561066257600080fd5b5061067d60048036038101906106789190614525565b61134e565b005b34801561068b57600080fd5b506106a660048036038101906106a19190614106565b61141c565b6040516106b3919061420a565b60405180910390f35b3480156106c857600080fd5b506106d161148d565b6040516106de91906140ae565b60405180910390f35b3480156106f357600080fd5b506106fc6114a9565b6040516107099190614003565b60405180910390f35b34801561071e57600080fd5b506107276114bc565b6040516107349190614003565b60405180910390f35b34801561074957600080fd5b506107526114d3565b60405161075f9190614174565b60405180910390f35b34801561077457600080fd5b5061078f600480360381019061078a9190614106565b6114f9565b60405161079c9190614174565b60405180910390f35b3480156107b157600080fd5b506107ba61157f565b6040516107c791906140ae565b60405180910390f35b3480156107dc57600080fd5b506107f760048036038101906107f2919061456e565b61160d565b604051610804919061420a565b60405180910390f35b34801561081957600080fd5b506108226116c4565b60405161082f919061420a565b60405180910390f35b34801561084457600080fd5b5061084d6116cb565b005b34801561085b57600080fd5b50610876600480360381019061087191906141bb565b611700565b005b34801561088457600080fd5b5061088d6117bf565b60405161089a919061420a565b60405180910390f35b3480156108af57600080fd5b506108b86117c5565b6040516108c5919061420a565b60405180910390f35b3480156108da57600080fd5b506108f560048036038101906108f0919061456e565b6117d1565b005b34801561090357600080fd5b5061091e6004803603810190610919919061436e565b611887565b60405161092b9190614003565b60405180910390f35b34801561094057600080fd5b506109496118f2565b60405161095691906140ae565b60405180910390f35b61097960048036038101906109749190614106565b611984565b005b34801561098757600080fd5b50610990611c0b565b60405161099d9190614659565b60405180910390f35b3480156109b257600080fd5b506109bb611cda565b6040516109c891906142ea565b60405180910390f35b3480156109dd57600080fd5b506109f860048036038101906109f391906146a7565b611ce1565b005b348015610a0657600080fd5b50610a0f611cf7565b604051610a1c9190614174565b60405180910390f35b348015610a3157600080fd5b50610a3a611d1d565b604051610a4791906142ea565b60405180910390f35b348015610a5c57600080fd5b50610a65611d41565b604051610a7291906140ae565b60405180910390f35b348015610a8757600080fd5b50610aa26004803603810190610a9d9190614788565b611d7a565b005b348015610ab057600080fd5b50610ab9611ddc565b604051610ac6919061420a565b60405180910390f35b348015610adb57600080fd5b50610af66004803603810190610af19190614106565b611de4565b604051610b0391906140ae565b60405180910390f35b348015610b1857600080fd5b50610b21611eca565b604051610b2e91906142ea565b60405180910390f35b348015610b4357600080fd5b50610b5e6004803603810190610b59919061436e565b611eee565b005b348015610b6c57600080fd5b50610b876004803603810190610b82919061456e565b611f0f565b604051610b949190614003565b60405180910390f35b348015610ba957600080fd5b50610bb2611f2f565b604051610bbf91906142ea565b60405180910390f35b348015610bd457600080fd5b50610bef6004803603810190610bea919061480b565b611f53565b604051610bfc9190614003565b60405180910390f35b348015610c1157600080fd5b50610c2c6004803603810190610c27919061456e565b611fe7565b005b348015610c3a57600080fd5b50610c556004803603810190610c5091906146a7565b61210f565b005b348015610c6357600080fd5b50610c6c6121b1565b604051610c79919061420a565b60405180910390f35b6000610c8d826121cc565b9050919050565b606060008054610ca39061487a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ccf9061487a565b8015610d1c5780601f10610cf157610100808354040283529160200191610d1c565b820191906000526020600020905b815481529060010190602001808311610cff57829003601f168201915b5050505050905090565b6000610d3182612246565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d77826114f9565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde9061491d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e06612291565b73ffffffffffffffffffffffffffffffffffffffff161480610e355750610e3481610e2f612291565b611f53565b5b610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b906149af565b60405180910390fd5b610e7e8383612299565b505050565b6000600880549050905090565b60125481565b610ea7610ea1612291565b82612352565b610ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edd90614a41565b60405180910390fd5b610ef18383836123e7565b505050565b6000600d6000838152602001908152602001600020600101549050919050565b6000806000600b60008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036110ab57600a6040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b60006110b56126e0565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff16866110e19190614a90565b6110eb9190614b01565b90508160000151819350935050509250929050565b61012c81565b61110f82610ef6565b611118816126ea565b61112283836126fe565b505050565b60006111328361160d565b8210611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90614ba4565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6101f481565b61025881565b6111e0612291565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461124d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124490614c36565b60405180910390fd5b61125782826127df565b5050565b6000479050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112c8573d6000803e3d6000fd5b50807ff1b96db22d7f3eb7ef19d9ddbc4d63be139f5d014216d4e42107e10cfd4ff16c60405160405180910390a250565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611323816126ea565b61132b6128c1565b50565b61134983838360405180602001604052806000815250611d7a565b505050565b7f7eedb2e31886aee6b48ad5b19b07b41f829d56c86a5c8a5cc10a185aeed92904611378816126ea565b600f60009054906101000a900460ff16156113c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bf90614ca2565b60405180910390fd5b6001600f60006101000a81548160ff0219169083151502179055506113ec82612924565b7f66b9f0d2f5af4125e8098bf5f1efc517ed46a70d8638734d186af310e2f8bc7560405160405180910390a15050565b6000611426610e83565b8210611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e90614d34565b60405180910390fd5b6008828154811061147b5761147a614d54565b5b90600052602060002001549050919050565b604051806080016040528060578152602001615df26057913981565b600f60009054906101000a900460ff1681565b6000600c60009054906101000a900460ff16905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061150583612937565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156d90614dcf565b60405180910390fd5b80915050919050565b6010805461158c9061487a565b80601f01602080910402602001604051908101604052809291908181526020018280546115b89061487a565b80156116055780601f106115da57610100808354040283529160200191611605565b820191906000526020600020905b8154815290600101906020018083116115e857829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361167d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167490614e61565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6201fa4081565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6116f5816126ea565b6116fd612974565b50565b6000801b61170d816126ea565b61012c8260125461171e9190614e81565b111561175f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175690614f01565b60405180910390fd5b81601260008282546117719190614e81565b9250508190555060005b828110156117b957600061178f600e6129d7565b905061179b600e6121b6565b6117a585826129e5565b5080806117b190614f21565b91505061177b565b50505050565b60115481565b671bc16d674ec8000081565b7fe1dcbdb91df27212a29bc27177c840cf2f819ecf2187432e1fac86c2dd5dfca96117fb816126ea565b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611848826101f4612a03565b7f727bd835ffe06a38eb5582c11cdf25e5dc854785671002e8068263dcca61be89826101f460405161187b929190614fa4565b60405180910390a15050565b6000600d600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600180546119019061487a565b80601f016020809104026020016040519081016040528092919081815260200182805461192d9061487a565b801561197a5780601f1061194f5761010080835404028352916020019161197a565b820191906000526020600020905b81548152906001019060200180831161195d57829003601f168201915b5050505050905090565b61198c612b98565b426363d9ab8011156119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca90615019565b60405180910390fd5b42601154111580611a2d5750601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6390615085565b60405180910390fd5b6003811115611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa7906150f1565b60405180910390fd5b61025881611abc610e83565b611ac69190614e81565b1115611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe9061515d565b60405180910390fd5b80671bc16d674ec80000611b1b9190614a90565b341015611b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b54906151c9565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611bc5573d6000803e3d6000fd5b5060005b81811015611c07576000611bdd600e6129d7565b9050611be9600e6121b6565b611bf333826129e5565b508080611bff90614f21565b915050611bc9565b5050565b6060600061025867ffffffffffffffff811115611c2b57611c2a6143fa565b5b604051908082528060200260200182016040528015611c595781602001602082028036833780820191505090505b50905060005b610258811015611cd257611c7281612937565b828281518110611c8557611c84614d54565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080611cca90614f21565b915050611c5f565b508091505090565b6000801b81565b611cf3611cec612291565b8383612be2565b5050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f7eedb2e31886aee6b48ad5b19b07b41f829d56c86a5c8a5cc10a185aeed9290481565b6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525081565b611d8b611d85612291565b83612352565b611dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc190614a41565b60405180910390fd5b611dd684848484612d4e565b50505050565b6363d9ab8081565b6060611def82612daa565b611e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2590615235565b60405180910390fd5b600f60009054906101000a900460ff16611e6057604051806080016040528060578152602001615df260579139611ec3565b6010611e6b83612deb565b6040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250604051602001611eb393929190615329565b6040516020818303038152906040525b9050919050565b7fe1dcbdb91df27212a29bc27177c840cf2f819ecf2187432e1fac86c2dd5dfca981565b611ef782610ef6565b611f00816126ea565b611f0a83836127df565b505050565b60136020528060005260406000206000915054906101000a900460ff1681565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7fe1dcbdb91df27212a29bc27177c840cf2f819ecf2187432e1fac86c2dd5dfca9612011816126ea565b61205d7fe1dcbdb91df27212a29bc27177c840cf2f819ecf2187432e1fac86c2dd5dfca9601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611eee565b6120877fe1dcbdb91df27212a29bc27177c840cf2f819ecf2187432e1fac86c2dd5dfca9836126fe565b81601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167f1ac54af2084ba0e4b86b7bc54b978ce7dd4ca046d3dec89d7c8963873820c0bb60405160405180910390a25050565b6000801b61211c816126ea565b81601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d83836040516121a492919061535a565b60405180910390a1505050565b600381565b6001816000016000828254019250508190555050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061223f575061223e82612eb9565b5b9050919050565b61224f81612daa565b61228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228590614dcf565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661230c836114f9565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061235e836114f9565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806123a0575061239f8185611f53565b5b806123de57508373ffffffffffffffffffffffffffffffffffffffff166123c684610d26565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612407826114f9565b73ffffffffffffffffffffffffffffffffffffffff161461245d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612454906153f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c390615487565b60405180910390fd5b6124d98383836001612f33565b8273ffffffffffffffffffffffffffffffffffffffff166124f9826114f9565b73ffffffffffffffffffffffffffffffffffffffff161461254f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612546906153f5565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46126db8383836001612f4d565b505050565b6000612710905090565b6126fb816126f6612291565b612f53565b50565b6127088282611887565b6127db576001600d600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612780612291565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6127e98282611887565b156128bd576000600d600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612862612291565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6128c9612fd8565b6000600c60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61290d612291565b60405161291a9190614174565b60405180910390a1565b80601090816129339190615634565b5050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61297c612b98565b6001600c60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586129c0612291565b6040516129cd9190614174565b60405180910390a1565b600081600001549050919050565b6129ff828260405180602001604052806000815250613021565b5050565b612a0b6126e0565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115612a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6090615778565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acf906157e4565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600a60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b612ba06114bc565b15612be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd790615850565b60405180910390fd5b565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c47906158bc565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612d419190614003565b60405180910390a3505050565b612d598484846123e7565b612d658484848461307c565b612da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9b9061594e565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff16612dcc83612937565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b606060006001612dfa84613203565b01905060008167ffffffffffffffff811115612e1957612e186143fa565b5b6040519080825280601f01601f191660200182016040528015612e4b5781602001600182028036833780820191505090505b509050600082602001820190505b600115612eae578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612ea257612ea1614ad2565b5b04945060008503612e59575b819350505050919050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612f2c5750612f2b82613356565b5b9050919050565b612f3b612b98565b612f47848484846133d0565b50505050565b50505050565b612f5d8282611887565b612fd457612f6a8161352e565b612f788360001c602061355b565b604051602001612f89929190615a06565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fcb91906140ae565b60405180910390fd5b5050565b612fe06114bc565b61301f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301690615a8c565b60405180910390fd5b565b61302b8383613797565b613038600084848461307c565b613077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306e9061594e565b60405180910390fd5b505050565b600061309d8473ffffffffffffffffffffffffffffffffffffffff166139b4565b156131f6578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026130c6612291565b8786866040518563ffffffff1660e01b81526004016130e89493929190615b01565b6020604051808303816000875af192505050801561312457506040513d601f19601f820116820180604052508101906131219190615b62565b60015b6131a6573d8060008114613154576040519150601f19603f3d011682016040523d82523d6000602084013e613159565b606091505b50600081510361319e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131959061594e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506131fb565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613261577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161325757613256614ad2565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061329e576d04ee2d6d415b85acef8100000000838161329457613293614ad2565b5b0492506020810190505b662386f26fc1000083106132cd57662386f26fc1000083816132c3576132c2614ad2565b5b0492506010810190505b6305f5e10083106132f6576305f5e10083816132ec576132eb614ad2565b5b0492506008810190505b612710831061331b57612710838161331157613310614ad2565b5b0492506004810190505b6064831061333e576064838161333457613333614ad2565b5b0492506002810190505b600a831061334d576001810190505b80915050919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806133c957506133c8826139d7565b5b9050919050565b6133dc84848484613ab9565b6001811115613420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341790615c01565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036134675761346281613bdf565b6134a6565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146134a5576134a48582613c28565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036134e8576134e381613d95565b613527565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614613526576135258482613e66565b5b5b5050505050565b60606135548273ffffffffffffffffffffffffffffffffffffffff16601460ff1661355b565b9050919050565b60606000600283600261356e9190614a90565b6135789190614e81565b67ffffffffffffffff811115613591576135906143fa565b5b6040519080825280601f01601f1916602001820160405280156135c35781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106135fb576135fa614d54565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061365f5761365e614d54565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261369f9190614a90565b6136a99190614e81565b90505b6001811115613749577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106136eb576136ea614d54565b5b1a60f81b82828151811061370257613701614d54565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061374290615c21565b90506136ac565b506000841461378d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378490615c96565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137fd90615d02565b60405180910390fd5b61380f81612daa565b1561384f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384690615d6e565b60405180910390fd5b61385d600083836001612f33565b61386681612daa565b156138a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389d90615d6e565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46139b0600083836001612f4d565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613aa257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80613ab25750613ab182613ee5565b5b9050919050565b6001811115613bd957600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614613b4d5780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b459190615d8e565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613bd85780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613bd09190614e81565b925050819055505b5b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001613c358461160d565b613c3f9190615d8e565b9050600060076000848152602001908152602001600020549050818114613d24576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050613da99190615d8e565b9050600060096000848152602001908152602001600020549050600060088381548110613dd957613dd8614d54565b5b906000526020600020015490508060088381548110613dfb57613dfa614d54565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480613e4a57613e49615dc2565b5b6001900381819060005260206000200160009055905550505050565b6000613e718361160d565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613f9881613f63565b8114613fa357600080fd5b50565b600081359050613fb581613f8f565b92915050565b600060208284031215613fd157613fd0613f59565b5b6000613fdf84828501613fa6565b91505092915050565b60008115159050919050565b613ffd81613fe8565b82525050565b60006020820190506140186000830184613ff4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561405857808201518184015260208101905061403d565b60008484015250505050565b6000601f19601f8301169050919050565b60006140808261401e565b61408a8185614029565b935061409a81856020860161403a565b6140a381614064565b840191505092915050565b600060208201905081810360008301526140c88184614075565b905092915050565b6000819050919050565b6140e3816140d0565b81146140ee57600080fd5b50565b600081359050614100816140da565b92915050565b60006020828403121561411c5761411b613f59565b5b600061412a848285016140f1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061415e82614133565b9050919050565b61416e81614153565b82525050565b60006020820190506141896000830184614165565b92915050565b61419881614153565b81146141a357600080fd5b50565b6000813590506141b58161418f565b92915050565b600080604083850312156141d2576141d1613f59565b5b60006141e0858286016141a6565b92505060206141f1858286016140f1565b9150509250929050565b614204816140d0565b82525050565b600060208201905061421f60008301846141fb565b92915050565b60008060006060848603121561423e5761423d613f59565b5b600061424c868287016141a6565b935050602061425d868287016141a6565b925050604061426e868287016140f1565b9150509250925092565b6000819050919050565b61428b81614278565b811461429657600080fd5b50565b6000813590506142a881614282565b92915050565b6000602082840312156142c4576142c3613f59565b5b60006142d284828501614299565b91505092915050565b6142e481614278565b82525050565b60006020820190506142ff60008301846142db565b92915050565b6000806040838503121561431c5761431b613f59565b5b600061432a858286016140f1565b925050602061433b858286016140f1565b9150509250929050565b600060408201905061435a6000830185614165565b61436760208301846141fb565b9392505050565b6000806040838503121561438557614384613f59565b5b600061439385828601614299565b92505060206143a4858286016141a6565b9150509250929050565b60006bffffffffffffffffffffffff82169050919050565b6143cf816143ae565b82525050565b60006020820190506143ea60008301846143c6565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61443282614064565b810181811067ffffffffffffffff82111715614451576144506143fa565b5b80604052505050565b6000614464613f4f565b90506144708282614429565b919050565b600067ffffffffffffffff8211156144905761448f6143fa565b5b61449982614064565b9050602081019050919050565b82818337600083830152505050565b60006144c86144c384614475565b61445a565b9050828152602081018484840111156144e4576144e36143f5565b5b6144ef8482856144a6565b509392505050565b600082601f83011261450c5761450b6143f0565b5b813561451c8482602086016144b5565b91505092915050565b60006020828403121561453b5761453a613f59565b5b600082013567ffffffffffffffff81111561455957614558613f5e565b5b614565848285016144f7565b91505092915050565b60006020828403121561458457614583613f59565b5b6000614592848285016141a6565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145d081614153565b82525050565b60006145e283836145c7565b60208301905092915050565b6000602082019050919050565b60006146068261459b565b61461081856145a6565b935061461b836145b7565b8060005b8381101561464c57815161463388826145d6565b975061463e836145ee565b92505060018101905061461f565b5085935050505092915050565b6000602082019050818103600083015261467381846145fb565b905092915050565b61468481613fe8565b811461468f57600080fd5b50565b6000813590506146a18161467b565b92915050565b600080604083850312156146be576146bd613f59565b5b60006146cc858286016141a6565b92505060206146dd85828601614692565b9150509250929050565b600067ffffffffffffffff821115614702576147016143fa565b5b61470b82614064565b9050602081019050919050565b600061472b614726846146e7565b61445a565b905082815260208101848484011115614747576147466143f5565b5b6147528482856144a6565b509392505050565b600082601f83011261476f5761476e6143f0565b5b813561477f848260208601614718565b91505092915050565b600080600080608085870312156147a2576147a1613f59565b5b60006147b0878288016141a6565b94505060206147c1878288016141a6565b93505060406147d2878288016140f1565b925050606085013567ffffffffffffffff8111156147f3576147f2613f5e565b5b6147ff8782880161475a565b91505092959194509250565b6000806040838503121561482257614821613f59565b5b6000614830858286016141a6565b9250506020614841858286016141a6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061489257607f821691505b6020821081036148a5576148a461484b565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614907602183614029565b9150614912826148ab565b604082019050919050565b60006020820190508181036000830152614936816148fa565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000614999603d83614029565b91506149a48261493d565b604082019050919050565b600060208201905081810360008301526149c88161498c565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000614a2b602d83614029565b9150614a36826149cf565b604082019050919050565b60006020820190508181036000830152614a5a81614a1e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614a9b826140d0565b9150614aa6836140d0565b9250828202614ab4816140d0565b91508282048414831517614acb57614aca614a61565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614b0c826140d0565b9150614b17836140d0565b925082614b2757614b26614ad2565b5b828204905092915050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000614b8e602b83614029565b9150614b9982614b32565b604082019050919050565b60006020820190508181036000830152614bbd81614b81565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000614c20602f83614029565b9150614c2b82614bc4565b604082019050919050565b60006020820190508181036000830152614c4f81614c13565b9050919050565b7f52657665616c6564210000000000000000000000000000000000000000000000600082015250565b6000614c8c600983614029565b9150614c9782614c56565b602082019050919050565b60006020820190508181036000830152614cbb81614c7f565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000614d1e602c83614029565b9150614d2982614cc2565b604082019050919050565b60006020820190508181036000830152614d4d81614d11565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000614db9601883614029565b9150614dc482614d83565b602082019050919050565b60006020820190508181036000830152614de881614dac565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000614e4b602983614029565b9150614e5682614def565b604082019050919050565b60006020820190508181036000830152614e7a81614e3e565b9050919050565b6000614e8c826140d0565b9150614e97836140d0565b9250828201905080821115614eaf57614eae614a61565b5b92915050565b7f41697264726f703a20546f6f204d616e79210000000000000000000000000000600082015250565b6000614eeb601283614029565b9150614ef682614eb5565b602082019050919050565b60006020820190508181036000830152614f1a81614ede565b9050919050565b6000614f2c826140d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614f5e57614f5d614a61565b5b600182019050919050565b6000819050919050565b6000614f8e614f89614f84846143ae565b614f69565b6140d0565b9050919050565b614f9e81614f73565b82525050565b6000604082019050614fb96000830185614165565b614fc66020830184614f95565b9392505050565b7f4d696e743a204e6f742079657421000000000000000000000000000000000000600082015250565b6000615003600e83614029565b915061500e82614fcd565b602082019050919050565b6000602082019050818103600083015261503281614ff6565b9050919050565b7f4d696e743a204e6f742077686974656c69737465642100000000000000000000600082015250565b600061506f601683614029565b915061507a82615039565b602082019050919050565b6000602082019050818103600083015261509e81615062565b9050919050565b7f4d696e743a20546f6f206d616e79210000000000000000000000000000000000600082015250565b60006150db600f83614029565b91506150e6826150a5565b602082019050919050565b6000602082019050818103600083015261510a816150ce565b9050919050565b7f4d696e743a204d617820737570706c7921000000000000000000000000000000600082015250565b6000615147601183614029565b915061515282615111565b602082019050919050565b600060208201905081810360008301526151768161513a565b9050919050565b7f4d696e743a204e6f7420656e6f75676821000000000000000000000000000000600082015250565b60006151b3601183614029565b91506151be8261517d565b602082019050919050565b600060208201905081810360008301526151e2816151a6565b9050919050565b7f4552433732314d657461646174613a20446f6573206e6f742065786973742100600082015250565b600061521f601f83614029565b915061522a826151e9565b602082019050919050565b6000602082019050818103600083015261524e81615212565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b600081546152828161487a565b61528c8186615255565b945060018216600081146152a757600181146152bc576152ef565b60ff19831686528115158202860193506152ef565b6152c585615260565b60005b838110156152e7578154818901526001820191506020810190506152c8565b838801955050505b50505092915050565b60006153038261401e565b61530d8185615255565b935061531d81856020860161403a565b80840191505092915050565b60006153358286615275565b915061534182856152f8565b915061534d82846152f8565b9150819050949350505050565b600060408201905061536f6000830185614165565b61537c6020830184613ff4565b9392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006153df602583614029565b91506153ea82615383565b604082019050919050565b6000602082019050818103600083015261540e816153d2565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615471602483614029565b915061547c82615415565b604082019050919050565b600060208201905081810360008301526154a081615464565b9050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026154f47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826154b7565b6154fe86836154b7565b95508019841693508086168417925050509392505050565b600061553161552c615527846140d0565b614f69565b6140d0565b9050919050565b6000819050919050565b61554b83615516565b61555f61555782615538565b8484546154c4565b825550505050565b600090565b615574615567565b61557f818484615542565b505050565b5b818110156155a35761559860008261556c565b600181019050615585565b5050565b601f8211156155e8576155b981615260565b6155c2846154a7565b810160208510156155d1578190505b6155e56155dd856154a7565b830182615584565b50505b505050565b600082821c905092915050565b600061560b600019846008026155ed565b1980831691505092915050565b600061562483836155fa565b9150826002028217905092915050565b61563d8261401e565b67ffffffffffffffff811115615656576156556143fa565b5b615660825461487a565b61566b8282856155a7565b600060209050601f83116001811461569e576000841561568c578287015190505b6156968582615618565b8655506156fe565b601f1984166156ac86615260565b60005b828110156156d4578489015182556001820191506020850194506020810190506156af565b868310156156f157848901516156ed601f8916826155fa565b8355505b6001600288020188555050505b505050505050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b6000615762602a83614029565b915061576d82615706565b604082019050919050565b6000602082019050818103600083015261579181615755565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b60006157ce601983614029565b91506157d982615798565b602082019050919050565b600060208201905081810360008301526157fd816157c1565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b600061583a601083614029565b915061584582615804565b602082019050919050565b600060208201905081810360008301526158698161582d565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006158a6601983614029565b91506158b182615870565b602082019050919050565b600060208201905081810360008301526158d581615899565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000615938603283614029565b9150615943826158dc565b604082019050919050565b600060208201905081810360008301526159678161592b565b9050919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006159a4601783615255565b91506159af8261596e565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006159f0601183615255565b91506159fb826159ba565b601182019050919050565b6000615a1182615997565b9150615a1d82856152f8565b9150615a28826159e3565b9150615a3482846152f8565b91508190509392505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000615a76601483614029565b9150615a8182615a40565b602082019050919050565b60006020820190508181036000830152615aa581615a69565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000615ad382615aac565b615add8185615ab7565b9350615aed81856020860161403a565b615af681614064565b840191505092915050565b6000608082019050615b166000830187614165565b615b236020830186614165565b615b3060408301856141fb565b8181036060830152615b428184615ac8565b905095945050505050565b600081519050615b5c81613f8f565b92915050565b600060208284031215615b7857615b77613f59565b5b6000615b8684828501615b4d565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000615beb603583614029565b9150615bf682615b8f565b604082019050919050565b60006020820190508181036000830152615c1a81615bde565b9050919050565b6000615c2c826140d0565b915060008203615c3f57615c3e614a61565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000615c80602083614029565b9150615c8b82615c4a565b602082019050919050565b60006020820190508181036000830152615caf81615c73565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615cec602083614029565b9150615cf782615cb6565b602082019050919050565b60006020820190508181036000830152615d1b81615cdf565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615d58601c83614029565b9150615d6382615d22565b602082019050919050565b60006020820190508181036000830152615d8781615d4b565b9050919050565b6000615d99826140d0565b9150615da4836140d0565b9250828203905081811115615dbc57615dbb614a61565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe697066733a2f2f6261667962656967366e6c6c697670647279616e68337a643471796d6f6f68796c786d73366b78326c64706d77676368736169716e6672353575752f63657275732d756e72657665616c65642e706e67a264697066735822122024bfa1b6bfec789ef51b5c80f127fd738f28fa653e36cebfeeef8d1195ccff3e64736f6c63430008110033