[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "address", "name": "_mintDestination", "type": "address" }, { "internalType": "address", "name": "_royaltyReceiver", "type": "address" }, { "internalType": "uint96", "name": "_feeNumerator", "type": "uint96" }, { "internalType": "string", "name": "_baseTokenURI", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidDefaultRoyalty", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidDefaultRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidTokenRoyalty", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidTokenRoyaltyReceiver", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "NotCompatibleWithSpotMints", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "SequentialMintExceedsLimit", "type": "error" }, { "inputs": [], "name": "SequentialUpToTooSmall", "type": "error" }, { "inputs": [], "name": "SpotMintTokenIdTooSmall", "type": "error" }, { "inputs": [], "name": "TokenAlreadyExists", "type": "error" }, { "inputs": [], "name": "TokenIdsNotStrictlyAscending", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "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": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "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_MINT_ERC2309_QUANTITY_LIMIT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TOTAL_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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "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": "tokenIds", "type": "uint256[]" } ], "name": "batchTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "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": "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": [ { "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": "tokenIds", "type": "uint256[]" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "payable", "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": "payable", "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "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": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "result", "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": "payable", "type": "function" } ]
608060405234801562000010575f80fd5b50604051620031b4380380620031b48339818101604052810190620000369190620007bb565b8585816004908162000049919062000ae7565b5080600590816200005b919062000ae7565b506200006c6200011f60201b60201c565b600281905550620000826200011f60201b60201c565b620000926200012360201b60201c565b1015620000b257620000b163fed8210f60e01b6200014a60201b60201c565b5b5050620000c683836200015260201b60201c565b80600b9081620000d7919062000ae7565b505f5b620186a08110156200011257620000fa85611388620002fa60201b60201c565b611388816200010a919062000bf8565b9050620000da565b5050505050505062000ced565b5f90565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b805f5260045ffd5b5f620001636200050a60201b60201c565b6bffffffffffffffffffffffff16905080826bffffffffffffffffffffffff161115620001cb5781816040517f6f483d09000000000000000000000000000000000000000000000000000000008152600401620001c292919062000c7b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200023e575f6040517fb6d9900a00000000000000000000000000000000000000000000000000000000815260040162000235919062000cb7565b60405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff168152505f80820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b5f60025490505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200034d576200034c632e07630060e01b6200014a60201b60201c565b5b5f82036200036e576200036d63b562e8dd60e01b6200014a60201b60201c565b5b611388821115620003925762000391633db1f9af60e01b6200014a60201b60201c565b5b620003a65f8483856200051360201b60201c565b600160406001901b17820260075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055506200043083620004125f865f6200051960201b60201c565b62000423856200054860201b60201c565b176200055760201b60201c565b60065f8381526020019081526020015f2081905550620004556200012360201b60201c565b60018383010311156200047b576200047a6381647e3a60e01b6200014a60201b60201c565b5b8273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff16827fdeaa91b6123d068f5821d0fb0678463d1a8a6079fe8af5de3ce5e896dcf9133d600186860103604051620004e0919062000cd2565b60405180910390a4818101600281905550620005055f8483856200058160201b60201c565b505050565b5f612710905090565b50505050565b5f8060e883901c905060e8620005378686846200058760201b60201c565b62ffffff16901b9150509392505050565b5f6001821460e11b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b5f9392505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620005f082620005a8565b810181811067ffffffffffffffff82111715620006125762000611620005b8565b5b80604052505050565b5f620006266200058f565b9050620006348282620005e5565b919050565b5f67ffffffffffffffff821115620006565762000655620005b8565b5b6200066182620005a8565b9050602081019050919050565b5f5b838110156200068d57808201518184015260208101905062000670565b5f8484015250505050565b5f620006ae620006a88462000639565b6200061b565b905082815260208101848484011115620006cd57620006cc620005a4565b5b620006da8482856200066e565b509392505050565b5f82601f830112620006f957620006f8620005a0565b5b81516200070b84826020860162000698565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200073f8262000714565b9050919050565b620007518162000733565b81146200075c575f80fd5b50565b5f815190506200076f8162000746565b92915050565b5f6bffffffffffffffffffffffff82169050919050565b620007978162000775565b8114620007a2575f80fd5b50565b5f81519050620007b5816200078c565b92915050565b5f805f805f8060c08789031215620007d857620007d762000598565b5b5f87015167ffffffffffffffff811115620007f857620007f76200059c565b5b6200080689828a01620006e2565b965050602087015167ffffffffffffffff8111156200082a57620008296200059c565b5b6200083889828a01620006e2565b95505060406200084b89828a016200075f565b94505060606200085e89828a016200075f565b93505060806200087189828a01620007a5565b92505060a087015167ffffffffffffffff8111156200089557620008946200059c565b5b620008a389828a01620006e2565b9150509295509295509295565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620008ff57607f821691505b602082108103620009155762000914620008ba565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620009797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200093c565b6200098586836200093c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620009cf620009c9620009c3846200099d565b620009a6565b6200099d565b9050919050565b5f819050919050565b620009ea83620009af565b62000a02620009f982620009d6565b84845462000948565b825550505050565b5f90565b62000a1862000a0a565b62000a25818484620009df565b505050565b5b8181101562000a4c5762000a405f8262000a0e565b60018101905062000a2b565b5050565b601f82111562000a9b5762000a65816200091b565b62000a70846200092d565b8101602085101562000a80578190505b62000a9862000a8f856200092d565b83018262000a2a565b50505b505050565b5f82821c905092915050565b5f62000abd5f198460080262000aa0565b1980831691505092915050565b5f62000ad7838362000aac565b9150826002028217905092915050565b62000af282620008b0565b67ffffffffffffffff81111562000b0e5762000b0d620005b8565b5b62000b1a8254620008e7565b62000b2782828562000a50565b5f60209050601f83116001811462000b5d575f841562000b48578287015190505b62000b54858262000aca565b86555062000bc3565b601f19841662000b6d866200091b565b5f5b8281101562000b965784890151825560018201915060208501945060208101905062000b6f565b8683101562000bb6578489015162000bb2601f89168262000aac565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000c04826200099d565b915062000c11836200099d565b925082820190508082111562000c2c5762000c2b62000bcb565b5b92915050565b5f62000c5262000c4c62000c468462000775565b620009a6565b6200099d565b9050919050565b62000c648162000c32565b82525050565b62000c75816200099d565b82525050565b5f60408201905062000c905f83018562000c59565b62000c9f602083018462000c6a565b9392505050565b62000cb18162000733565b82525050565b5f60208201905062000ccc5f83018462000ca6565b92915050565b5f60208201905062000ce75f83018462000c6a565b92915050565b6124b98062000cfb5f395ff3fe608060405260043610610134575f3560e01c80636352211e116100aa578063a2309ff81161006e578063a2309ff8146103fd578063b88d4fde14610427578063c87b56dd14610443578063cae794e91461047f578063e985e9c5146104a9578063f3993d11146104e557610134565b80636352211e1461030957806370a0823114610345578063902d55a51461038157806395d89b41146103ab578063a22cb465146103d557610134565b806318160ddd116100fc57806318160ddd1461021257806323b872dd1461023c57806328cfbd46146102585780632a55205a1461027457806342842e0e146102b15780634f558e79146102cd57610134565b806301ffc9a714610138578063034601ec1461017457806306fdde0314610190578063081812fc146101ba578063095ea7b3146101f6575b5f80fd5b348015610143575f80fd5b5061015e60048036038101906101599190611ab0565b610501565b60405161016b9190611af5565b60405180910390f35b61018e60048036038101906101899190611ceb565b6105fa565b005b34801561019b575f80fd5b506101a4610621565b6040516101b19190611dd1565b60405180910390f35b3480156101c5575f80fd5b506101e060048036038101906101db9190611df1565b6106b1565b6040516101ed9190611e2b565b60405180910390f35b610210600480360381019061020b9190611e44565b61070a565b005b34801561021d575f80fd5b5061022661071a565b6040516102339190611e91565b60405180910390f35b61025660048036038101906102519190611eaa565b610766565b005b610272600480360381019061026d9190611faa565b6109e8565b005b34801561027f575f80fd5b5061029a60048036038101906102959190612046565b610a02565b6040516102a8929190612084565b60405180910390f35b6102cb60048036038101906102c69190611eaa565b610bdd565b005b3480156102d8575f80fd5b506102f360048036038101906102ee9190611df1565b610bfc565b6040516103009190611af5565b60405180910390f35b348015610314575f80fd5b5061032f600480360381019061032a9190611df1565b610c0d565b60405161033c9190611e2b565b60405180910390f35b348015610350575f80fd5b5061036b600480360381019061036691906120ab565b610c1e565b6040516103789190611e91565b60405180910390f35b34801561038c575f80fd5b50610395610cb2565b6040516103a29190611e91565b60405180910390f35b3480156103b6575f80fd5b506103bf610cb9565b6040516103cc9190611dd1565b60405180910390f35b3480156103e0575f80fd5b506103fb60048036038101906103f69190612100565b610d49565b005b348015610408575f80fd5b50610411610e4f565b60405161041e9190611e91565b60405180910390f35b610441600480360381019061043c919061213e565b610e5d565b005b34801561044e575f80fd5b5061046960048036038101906104649190611df1565b610eae565b6040516104769190611dd1565b60405180910390f35b34801561048a575f80fd5b50610493610f28565b6040516104a09190611e91565b60405180910390f35b3480156104b4575f80fd5b506104cf60048036038101906104ca91906121be565b610f2e565b6040516104dc9190611af5565b60405180910390f35b6104ff60048036038101906104fa9190611ceb565b610fbc565b005b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061055b57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061058b5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806105f357507f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b61061c610605610fd4565b84848460405180602001604052805f815250610fdb565b505050565b60606004805461063090612229565b80601f016020809104026020016040519081016040528092919081815260200182805461065c90612229565b80156106a75780601f1061067e576101008083540402835291602001916106a7565b820191905f5260205f20905b81548152906001019060200180831161068a57829003601f168201915b5050505050905090565b5f6106bb8261105a565b6106d0576106cf63cf4700e460e01b6110fe565b5b60085f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61071682826001611106565b5050565b5f610723611230565b600354600254030390507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610756611234565b1461076357600a54810190505b90565b5f6107708261125b565b90505f8473ffffffffffffffffffffffffffffffffffffffff169050808273ffffffffffffffffffffffffffffffffffffffff16146107ba576107b963a114810060e01b6110fe565b5b5f806107c58561136b565b915091506107f181846107d6610fd4565b73ffffffffffffffffffffffffffffffffffffffff1661138e565b61081c5761080687610801610fd4565b610f2e565b61081b5761081a6359c896be60e01b6110fe565b5b5b610829878787600161139f565b8015610833575f82555b60075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600101919050819055506108fb866108d78989886113a5565b7c0200000000000000000000000000000000000000000000000000000000176113cc565b60065f8781526020019081526020015f20819055505f7c0200000000000000000000000000000000000000000000000000000000851603610978575f6001860190505f60065f8381526020019081526020015f205403610976576002548114610975578460065f8381526020019081526020015f20819055505b5b505b5f8673ffffffffffffffffffffffffffffffffffffffff1690508581857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a45f81036109d1576109d063ea553b3460e01b6110fe565b5b6109de88888860016113f6565b5050505050505050565b6109fc6109f3610fd4565b85858585610fdb565b50505050565b5f805f60015f8681526020019081526020015f206040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1603610b8a575f6040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b5f610b936113fc565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610bbf9190612286565b610bc991906122f4565b9050815f0151819350935050509250929050565b610bf783838360405180602001604052805f815250610e5d565b505050565b5f610c068261105a565b9050919050565b5f610c178261125b565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c6357610c62638f4eb60460e01b6110fe565b5b67ffffffffffffffff60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054169050919050565b620186a081565b606060058054610cc890612229565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf490612229565b8015610d3f5780601f10610d1657610100808354040283529160200191610d3f565b820191905f5260205f20905b815481529060010190602001808311610d2257829003601f168201915b5050505050905090565b8060095f610d55610fd4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610dfe610fd4565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610e439190611af5565b60405180910390a35050565b5f610e58611405565b905090565b610e68848484610766565b5f8373ffffffffffffffffffffffffffffffffffffffff163b14610ea857610e928484848461144d565b610ea757610ea663d1a57ed660e01b6110fe565b5b5b50505050565b6060610eb98261105a565b610ece57610ecd63a14c4b5060e01b6110fe565b5b5f610ed7611577565b90505f815103610ef55760405180602001604052805f815250610f20565b80610eff84611607565b604051602001610f1092919061235e565b6040516020818303038152906040525b915050919050565b61138881565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b610fcf610fc7610fd4565b848484611656565b505050565b5f33905090565b610fe785858585611656565b5f8373ffffffffffffffffffffffffffffffffffffffff163b14611053575f80611010846119d2565b915091505b80821461105057611030868661102a856119e8565b8661144d565b6110455761104463d1a57ed660e01b6110fe565b5b602082019150611015565b50505b5050505050565b5f81611064611230565b116110f857611071611234565b8211156110995761109260065f8481526020019081526020015f20546119f2565b90506110f9565b6002548210156110f7575f5b5f60065f8581526020019081526020015f2054915081036110d157826110ca90612381565b92506110a5565b5f7c01000000000000000000000000000000000000000000000000000000008216149150505b5b5b919050565b805f5260045ffd5b5f61111083610c0d565b905081801561115257508073ffffffffffffffffffffffffffffffffffffffff16611139610fd4565b73ffffffffffffffffffffffffffffffffffffffff1614155b1561117e5761116881611163610fd4565b610f2e565b61117d5761117c63cfb3b94260e01b6110fe565b5b5b8360085f8581526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b5f90565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b5f81611265611230565b116113555760065f8381526020019081526020015f20549050611286611234565b8211156112ab57611296816119f2565b611366576112aa63df2d9b4260e01b6110fe565b5b5f810361132d5760025482106112cc576112cb63df2d9b4260e01b6110fe565b5b5b60065f836001900393508381526020019081526020015f205490505f810315611328575f7c0100000000000000000000000000000000000000000000000000000000821603156113665761132763df2d9b4260e01b6110fe565b5b6112cd565b5f7c010000000000000000000000000000000000000000000000000000000082160315611366575b61136563df2d9b4260e01b6110fe565b5b919050565b5f805f60085f8581526020019081526020015f2090508092508254915050915091565b5f8382148383141790509392505050565b50505050565b5f8060e883901c905060e86113bb868684611a32565b62ffffff16901b9150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b5f612710905090565b5f61140e611230565b6002540390507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61143d611234565b1461144a57600a54810190505b90565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611472610fd4565b8786866040518563ffffffff1660e01b815260040161149494939291906123fa565b6020604051808303815f875af19250505080156114cf57506040513d601f19601f820116820180604052508101906114cc9190612458565b60015b611524573d805f81146114fd576040519150601f19603f3d011682016040523d82523d5f602084013e611502565b606091505b505f81510361151c5761151b63d1a57ed660e01b6110fe565b5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600b805461158690612229565b80601f01602080910402602001604051908101604052809291908181526020018280546115b290612229565b80156115fd5780601f106115d4576101008083540402835291602001916115fd565b820191905f5260205f20905b8154815290600101906020018083116115e057829003601f168201915b5050505050905090565b606060a060405101806040526020810391505f825281835b60011561164157600184039350600a81066030018453600a810490508061161f575b50828103602084039350808452505050919050565b5f8473ffffffffffffffffffffffffffffffffffffffff1690505f8473ffffffffffffffffffffffffffffffffffffffff1690505f8473ffffffffffffffffffffffffffffffffffffffff1690505f81036116bc576116bb63ea553b3460e01b6110fe565b5b5f6116cb5f8514848614611a3a565b806116dc57506116db8789610f2e565b5b90505f8551036116ef57505050506119cc565b5f60025490505f80611700886119d2565b915091505f805b5f611711856119e8565b90505f81905061172d611722611230565b831083891115611a3a565b156117435761174263df2d9b4260e01b6110fe565b5b5f83146117635783821161176257611761639fc3da3760e01b6110fe565b5b5b5f8290505b5f60065f8381526020019081526020015f20549450840361178f5780600190039050611768565b505f7c01000000000000000000000000000000000000000000000000000000008416146117c7576117c663df2d9b4260e01b6110fe565b5b898373ffffffffffffffffffffffffffffffffffffffff16146117f5576117f463a114810060e01b6110fe565b5b5b5f806118018461136b565b915091506118128c8c86600161139f565b8961183057808d1461182f5761182e6359c896be60e01b6110fe565b5b5b801561183a575f82555b838b8d7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a48360010193508361187760208a019950896119e8565b146118835750506118ac565b8688036118915750506118ac565b50505f60065f8481526020019081526020015f2054146117f6575b6118c0896118bb8c8c876113a5565b6113cc565b60065f8381526020019081526020015f20819055505f81830390508060075f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055508060075f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508783146119a6575f60065f8581526020019081526020015f2054036119a5578360065f8581526020019081526020015f20819055505b5b6119b28b8b84846113f6565b600183039450505050828403611707575050505050505050505b50505050565b5f80602083019150825160051b82019050915091565b5f81519050919050565b5f7c0100000000000000000000000000000000000000000000000000000000821673ffffffffffffffffffffffffffffffffffffffff8316119050919050565b5f9392505050565b5f81151583151517905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a8f81611a5b565b8114611a99575f80fd5b50565b5f81359050611aaa81611a86565b92915050565b5f60208284031215611ac557611ac4611a53565b5b5f611ad284828501611a9c565b91505092915050565b5f8115159050919050565b611aef81611adb565b82525050565b5f602082019050611b085f830184611ae6565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b3782611b0e565b9050919050565b611b4781611b2d565b8114611b51575f80fd5b50565b5f81359050611b6281611b3e565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611bb282611b6c565b810181811067ffffffffffffffff82111715611bd157611bd0611b7c565b5b80604052505050565b5f611be3611a4a565b9050611bef8282611ba9565b919050565b5f67ffffffffffffffff821115611c0e57611c0d611b7c565b5b602082029050602081019050919050565b5f80fd5b5f819050919050565b611c3581611c23565b8114611c3f575f80fd5b50565b5f81359050611c5081611c2c565b92915050565b5f611c68611c6384611bf4565b611bda565b90508083825260208201905060208402830185811115611c8b57611c8a611c1f565b5b835b81811015611cb45780611ca08882611c42565b845260208401935050602081019050611c8d565b5050509392505050565b5f82601f830112611cd257611cd1611b68565b5b8135611ce2848260208601611c56565b91505092915050565b5f805f60608486031215611d0257611d01611a53565b5b5f611d0f86828701611b54565b9350506020611d2086828701611b54565b925050604084013567ffffffffffffffff811115611d4157611d40611a57565b5b611d4d86828701611cbe565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611d8e578082015181840152602081019050611d73565b5f8484015250505050565b5f611da382611d57565b611dad8185611d61565b9350611dbd818560208601611d71565b611dc681611b6c565b840191505092915050565b5f6020820190508181035f830152611de98184611d99565b905092915050565b5f60208284031215611e0657611e05611a53565b5b5f611e1384828501611c42565b91505092915050565b611e2581611b2d565b82525050565b5f602082019050611e3e5f830184611e1c565b92915050565b5f8060408385031215611e5a57611e59611a53565b5b5f611e6785828601611b54565b9250506020611e7885828601611c42565b9150509250929050565b611e8b81611c23565b82525050565b5f602082019050611ea45f830184611e82565b92915050565b5f805f60608486031215611ec157611ec0611a53565b5b5f611ece86828701611b54565b9350506020611edf86828701611b54565b9250506040611ef086828701611c42565b9150509250925092565b5f80fd5b5f67ffffffffffffffff821115611f1857611f17611b7c565b5b611f2182611b6c565b9050602081019050919050565b828183375f83830152505050565b5f611f4e611f4984611efe565b611bda565b905082815260208101848484011115611f6a57611f69611efa565b5b611f75848285611f2e565b509392505050565b5f82601f830112611f9157611f90611b68565b5b8135611fa1848260208601611f3c565b91505092915050565b5f805f8060808587031215611fc257611fc1611a53565b5b5f611fcf87828801611b54565b9450506020611fe087828801611b54565b935050604085013567ffffffffffffffff81111561200157612000611a57565b5b61200d87828801611cbe565b925050606085013567ffffffffffffffff81111561202e5761202d611a57565b5b61203a87828801611f7d565b91505092959194509250565b5f806040838503121561205c5761205b611a53565b5b5f61206985828601611c42565b925050602061207a85828601611c42565b9150509250929050565b5f6040820190506120975f830185611e1c565b6120a46020830184611e82565b9392505050565b5f602082840312156120c0576120bf611a53565b5b5f6120cd84828501611b54565b91505092915050565b6120df81611adb565b81146120e9575f80fd5b50565b5f813590506120fa816120d6565b92915050565b5f806040838503121561211657612115611a53565b5b5f61212385828601611b54565b9250506020612134858286016120ec565b9150509250929050565b5f805f806080858703121561215657612155611a53565b5b5f61216387828801611b54565b945050602061217487828801611b54565b935050604061218587828801611c42565b925050606085013567ffffffffffffffff8111156121a6576121a5611a57565b5b6121b287828801611f7d565b91505092959194509250565b5f80604083850312156121d4576121d3611a53565b5b5f6121e185828601611b54565b92505060206121f285828601611b54565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061224057607f821691505b602082108103612253576122526121fc565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61229082611c23565b915061229b83611c23565b92508282026122a981611c23565b915082820484148315176122c0576122bf612259565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6122fe82611c23565b915061230983611c23565b925082612319576123186122c7565b5b828204905092915050565b5f81905092915050565b5f61233882611d57565b6123428185612324565b9350612352818560208601611d71565b80840191505092915050565b5f612369828561232e565b9150612375828461232e565b91508190509392505050565b5f61238b82611c23565b91505f820361239d5761239c612259565b5b600182039050919050565b5f81519050919050565b5f82825260208201905092915050565b5f6123cc826123a8565b6123d681856123b2565b93506123e6818560208601611d71565b6123ef81611b6c565b840191505092915050565b5f60808201905061240d5f830187611e1c565b61241a6020830186611e1c565b6124276040830185611e82565b818103606083015261243981846123c2565b905095945050505050565b5f8151905061245281611a86565b92915050565b5f6020828403121561246d5761246c611a53565b5b5f61247a84828501612444565b9150509291505056fea2646970667358221220cb3b59d8f72b2cb12777f4475b358f900cfde9ef285ab5718307b08dd256913764736f6c6343000815003300000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000007cea9eb05d34c5f567ec96dfa085f571a9786811000000000000000000000000be62686bdae4b938e40e5a09c4e2be3b5bc74ba900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000f496e66696e657820506174726f6e730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000758504154524f4e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002868747470733a2f2f696e66696e65782e78797a2f6170692f706174726f6e2f6d657461646174612f000000000000000000000000000000000000000000000000