[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_admin", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "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": "Soulbound", "type": "error" }, { "inputs": [], "name": "SpotMintTokenIdTooSmall", "type": "error" }, { "inputs": [], "name": "TokenAlreadyExists", "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": "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": 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": "ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINT_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "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": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "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": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "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": "string", "name": "_uri", "type": "string" } ], "name": "setBaseURI", "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": "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" } ]
60806040523480156200001157600080fd5b50604051620032ee380380620032ee8339818101604052810190620000379190620004e4565b828281600290816200004a9190620007c9565b5080600390816200005c9190620007c9565b506200006d6200013a60201b60201c565b600081905550620000836200013a60201b60201c565b620000936200014360201b60201c565b1015620000b357620000b263fed8210f60e01b6200016b60201b60201c565b5b5050620000ca6000801b826200017560201b60201c565b50620000fd7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775826200017560201b60201c565b50620001307f154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c3686826200017560201b60201c565b50505050620008b0565b60006001905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b8060005260046000fd5b60006200018983836200027960201b60201c565b6200026e5760016009600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200020a620002e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905062000273565b600090505b92915050565b60006009600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000355826200030a565b810181811067ffffffffffffffff821117156200037757620003766200031b565b5b80604052505050565b60006200038c620002ec565b90506200039a82826200034a565b919050565b600067ffffffffffffffff821115620003bd57620003bc6200031b565b5b620003c8826200030a565b9050602081019050919050565b60005b83811015620003f5578082015181840152602081019050620003d8565b60008484015250505050565b60006200041862000412846200039f565b62000380565b90508281526020810184848401111562000437576200043662000305565b5b62000444848285620003d5565b509392505050565b600082601f83011262000464576200046362000300565b5b81516200047684826020860162000401565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004ac826200047f565b9050919050565b620004be816200049f565b8114620004ca57600080fd5b50565b600081519050620004de81620004b3565b92915050565b6000806000606084860312156200050057620004ff620002f6565b5b600084015167ffffffffffffffff811115620005215762000520620002fb565b5b6200052f868287016200044c565b935050602084015167ffffffffffffffff811115620005535762000552620002fb565b5b62000561868287016200044c565b92505060406200057486828701620004cd565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005d157607f821691505b602082108103620005e757620005e662000589565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000612565b6200065d868362000612565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620006aa620006a46200069e8462000675565b6200067f565b62000675565b9050919050565b6000819050919050565b620006c68362000689565b620006de620006d582620006b1565b8484546200061f565b825550505050565b600090565b620006f5620006e6565b62000702818484620006bb565b505050565b5b818110156200072a576200071e600082620006eb565b60018101905062000708565b5050565b601f82111562000779576200074381620005ed565b6200074e8462000602565b810160208510156200075e578190505b620007766200076d8562000602565b83018262000707565b50505b505050565b600082821c905092915050565b60006200079e600019846008026200077e565b1980831691505092915050565b6000620007b983836200078b565b9150826002028217905092915050565b620007d4826200057e565b67ffffffffffffffff811115620007f057620007ef6200031b565b5b620007fc8254620005b8565b620008098282856200072e565b600060209050601f8311600181146200084157600084156200082c578287015190505b620008388582620007ab565b865550620008a8565b601f1984166200085186620005ed565b60005b828110156200087b5784890151825560018201915060208501945060208101905062000854565b868310156200089b578489015162000897601f8916826200078b565b8355505b6001600288020188555050505b505050505050565b612a2e80620008c06000396000f3fe6080604052600436106101665760003560e01c806355f804b3116100d1578063a217fddf1161008a578063c87b56dd11610064578063c87b56dd14610516578063d547741f14610553578063e985e9c51461057c578063e9a9c850146105b957610166565b8063a217fddf146104a6578063a22cb465146104d1578063b88d4fde146104fa57610166565b806355f804b3146103705780636352211e1461039957806370a08231146103d657806375b238fc1461041357806391d148541461043e57806395d89b411461047b57610166565b8063248a9ca311610123578063248a9ca3146102735780632f2ff15d146102b057806336568abe146102d957806340c10f191461030257806342842e0e1461032b57806342966c681461034757610166565b806301ffc9a71461016b57806306fdde03146101a8578063081812fc146101d3578063095ea7b31461021057806318160ddd1461022c57806323b872dd14610257575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d9190611e51565b6105e4565b60405161019f9190611e99565b60405180910390f35b3480156101b457600080fd5b506101bd6105f6565b6040516101ca9190611f44565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f59190611f9c565b610688565b604051610207919061200a565b60405180910390f35b61022a60048036038101906102259190612051565b6106e6565b005b34801561023857600080fd5b506102416106f6565b60405161024e91906120a0565b60405180910390f35b610271600480360381019061026c91906120bb565b610743565b005b34801561027f57600080fd5b5061029a60048036038101906102959190612144565b610a04565b6040516102a79190612180565b60405180910390f35b3480156102bc57600080fd5b506102d760048036038101906102d2919061219b565b610a24565b005b3480156102e557600080fd5b5061030060048036038101906102fb919061219b565b610a46565b005b34801561030e57600080fd5b5061032960048036038101906103249190612051565b610ac1565b005b610345600480360381019061034091906120bb565b610afa565b005b34801561035357600080fd5b5061036e60048036038101906103699190611f9c565b610b1a565b005b34801561037c57600080fd5b5061039760048036038101906103929190612310565b610b28565b005b3480156103a557600080fd5b506103c060048036038101906103bb9190611f9c565b610b66565b6040516103cd919061200a565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190612359565b610b78565b60405161040a91906120a0565b60405180910390f35b34801561041f57600080fd5b50610428610c0f565b6040516104359190612180565b60405180910390f35b34801561044a57600080fd5b506104656004803603810190610460919061219b565b610c33565b6040516104729190611e99565b60405180910390f35b34801561048757600080fd5b50610490610c9e565b60405161049d9190611f44565b60405180910390f35b3480156104b257600080fd5b506104bb610d30565b6040516104c89190612180565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f391906123b2565b610d37565b005b610514600480360381019061050f9190612493565b610e42565b005b34801561052257600080fd5b5061053d60048036038101906105389190611f9c565b610e94565b60405161054a9190611f44565b60405180910390f35b34801561055f57600080fd5b5061057a6004803603810190610575919061219b565b610f11565b005b34801561058857600080fd5b506105a3600480360381019061059e9190612516565b610f33565b6040516105b09190611e99565b60405180910390f35b3480156105c557600080fd5b506105ce610fc7565b6040516105db9190612180565b60405180910390f35b60006105ef82610feb565b9050919050565b60606002805461060590612585565b80601f016020809104026020016040519081016040528092919081815260200182805461063190612585565b801561067e5780601f106106535761010080835404028352916020019161067e565b820191906000526020600020905b81548152906001019060200180831161066157829003601f168201915b5050505050905090565b600061069382611065565b6106a8576106a763cf4700e460e01b611111565b5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6106f28282600161111b565b5050565b600061070061124a565b600154600054030390507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610733611253565b1461074057600854810190505b90565b600061074e8261127b565b905073ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161693508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107c3576107c263a114810060e01b611111565b5b6000806107cf84611394565b915091506107e581876107e06113bb565b6113c3565b610810576107fa866107f56113bb565b610f33565b61080f5761080e6359c896be60e01b611111565b5b5b61081d8686866001611407565b801561082857600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154600101919050819055506108f6856108d28888876114ae565b7c0200000000000000000000000000000000000000000000000000000000176114d6565b600460008681526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000084160361097c576000600185019050600060046000838152602001908152602001600020540361097a576000548114610979578360046000838152602001908152602001600020819055505b5b505b600073ffffffffffffffffffffffffffffffffffffffff8673ffffffffffffffffffffffffffffffffffffffff161690508481887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600081036109ee576109ed63ea553b3460e01b611111565b5b6109fb8787876001611501565b50505050505050565b600060096000838152602001908152602001600020600101549050919050565b610a2d82610a04565b610a3681611507565b610a40838361151b565b50505050565b610a4e61160d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ab2576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610abc8282611615565b505050565b7f154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c3686610aeb81611507565b610af58383611708565b505050565b610b1583838360405180602001604052806000815250610e42565b505050565b610b2581600161188e565b50565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610b5281611507565b81600a9081610b619190612762565b505050565b6000610b718261127b565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bbe57610bbd638f4eb60460e01b611111565b5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b60006009600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060038054610cad90612585565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd990612585565b8015610d265780601f10610cfb57610100808354040283529160200191610d26565b820191906000526020600020905b815481529060010190602001808311610d0957829003601f168201915b5050505050905090565b6000801b81565b8060076000610d446113bb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610df16113bb565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610e369190611e99565b60405180910390a35050565b610e4d848484610743565b60008373ffffffffffffffffffffffffffffffffffffffff163b14610e8e57610e7884848484611abf565b610e8d57610e8c63d1a57ed660e01b611111565b5b5b50505050565b6060610e9f82611065565b610eb457610eb363a14c4b5060e01b611111565b5b6000610ebe611bee565b90506000815103610ede5760405180602001604052806000815250610f09565b80610ee884611c80565b604051602001610ef9929190612870565b6040516020818303038152906040525b915050919050565b610f1a82610a04565b610f2381611507565b610f2d8383611615565b50505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c368681565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061105e575061105d82611cd0565b5b9050919050565b60008161107061124a565b1161110b5761107d611253565b8211156110a7576110a06004600084815260200190815260200160002054611d3a565b905061110c565b60005482101561110a5760005b60006004600085815260200190815260200160002054915081036110e357826110dc906128c3565b92506110b4565b60007c01000000000000000000000000000000000000000000000000000000008216149150505b5b5b919050565b8060005260046000fd5b600061112683610b66565b905081801561116857508073ffffffffffffffffffffffffffffffffffffffff1661114f6113bb565b73ffffffffffffffffffffffffffffffffffffffff1614155b156111945761117e816111796113bb565b610f33565b6111935761119263cfb3b94260e01b611111565b5b5b836006600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b60006001905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b60008161128661124a565b1161137e57600460008381526020019081526020016000205490506112a9611253565b8211156112ce576112b981611d3a565b61138f576112cd63df2d9b4260e01b611111565b5b600081036113555760005482106112f0576112ef63df2d9b4260e01b611111565b5b5b600460008360019003935083815260200190815260200160002054905060008103156113505760007c01000000000000000000000000000000000000000000000000000000008216031561138f5761134f63df2d9b4260e01b611111565b5b6112f1565b60007c01000000000000000000000000000000000000000000000000000000008216031561138f575b61138e63df2d9b4260e01b611111565b5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114715750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156114a8576040517fa4420a9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60008060e883901c905060e86114c5868684611d7b565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b6115188161151361160d565b611d84565b50565b60006115278383610c33565b6116025760016009600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061159f61160d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611607565b600090505b92915050565b600033905090565b60006116218383610c33565b156116fd5760006009600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061169a61160d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611702565b600090505b92915050565b600080549050600082036117275761172663b562e8dd60e01b611111565b5b6117346000848385611407565b6117548361174560008660006114ae565b61174e85611dd5565b176114d6565b6004600083815260200190815260200160002081905550600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600073ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161690506000810361180c5761180b632e07630060e01b611111565b5b600083830190506000839050611820611253565b60018303111561183b5761183a6381647e3a60e01b611111565b5b5b808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a481816001019150810361183c57816000819055505050506118896000848385611501565b505050565b60006118998361127b565b905060008190506000806118ac86611394565b9150915084156118f4576118c881846118c36113bb565b6113c3565b6118f3576118dd836118d86113bb565b610f33565b6118f2576118f16359c896be60e01b611111565b5b5b5b611902836000886001611407565b801561190d57600082555b600160806001901b03600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506119b583611972856000886114ae565b7c02000000000000000000000000000000000000000000000000000000007c010000000000000000000000000000000000000000000000000000000017176114d6565b600460008881526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000851603611a3b5760006001870190506000600460008381526020019081526020016000205403611a39576000548114611a38578460046000838152602001908152602001600020819055505b5b505b85600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611aa5836000886001611501565b600160008154809291906001019190505550505050505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611ae56113bb565b8786866040518563ffffffff1660e01b8152600401611b079493929190612941565b6020604051808303816000875af1925050508015611b4357506040513d601f19601f82011682018060405250810190611b4091906129a2565b60015b611b9b573d8060008114611b73576040519150601f19603f3d011682016040523d82523d6000602084013e611b78565b606091505b506000815103611b9357611b9263d1a57ed660e01b611111565b5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600a8054611bfd90612585565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2990612585565b8015611c765780601f10611c4b57610100808354040283529160200191611c76565b820191906000526020600020905b815481529060010190602001808311611c5957829003601f168201915b5050505050905090565b606060a060405101806040526020810391506000825281835b600115611cbb57600184039350600a81066030018453600a8104905080611c99575b50828103602084039350808452505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60007c0100000000000000000000000000000000000000000000000000000000821673ffffffffffffffffffffffffffffffffffffffff8316119050919050565b60009392505050565b611d8e8282610c33565b611dd15780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611dc89291906129cf565b60405180910390fd5b5050565b60006001821460e11b9050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e2e81611df9565b8114611e3957600080fd5b50565b600081359050611e4b81611e25565b92915050565b600060208284031215611e6757611e66611def565b5b6000611e7584828501611e3c565b91505092915050565b60008115159050919050565b611e9381611e7e565b82525050565b6000602082019050611eae6000830184611e8a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611eee578082015181840152602081019050611ed3565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f1682611eb4565b611f208185611ebf565b9350611f30818560208601611ed0565b611f3981611efa565b840191505092915050565b60006020820190508181036000830152611f5e8184611f0b565b905092915050565b6000819050919050565b611f7981611f66565b8114611f8457600080fd5b50565b600081359050611f9681611f70565b92915050565b600060208284031215611fb257611fb1611def565b5b6000611fc084828501611f87565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ff482611fc9565b9050919050565b61200481611fe9565b82525050565b600060208201905061201f6000830184611ffb565b92915050565b61202e81611fe9565b811461203957600080fd5b50565b60008135905061204b81612025565b92915050565b6000806040838503121561206857612067611def565b5b60006120768582860161203c565b925050602061208785828601611f87565b9150509250929050565b61209a81611f66565b82525050565b60006020820190506120b56000830184612091565b92915050565b6000806000606084860312156120d4576120d3611def565b5b60006120e28682870161203c565b93505060206120f38682870161203c565b925050604061210486828701611f87565b9150509250925092565b6000819050919050565b6121218161210e565b811461212c57600080fd5b50565b60008135905061213e81612118565b92915050565b60006020828403121561215a57612159611def565b5b60006121688482850161212f565b91505092915050565b61217a8161210e565b82525050565b60006020820190506121956000830184612171565b92915050565b600080604083850312156121b2576121b1611def565b5b60006121c08582860161212f565b92505060206121d18582860161203c565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61221d82611efa565b810181811067ffffffffffffffff8211171561223c5761223b6121e5565b5b80604052505050565b600061224f611de5565b905061225b8282612214565b919050565b600067ffffffffffffffff82111561227b5761227a6121e5565b5b61228482611efa565b9050602081019050919050565b82818337600083830152505050565b60006122b36122ae84612260565b612245565b9050828152602081018484840111156122cf576122ce6121e0565b5b6122da848285612291565b509392505050565b600082601f8301126122f7576122f66121db565b5b81356123078482602086016122a0565b91505092915050565b60006020828403121561232657612325611def565b5b600082013567ffffffffffffffff81111561234457612343611df4565b5b612350848285016122e2565b91505092915050565b60006020828403121561236f5761236e611def565b5b600061237d8482850161203c565b91505092915050565b61238f81611e7e565b811461239a57600080fd5b50565b6000813590506123ac81612386565b92915050565b600080604083850312156123c9576123c8611def565b5b60006123d78582860161203c565b92505060206123e88582860161239d565b9150509250929050565b600067ffffffffffffffff82111561240d5761240c6121e5565b5b61241682611efa565b9050602081019050919050565b6000612436612431846123f2565b612245565b905082815260208101848484011115612452576124516121e0565b5b61245d848285612291565b509392505050565b600082601f83011261247a576124796121db565b5b813561248a848260208601612423565b91505092915050565b600080600080608085870312156124ad576124ac611def565b5b60006124bb8782880161203c565b94505060206124cc8782880161203c565b93505060406124dd87828801611f87565b925050606085013567ffffffffffffffff8111156124fe576124fd611df4565b5b61250a87828801612465565b91505092959194509250565b6000806040838503121561252d5761252c611def565b5b600061253b8582860161203c565b925050602061254c8582860161203c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061259d57607f821691505b6020821081036125b0576125af612556565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026126187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826125db565b61262286836125db565b95508019841693508086168417925050509392505050565b6000819050919050565b600061265f61265a61265584611f66565b61263a565b611f66565b9050919050565b6000819050919050565b61267983612644565b61268d61268582612666565b8484546125e8565b825550505050565b600090565b6126a2612695565b6126ad818484612670565b505050565b5b818110156126d1576126c660008261269a565b6001810190506126b3565b5050565b601f821115612716576126e7816125b6565b6126f0846125cb565b810160208510156126ff578190505b61271361270b856125cb565b8301826126b2565b50505b505050565b600082821c905092915050565b60006127396000198460080261271b565b1980831691505092915050565b60006127528383612728565b9150826002028217905092915050565b61276b82611eb4565b67ffffffffffffffff811115612784576127836121e5565b5b61278e8254612585565b6127998282856126d5565b600060209050601f8311600181146127cc57600084156127ba578287015190505b6127c48582612746565b86555061282c565b601f1984166127da866125b6565b60005b82811015612802578489015182556001820191506020850194506020810190506127dd565b8683101561281f578489015161281b601f891682612728565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b600061284a82611eb4565b6128548185612834565b9350612864818560208601611ed0565b80840191505092915050565b600061287c828561283f565b9150612888828461283f565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128ce82611f66565b9150600082036128e1576128e0612894565b5b600182039050919050565b600081519050919050565b600082825260208201905092915050565b6000612913826128ec565b61291d81856128f7565b935061292d818560208601611ed0565b61293681611efa565b840191505092915050565b60006080820190506129566000830187611ffb565b6129636020830186611ffb565b6129706040830185612091565b81810360608301526129828184612908565b905095945050505050565b60008151905061299c81611e25565b92915050565b6000602082840312156129b8576129b7611def565b5b60006129c68482850161298d565b91505092915050565b60006040820190506129e46000830185611ffb565b6129f16020830184612171565b939250505056fea26469706673582212205a23ce27c27e0fb8f3f2af9b9670db84a803fcc61ed67a9fa80224fc39e18d9964736f6c63430008180033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000008b50b3b19c3d8f66293339f7cfe473c76174612b000000000000000000000000000000000000000000000000000000000000000b426c61737420536865657000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066253484545500000000000000000000000000000000000000000000000000000