[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "ApprovalToCurrentOwner", "type": "error" }, { "inputs": [], "name": "ApproveToCaller", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "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": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "numberOfTokens", "type": "uint256" } ], "name": "airdrop", "outputs": [], "stateMutability": "nonpayable", "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": "baseExtension", "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": "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": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newBaseExtension", "type": "string" } ], "name": "setBaseExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxSupply", "type": "uint256" } ], "name": "setMaxSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_payoutAddress", "type": "address" } ], "name": "setRoyaltyPayoutAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint96", "name": "_royalties", "type": "uint96" } ], "name": "setTokenRoyalties", "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": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040526105326009556040518060600160405280603681526020016200372460369139600a90816200003491906200052a565b506040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600b90816200007b91906200052a565b506103e8600c60006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555073e80aea8e92b2c403e50a4cbec44a52043d3415d0600c806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200011057600080fd5b506040518060400160405280600d81526020017f42616279204c656f7061726473000000000000000000000000000000000000008152506040518060400160405280600781526020017f424142594c454f000000000000000000000000000000000000000000000000008152506200019d62000191620001df60201b60201c565b620001e760201b60201c565b8160039081620001ae91906200052a565b508060049081620001c091906200052a565b50620001d1620002ab60201b60201c565b600181905550505062000611565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200033257607f821691505b602082108103620003485762000347620002ea565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003b27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000373565b620003be868362000373565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200040b62000405620003ff84620003d6565b620003e0565b620003d6565b9050919050565b6000819050919050565b6200042783620003ea565b6200043f620004368262000412565b84845462000380565b825550505050565b600090565b6200045662000447565b620004638184846200041c565b505050565b5b818110156200048b576200047f6000826200044c565b60018101905062000469565b5050565b601f821115620004da57620004a4816200034e565b620004af8462000363565b81016020851015620004bf578190505b620004d7620004ce8562000363565b83018262000468565b50505b505050565b600082821c905092915050565b6000620004ff60001984600802620004df565b1980831691505092915050565b60006200051a8383620004ec565b9150826002028217905092915050565b6200053582620002b0565b67ffffffffffffffff811115620005515762000550620002bb565b5b6200055d825462000319565b6200056a8282856200048f565b600060209050601f831160018114620005a257600084156200058d578287015190505b6200059985826200050c565b86555062000609565b601f198416620005b2866200034e565b60005b82811015620005dc57848901518255600182019150602085019450602081019050620005b5565b86831015620005fc5784890151620005f8601f891682620004ec565b8355505b6001600288020188555050505b505050505050565b61310380620006216000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636f8b44b0116100f9578063a22cb46511610097578063c87b56dd11610071578063c87b56dd146104a5578063da3ef23f146104d5578063e985e9c5146104f1578063f2fde38b14610521576101a9565b8063a22cb4651461044f578063b88d4fde1461046b578063c668286214610487576101a9565b80638462151c116100d35780638462151c146103c75780638ba4cc3c146103f75780638da5cb5b1461041357806395d89b4114610431576101a9565b80636f8b44b01461037157806370a082311461038d578063715018a6146103bd576101a9565b806323b872dd1161016657806342842e0e1161014057806342842e0e146102ed57806345aeefde1461030957806355f804b3146103255780636352211e14610341576101a9565b806323b872dd146102825780632a55205a1461029e57806332cb6b0c146102cf576101a9565b806301ffc9a7146101ae57806306fdde03146101de578063081812fc146101fc578063095ea7b31461022c57806318160ddd146102485780631ebdcaae14610266575b600080fd5b6101c860048036038101906101c39190611f2a565b61053d565b6040516101d59190611f72565b60405180910390f35b6101e66105a5565b6040516101f3919061201d565b60405180910390f35b61021660048036038101906102119190612075565b610637565b60405161022391906120e3565b60405180910390f35b6102466004803603810190610241919061212a565b6106b3565b005b610250610859565b60405161025d9190612179565b60405180910390f35b610280600480360381019061027b91906121d8565b610870565b005b61029c60048036038101906102979190612205565b6108ac565b005b6102b860048036038101906102b39190612258565b6108bc565b6040516102c6929190612298565b60405180910390f35b6102d761092c565b6040516102e49190612179565b60405180910390f35b61030760048036038101906103029190612205565b610932565b005b610323600480360381019061031e91906122c1565b610952565b005b61033f600480360381019061033a9190612353565b61099d565b005b61035b60048036038101906103569190612075565b6109bb565b60405161036891906120e3565b60405180910390f35b61038b60048036038101906103869190612075565b6109cd565b005b6103a760048036038101906103a291906122c1565b6109df565b6040516103b49190612179565b60405180910390f35b6103c5610a73565b005b6103e160048036038101906103dc91906122c1565b610a87565b6040516103ee919061245e565b60405180910390f35b610411600480360381019061040c919061212a565b610b8c565b005b61041b610c05565b60405161042891906120e3565b60405180910390f35b610439610c2e565b604051610446919061201d565b60405180910390f35b610469600480360381019061046491906124ac565b610cc0565b005b6104856004803603810190610480919061261c565b610e37565b005b61048f610eaa565b60405161049c919061201d565b60405180910390f35b6104bf60048036038101906104ba9190612075565b610f38565b6040516104cc919061201d565b60405180910390f35b6104ef60048036038101906104ea9190612740565b610fe2565b005b61050b60048036038101906105069190612789565b610ffd565b6040516105189190611f72565b60405180910390f35b61053b600480360381019061053691906122c1565b611091565b005b6000632a55205a60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361059457600190506105a0565b61059d82611114565b90505b919050565b6060600380546105b4906127f8565b80601f01602080910402602001604051908101604052809291908181526020018280546105e0906127f8565b801561062d5780601f106106025761010080835404028352916020019161062d565b820191906000526020600020905b81548152906001019060200180831161061057829003601f168201915b5050505050905090565b6000610642826111a6565b610678576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006106be82611205565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610725576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107446112d1565b73ffffffffffffffffffffffffffffffffffffffff16146107a7576107708161076b6112d1565b610ffd565b6107a6576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826007600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006108636112d9565b6002546001540303905090565b6108786112de565b80600c60006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050565b6108b783838361135c565b505050565b600080600c8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612710600c60009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16856109179190612858565b61092191906128c9565b915091509250929050565b60095481565b61094d83838360405180602001604052806000815250610e37565b505050565b61095a6112de565b80600c806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6109a56112de565b8181600a91826109b6929190612ab1565b505050565b60006109c682611205565b9050919050565b6109d56112de565b8060098190555050565b6000806109eb83611721565b03610a22576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b610a7b6112de565b610a85600061172b565b565b60606000610a94836109df565b905060008167ffffffffffffffff811115610ab257610ab16124f1565b5b604051908082528060200260200182016040528015610ae05781602001602082028036833780820191505090505b5090506000805b8381108015610af857506009548211155b15610b80576000610b08836109bb565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b6c5782848381518110610b5157610b50612b81565b5b6020026020010181815250508180610b6890612bb0565b9250505b8280610b7790612bb0565b93505050610ae7565b82945050505050919050565b610b946112de565b600081118015610bb85750600954610baa610859565b82610bb59190612bf8565b11155b610bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bee90612c78565b60405180910390fd5b610c0182826117ef565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c3d906127f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610c69906127f8565b8015610cb65780601f10610c8b57610100808354040283529160200191610cb6565b820191906000526020600020905b815481529060010190602001808311610c9957829003601f168201915b5050505050905090565b610cc86112d1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d2c576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060086000610d396112d1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610de66112d1565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610e2b9190611f72565b60405180910390a35050565b610e4284848461135c565b60008373ffffffffffffffffffffffffffffffffffffffff163b14610ea457610e6d8484848461180d565b610ea3576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b600b8054610eb7906127f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee3906127f8565b8015610f305780601f10610f0557610100808354040283529160200191610f30565b820191906000526020600020905b815481529060010190602001808311610f1357829003601f168201915b505050505081565b6060610f43826111a6565b610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7990612d0a565b60405180910390fd5b6000610f8c61195d565b90506000815111610fac5760405180602001604052806000815250610fda565b80610fb6846119ef565b600b604051602001610fca93929190612de9565b6040516020818303038152906040525b915050919050565b610fea6112de565b80600b9081610ff99190612e1a565b5050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6110996112de565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ff90612f5e565b60405180910390fd5b6111118161172b565b50565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061116f57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061119f5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000816111b16112d9565b111580156111c0575060015482105b80156111fe575060007c0100000000000000000000000000000000000000000000000000000000600560008581526020019081526020016000205416145b9050919050565b600080829050806112146112d9565b1161129a576001548110156112995760006005600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603611297575b6000810361128d576005600083600190039350838152602001908152602001600020549050611263565b80925050506112cc565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b600033905090565b600090565b6112e6611abd565b73ffffffffffffffffffffffffffffffffffffffff16611304610c05565b73ffffffffffffffffffffffffffffffffffffffff161461135a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135190612fca565b60405180910390fd5b565b600061136782611205565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146113ce576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008573ffffffffffffffffffffffffffffffffffffffff166114276112d1565b73ffffffffffffffffffffffffffffffffffffffff1614806114565750611455866114506112d1565b610ffd565b5b8061149357506114646112d1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050806114cc576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114d786611721565b0361150e576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61151b8686866001611ac5565b600061152683611721565b14611562576007600085815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154600101919050819055507c020000000000000000000000000000000000000000000000000000000060a042901b61162987611721565b1717600560008681526020019081526020016000208190555060007c02000000000000000000000000000000000000000000000000000000008416036116b157600060018501905060006005600083815260200190815260200160002054036116af5760015481146116ae578360056000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46117198686866001611acb565b505050505050565b6000819050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611809828260405180602001604052806000815250611ad1565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026118336112d1565b8786866040518563ffffffff1660e01b8152600401611855949392919061303f565b6020604051808303816000875af192505050801561189157506040513d601f19601f8201168201806040525081019061188e91906130a0565b60015b61190a573d80600081146118c1576040519150601f19603f3d011682016040523d82523d6000602084013e6118c6565b606091505b506000815103611902576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600a805461196c906127f8565b80601f0160208091040260200160405190810160405280929190818152602001828054611998906127f8565b80156119e55780601f106119ba576101008083540402835291602001916119e5565b820191906000526020600020905b8154815290600101906020018083116119c857829003601f168201915b5050505050905090565b6060600060016119fe84611d61565b01905060008167ffffffffffffffff811115611a1d57611a1c6124f1565b5b6040519080825280601f01601f191660200182016040528015611a4f5781602001600182028036833780820191505090505b509050600082602001820190505b600115611ab2578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611aa657611aa561289a565b5b04945060008503611a5d575b819350505050919050565b600033905090565b50505050565b50505050565b600060015490506000611ae385611721565b03611b1a576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008303611b54576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b616000858386611ac5565b600160406001901b178302600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555060e1611bc660018514611eb4565b901b60a042901b611bd686611721565b1717600560008381526020019081526020016000208190555060008190506000848201905060008673ffffffffffffffffffffffffffffffffffffffff163b14611cda575b818673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611c8a600087848060010195508761180d565b611cc0576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808210611c1b578260015414611cd557600080fd5b611d45565b5b818060010192508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808210611cdb575b816001819055505050611d5b6000858386611acb565b50505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611dbf577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611db557611db461289a565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611dfc576d04ee2d6d415b85acef81000000008381611df257611df161289a565b5b0492506020810190505b662386f26fc100008310611e2b57662386f26fc100008381611e2157611e2061289a565b5b0492506010810190505b6305f5e1008310611e54576305f5e1008381611e4a57611e4961289a565b5b0492506008810190505b6127108310611e79576127108381611e6f57611e6e61289a565b5b0492506004810190505b60648310611e9c5760648381611e9257611e9161289a565b5b0492506002810190505b600a8310611eab576001810190505b80915050919050565b6000819050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611f0781611ed2565b8114611f1257600080fd5b50565b600081359050611f2481611efe565b92915050565b600060208284031215611f4057611f3f611ec8565b5b6000611f4e84828501611f15565b91505092915050565b60008115159050919050565b611f6c81611f57565b82525050565b6000602082019050611f876000830184611f63565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611fc7578082015181840152602081019050611fac565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fef82611f8d565b611ff98185611f98565b9350612009818560208601611fa9565b61201281611fd3565b840191505092915050565b600060208201905081810360008301526120378184611fe4565b905092915050565b6000819050919050565b6120528161203f565b811461205d57600080fd5b50565b60008135905061206f81612049565b92915050565b60006020828403121561208b5761208a611ec8565b5b600061209984828501612060565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120cd826120a2565b9050919050565b6120dd816120c2565b82525050565b60006020820190506120f860008301846120d4565b92915050565b612107816120c2565b811461211257600080fd5b50565b600081359050612124816120fe565b92915050565b6000806040838503121561214157612140611ec8565b5b600061214f85828601612115565b925050602061216085828601612060565b9150509250929050565b6121738161203f565b82525050565b600060208201905061218e600083018461216a565b92915050565b60006bffffffffffffffffffffffff82169050919050565b6121b581612194565b81146121c057600080fd5b50565b6000813590506121d2816121ac565b92915050565b6000602082840312156121ee576121ed611ec8565b5b60006121fc848285016121c3565b91505092915050565b60008060006060848603121561221e5761221d611ec8565b5b600061222c86828701612115565b935050602061223d86828701612115565b925050604061224e86828701612060565b9150509250925092565b6000806040838503121561226f5761226e611ec8565b5b600061227d85828601612060565b925050602061228e85828601612060565b9150509250929050565b60006040820190506122ad60008301856120d4565b6122ba602083018461216a565b9392505050565b6000602082840312156122d7576122d6611ec8565b5b60006122e584828501612115565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612313576123126122ee565b5b8235905067ffffffffffffffff8111156123305761232f6122f3565b5b60208301915083600182028301111561234c5761234b6122f8565b5b9250929050565b6000806020838503121561236a57612369611ec8565b5b600083013567ffffffffffffffff81111561238857612387611ecd565b5b612394858286016122fd565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6123d58161203f565b82525050565b60006123e783836123cc565b60208301905092915050565b6000602082019050919050565b600061240b826123a0565b61241581856123ab565b9350612420836123bc565b8060005b8381101561245157815161243888826123db565b9750612443836123f3565b925050600181019050612424565b5085935050505092915050565b600060208201905081810360008301526124788184612400565b905092915050565b61248981611f57565b811461249457600080fd5b50565b6000813590506124a681612480565b92915050565b600080604083850312156124c3576124c2611ec8565b5b60006124d185828601612115565b92505060206124e285828601612497565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61252982611fd3565b810181811067ffffffffffffffff82111715612548576125476124f1565b5b80604052505050565b600061255b611ebe565b90506125678282612520565b919050565b600067ffffffffffffffff821115612587576125866124f1565b5b61259082611fd3565b9050602081019050919050565b82818337600083830152505050565b60006125bf6125ba8461256c565b612551565b9050828152602081018484840111156125db576125da6124ec565b5b6125e684828561259d565b509392505050565b600082601f830112612603576126026122ee565b5b81356126138482602086016125ac565b91505092915050565b6000806000806080858703121561263657612635611ec8565b5b600061264487828801612115565b945050602061265587828801612115565b935050604061266687828801612060565b925050606085013567ffffffffffffffff81111561268757612686611ecd565b5b612693878288016125ee565b91505092959194509250565b600067ffffffffffffffff8211156126ba576126b96124f1565b5b6126c382611fd3565b9050602081019050919050565b60006126e36126de8461269f565b612551565b9050828152602081018484840111156126ff576126fe6124ec565b5b61270a84828561259d565b509392505050565b600082601f830112612727576127266122ee565b5b81356127378482602086016126d0565b91505092915050565b60006020828403121561275657612755611ec8565b5b600082013567ffffffffffffffff81111561277457612773611ecd565b5b61278084828501612712565b91505092915050565b600080604083850312156127a05761279f611ec8565b5b60006127ae85828601612115565b92505060206127bf85828601612115565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061281057607f821691505b602082108103612823576128226127c9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128638261203f565b915061286e8361203f565b925082820261287c8161203f565b9150828204841483151761289357612892612829565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006128d48261203f565b91506128df8361203f565b9250826128ef576128ee61289a565b5b828204905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026129677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261292a565b612971868361292a565b95508019841693508086168417925050509392505050565b6000819050919050565b60006129ae6129a96129a48461203f565b612989565b61203f565b9050919050565b6000819050919050565b6129c883612993565b6129dc6129d4826129b5565b848454612937565b825550505050565b600090565b6129f16129e4565b6129fc8184846129bf565b505050565b5b81811015612a2057612a156000826129e9565b600181019050612a02565b5050565b601f821115612a6557612a3681612905565b612a3f8461291a565b81016020851015612a4e578190505b612a62612a5a8561291a565b830182612a01565b50505b505050565b600082821c905092915050565b6000612a8860001984600802612a6a565b1980831691505092915050565b6000612aa18383612a77565b9150826002028217905092915050565b612abb83836128fa565b67ffffffffffffffff811115612ad457612ad36124f1565b5b612ade82546127f8565b612ae9828285612a24565b6000601f831160018114612b185760008415612b06578287013590505b612b108582612a95565b865550612b78565b601f198416612b2686612905565b60005b82811015612b4e57848901358255600182019150602085019450602081019050612b29565b86831015612b6b5784890135612b67601f891682612a77565b8355505b6001600288020188555050505b50505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612bbb8261203f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612bed57612bec612829565b5b600182019050919050565b6000612c038261203f565b9150612c0e8361203f565b9250828201905080821115612c2657612c25612829565b5b92915050565b7f4e6f7420656e6f756768206c6566740000000000000000000000000000000000600082015250565b6000612c62600f83611f98565b9150612c6d82612c2c565b602082019050919050565b60006020820190508181036000830152612c9181612c55565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000612cf4602f83611f98565b9150612cff82612c98565b604082019050919050565b60006020820190508181036000830152612d2381612ce7565b9050919050565b600081905092915050565b6000612d4082611f8d565b612d4a8185612d2a565b9350612d5a818560208601611fa9565b80840191505092915050565b60008154612d73816127f8565b612d7d8186612d2a565b94506001821660008114612d985760018114612dad57612de0565b60ff1983168652811515820286019350612de0565b612db685612905565b60005b83811015612dd857815481890152600182019150602081019050612db9565b838801955050505b50505092915050565b6000612df58286612d35565b9150612e018285612d35565b9150612e0d8284612d66565b9150819050949350505050565b612e2382611f8d565b67ffffffffffffffff811115612e3c57612e3b6124f1565b5b612e4682546127f8565b612e51828285612a24565b600060209050601f831160018114612e845760008415612e72578287015190505b612e7c8582612a95565b865550612ee4565b601f198416612e9286612905565b60005b82811015612eba57848901518255600182019150602085019450602081019050612e95565b86831015612ed75784890151612ed3601f891682612a77565b8355505b6001600288020188555050505b505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612f48602683611f98565b9150612f5382612eec565b604082019050919050565b60006020820190508181036000830152612f7781612f3b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fb4602083611f98565b9150612fbf82612f7e565b602082019050919050565b60006020820190508181036000830152612fe381612fa7565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061301182612fea565b61301b8185612ff5565b935061302b818560208601611fa9565b61303481611fd3565b840191505092915050565b600060808201905061305460008301876120d4565b61306160208301866120d4565b61306e604083018561216a565b81810360608301526130808184613006565b905095945050505050565b60008151905061309a81611efe565b92915050565b6000602082840312156130b6576130b5611ec8565b5b60006130c48482850161308b565b9150509291505056fea2646970667358221220d53d75e836735c6bf1ae7df6ec8b20cd7dc23552cadd66fa021cb943c019317c64736f6c63430008110033697066733a2f2f516d554551446f52663332383948773356317156625251577143786d6e776b585072414553474d5170554c7047592f