UNPKG

gotake-contracts

Version:

TypeChain generated types and ABIs for GoTake contracts

1,054 lines 63.4 kB
{ "_format": "hh-sol-artifact-1", "contractName": "ContentNFT", "sourceName": "contracts/ContentNFT.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "initialOwner", "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": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "string", "name": "seriesTitle", "type": "string" } ], "name": "ContentNFTMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "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": "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": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addMinter", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getMediaInfo", "outputs": [ { "components": [ { "internalType": "string", "name": "seriesTitle", "type": "string" }, { "internalType": "string", "name": "description", "type": "string" }, { "internalType": "uint256", "name": "totalSeasons", "type": "uint256" }, { "internalType": "uint256", "name": "totalEpisodes", "type": "uint256" }, { "internalType": "string[]", "name": "genres", "type": "string[]" }, { "internalType": "string[]", "name": "creators", "type": "string[]" }, { "internalType": "uint256", "name": "createdAt", "type": "uint256" }, { "internalType": "string", "name": "posterUri", "type": "string" } ], "internalType": "struct ContentNFT.MediaInfo", "name": "", "type": "tuple" } ], "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": "account", "type": "address" } ], "name": "isMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "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": "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": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "seriesTitle", "type": "string" }, { "internalType": "string", "name": "description", "type": "string" }, { "internalType": "uint256", "name": "totalSeasons", "type": "uint256" }, { "internalType": "uint256", "name": "totalEpisodes", "type": "uint256" }, { "internalType": "string[]", "name": "genres", "type": "string[]" }, { "internalType": "string[]", "name": "creators", "type": "string[]" }, { "internalType": "string", "name": "posterUri", "type": "string" } ], "name": "setMediaInfo", "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": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "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" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "updateTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b50604051612a03380380612a0383398101604081905261002f9161020a565b806040518060400160405280600b81526020016a10dbdb9d195b9d0813919560aa1b8152506040518060400160405280600781526020016610d3d39511539560ca1b815250816000908161008391906102d9565b50600161009082826102d9565b5050506001600160a01b0381166100c157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ca81610108565b506100d660008261015a565b506101017f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68261015a565b5050610397565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008281526008602090815260408083206001600160a01b038516845290915281205460ff166102005760008381526008602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101b83390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610204565b5060005b92915050565b60006020828403121561021c57600080fd5b81516001600160a01b038116811461023357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061026457607f821691505b60208210810361028457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102d457806000526020600020601f840160051c810160208510156102b15750805b601f840160051c820191505b818110156102d157600081556001016102bd565b50505b505050565b81516001600160401b038111156102f2576102f261023a565b610306816103008454610250565b8461028a565b6020601f82116001811461033a57600083156103225750848201515b600019600385901b1c1916600184901b1784556102d1565b600084815260208120601f198516915b8281101561036a578785015182556020948501946001909201910161034a565b50848210156103885786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b61265d806103a66000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80638462151c1161011a578063a22cb465116100ad578063d0def5211161007c578063d0def5211461044b578063d53913931461045e578063d547741f14610473578063e985e9c514610486578063f2fde38b1461049957600080fd5b8063a22cb465146103ff578063aa271e1a14610412578063b88d4fde14610425578063c87b56dd1461043857600080fd5b806395d89b41116100e957806395d89b41146103bc578063983b2d56146103c4578063a1bffc20146103d7578063a217fddf146103f757600080fd5b80638462151c146103655780638da5cb5b14610385578063910076271461039657806391d14854146103a957600080fd5b80632f2ff15d1161019257806342842e0e1161016157806342842e0e146103245780636352211e1461033757806370a082311461034a578063715018a61461035d57600080fd5b80632f2ff15d146102d85780632f745c59146102eb5780633092afd5146102fe57806336568abe1461031157600080fd5b806318160ddd116101ce57806318160ddd1461027d57806318e97fd11461028f57806323b872dd146102a2578063248a9ca3146102b557600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004611d59565b6104ac565b60405190151581526020015b60405180910390f35b6102306104bd565b60405161021f9190611dc6565b61025061024b366004611dd9565b61054f565b6040516001600160a01b03909116815260200161021f565b61027b610276366004611e0e565b610578565b005b6009545b60405190815260200161021f565b61027b61029d366004611ef9565b610587565b61027b6102b0366004611f3f565b610640565b6102816102c3366004611dd9565b60009081526008602052604090206001015490565b61027b6102e6366004611f7c565b6106cb565b6102816102f9366004611e0e565b6106f0565b61027b61030c366004611fa8565b61080a565b61027b61031f366004611f7c565b61082a565b61027b610332366004611f3f565b610862565b610250610345366004611dd9565b61087d565b610281610358366004611fa8565b610888565b61027b6108d0565b610378610373366004611fa8565b6108e4565b60405161021f9190611fc3565b6007546001600160a01b0316610250565b61027b6103a43660046120a2565b61097b565b6102136103b7366004611f7c565b610af7565b610230610b22565b61027b6103d2366004611fa8565b610b31565b6103ea6103e5366004611dd9565b610b51565b60405161021f9190612202565b610281600081565b61027b61040d3660046122bf565b610f73565b610213610420366004611fa8565b610f7e565b61027b6104333660046122fb565b610f98565b610230610446366004611dd9565b610fb0565b610281610459366004612376565b6110c1565b61028160008051602061260883398151915281565b61027b610481366004611f7c565b6111ce565b6102136104943660046123ad565b6111f3565b61027b6104a7366004611fa8565b611221565b60006104b78261125f565b92915050565b6060600080546104cc906123d7565b80601f01602080910402602001604051908101604052809291908181526020018280546104f8906123d7565b80156105455780601f1061051a57610100808354040283529160200191610545565b820191906000526020600020905b81548152906001019060200180831161052857829003601f168201915b5050505050905090565b600061055a82611284565b506000828152600460205260409020546001600160a01b03166104b7565b6105838282336112bd565b5050565b6000828152600260205260409020546001600160a01b03166105c45760405162461bcd60e51b81526004016105bb90612411565b60405180910390fd5b336105ce8361087d565b6001600160a01b0316146106365760405162461bcd60e51b815260206004820152602960248201527f436f6e74656e744e46543a2063616c6c6572206973206e6f742074686520746f60448201526835b2b71037bbb732b960b91b60648201526084016105bb565b61058382826112ca565b6001600160a01b03821661066a57604051633250574960e11b8152600060048201526024016105bb565b600061067783833361131a565b9050836001600160a01b0316816001600160a01b0316146106c5576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016105bb565b50505050565b6000828152600860205260409020600101546106e681611348565b6106c58383611352565b60006106fb83610888565b82106107495760405162461bcd60e51b815260206004820152601f60248201527f436f6e74656e744e46543a20696e646578206f7574206f6620626f756e64730060448201526064016105bb565b6000805b6009548110156107c1576000818152600260205260409020546001600160a01b0316151580156107965750846001600160a01b031661078b8261087d565b6001600160a01b0316145b156107b9578382036107ab5791506104b79050565b816107b581612446565b9250505b60010161074d565b5060405162461bcd60e51b815260206004820152601f60248201527f436f6e74656e744e46543a20696e646578206f7574206f6620626f756e64730060448201526064016105bb565b6108126113e6565b61058360008051602061260883398151915282611413565b6001600160a01b03811633146108535760405163334bd91960e11b815260040160405180910390fd5b61085d8282611413565b505050565b61085d83838360405180602001604052806000815250610f98565b60006104b782611284565b60006001600160a01b0382166108b4576040516322718ad960e21b8152600060048201526024016105bb565b506001600160a01b031660009081526003602052604090205490565b6108d86113e6565b6108e26000611480565b565b606060006108f183610888565b90506000816001600160401b0381111561090d5761090d611e38565b604051908082528060200260200182016040528015610936578160200160208202803683370190505b50905060005b828110156109735761094e85826106f0565b8282815181106109605761096061246d565b602090810291909101015260010161093c565b509392505050565b6000888152600260205260409020546001600160a01b03166109af5760405162461bcd60e51b81526004016105bb90612411565b336109b98961087d565b6001600160a01b031614806109e157506109e160008051602061260883398151915233610af7565b806109f657506007546001600160a01b031633145b610a745760405162461bcd60e51b815260206004820152604360248201527f436f6e74656e744e46543a2063616c6c6572206973206e6f742074686520746f60448201527f6b656e206f776e65722c206d696e746572206f7220636f6e7472616374206f776064820152623732b960e91b608482015260a4016105bb565b6000888152600a6020526040902080610a8d89826124ca565b5060018101610a9c88826124ca565b5060028101869055600381018590558351610ac09060048301906020870190611c86565b508251610ad69060058301906020860190611c86565b5060078101610ae583826124ca565b50426006909101555050505050505050565b60009182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600180546104cc906123d7565b610b396113e6565b61058360008051602061260883398151915282611352565b610b9960405180610100016040528060608152602001606081526020016000815260200160008152602001606081526020016060815260200160008152602001606081525090565b6000828152600260205260409020546001600160a01b0316610bcd5760405162461bcd60e51b81526004016105bb90612411565b6000828152600a60205260409081902081516101008101909252805482908290610bf6906123d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610c22906123d7565b8015610c6f5780601f10610c4457610100808354040283529160200191610c6f565b820191906000526020600020905b815481529060010190602001808311610c5257829003601f168201915b50505050508152602001600182018054610c88906123d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb4906123d7565b8015610d015780601f10610cd657610100808354040283529160200191610d01565b820191906000526020600020905b815481529060010190602001808311610ce457829003601f168201915b50505050508152602001600282015481526020016003820154815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610def578382906000526020600020018054610d62906123d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8e906123d7565b8015610ddb5780601f10610db057610100808354040283529160200191610ddb565b820191906000526020600020905b815481529060010190602001808311610dbe57829003601f168201915b505050505081526020019060010190610d43565b50505050815260200160058201805480602002602001604051908101604052809291908181526020016000905b82821015610ec8578382906000526020600020018054610e3b906123d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610e67906123d7565b8015610eb45780601f10610e8957610100808354040283529160200191610eb4565b820191906000526020600020905b815481529060010190602001808311610e9757829003601f168201915b505050505081526020019060010190610e1c565b50505050815260200160068201548152602001600782018054610eea906123d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610f16906123d7565b8015610f635780601f10610f3857610100808354040283529160200191610f63565b820191906000526020600020905b815481529060010190602001808311610f4657829003601f168201915b5050505050815250509050919050565b6105833383836114d2565b60006104b760008051602061260883398151915283610af7565b610fa3848484610640565b6106c53385858585611571565b6060610fbb82611284565b5060008281526006602052604081208054610fd5906123d7565b80601f0160208091040260200160405190810160405280929190818152602001828054611001906123d7565b801561104e5780601f106110235761010080835404028352916020019161104e565b820191906000526020600020905b81548152906001019060200180831161103157829003601f168201915b50505050509050600061106c60408051602081019091526000815290565b9050805160000361107e575092915050565b8151156110b0578082604051602001611098929190612588565b60405160208183030381529060405292505050919050565b6110b98461169c565b949350505050565b60006110db60008051602061260883398151915233610af7565b806110f057506007546001600160a01b031633145b6111505760405162461bcd60e51b815260206004820152602b60248201527f436f6e74656e744e46543a2063616c6c6572206973206e6f742061206d696e7460448201526a32b91037b91037bbb732b960a91b60648201526084016105bb565b60098054908190600061116283612446565b91905055506111718482611711565b61117b81846112ca565b836001600160a01b0316817f4035356391214621947460ac9dfe2dee225b995412ba8b97e7091198ba1a2e026040516111bf90602080825260009082015260400190565b60405180910390a39392505050565b6000828152600860205260409020600101546111e981611348565b6106c58383611413565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6112296113e6565b6001600160a01b03811661125357604051631e4fbdf760e01b8152600060048201526024016105bb565b61125c81611480565b50565b60006001600160e01b03198216637965db0b60e01b14806104b757506104b78261172b565b6000818152600260205260408120546001600160a01b0316806104b757604051637e27328960e01b8152600481018490526024016105bb565b61085d8383836001611750565b60008281526006602052604090206112e282826124ca565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b6000828152600260205260408120546001600160a01b03168161133e868686611856565b9695505050505050565b61125c813361194f565b600061135e8383610af7565b6113de5760008381526008602090815260408083206001600160a01b03861684529091529020805460ff191660011790556113963390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016104b7565b5060006104b7565b6007546001600160a01b031633146108e25760405163118cdaa760e01b81523360048201526024016105bb565b600061141f8383610af7565b156113de5760008381526008602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016104b7565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661150457604051630b61174360e31b81526001600160a01b03831660048201526024016105bb565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561169557604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906115b39088908890879087906004016125b7565b6020604051808303816000875af19250505080156115ee575060408051601f3d908101601f191682019092526115eb918101906125ea565b60015b611657573d80801561161c576040519150601f19603f3d011682016040523d82523d6000602084013e611621565b606091505b50805160000361164f57604051633250574960e11b81526001600160a01b03851660048201526024016105bb565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461169357604051633250574960e11b81526001600160a01b03851660048201526024016105bb565b505b5050505050565b60606116a782611284565b5060006116bf60408051602081019091526000815290565b905060008151116116df576040518060200160405280600081525061170a565b806116e984611988565b6040516020016116fa929190612588565b6040516020818303038152906040525b9392505050565b610583828260405180602001604052806000815250611a1a565b60006001600160e01b03198216632483248360e11b14806104b757506104b782611a32565b808061176457506001600160a01b03821615155b1561182657600061177484611284565b90506001600160a01b038316158015906117a05750826001600160a01b0316816001600160a01b031614155b80156117b357506117b181846111f3565b155b156117dc5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016105bb565b81156118245783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6000828152600260205260408120546001600160a01b039081169083161561188357611883818486611a82565b6001600160a01b038116156118c1576118a0600085600080611750565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156118f0576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6119598282610af7565b6105835760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016105bb565b6060600061199583611ae6565b60010190506000816001600160401b038111156119b4576119b4611e38565b6040519080825280601f01601f1916602001820160405280156119de576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846119e857509392505050565b611a248383611bbe565b61085d336000858585611571565b60006001600160e01b031982166380ac58cd60e01b1480611a6357506001600160e01b03198216635b5e139f60e01b145b806104b757506301ffc9a760e01b6001600160e01b03198316146104b7565b611a8d838383611c23565b61085d576001600160a01b038316611abb57604051637e27328960e01b8152600481018290526024016105bb565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016105bb565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611b255772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611b51576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611b6f57662386f26fc10000830492506010015b6305f5e1008310611b87576305f5e100830492506008015b6127108310611b9b57612710830492506004015b60648310611bad576064830492506002015b600a83106104b75760010192915050565b6001600160a01b038216611be857604051633250574960e11b8152600060048201526024016105bb565b6000611bf68383600061131a565b90506001600160a01b0381161561085d576040516339e3563760e11b8152600060048201526024016105bb565b60006001600160a01b038316158015906110b95750826001600160a01b0316846001600160a01b03161480611c5d5750611c5d84846111f3565b806110b95750506000908152600460205260409020546001600160a01b03908116911614919050565b828054828255906000526020600020908101928215611ccc579160200282015b82811115611ccc5782518290611cbc90826124ca565b5091602001919060010190611ca6565b50611cd8929150611cdc565b5090565b80821115611cd8576000611cf08282611cf9565b50600101611cdc565b508054611d05906123d7565b6000825580601f10611d15575050565b601f01602090049060005260206000209081019061125c91905b80821115611cd85760008155600101611d2f565b6001600160e01b03198116811461125c57600080fd5b600060208284031215611d6b57600080fd5b813561170a81611d43565b60005b83811015611d91578181015183820152602001611d79565b50506000910152565b60008151808452611db2816020860160208601611d76565b601f01601f19169290920160200192915050565b60208152600061170a6020830184611d9a565b600060208284031215611deb57600080fd5b5035919050565b80356001600160a01b0381168114611e0957600080fd5b919050565b60008060408385031215611e2157600080fd5b611e2a83611df2565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611e7657611e76611e38565b604052919050565b6000806001600160401b03841115611e9857611e98611e38565b50601f8301601f1916602001611ead81611e4e565b915050828152838383011115611ec257600080fd5b828260208301376000602084830101529392505050565b600082601f830112611eea57600080fd5b61170a83833560208501611e7e565b60008060408385031215611f0c57600080fd5b8235915060208301356001600160401b03811115611f2957600080fd5b611f3585828601611ed9565b9150509250929050565b600080600060608486031215611f5457600080fd5b611f5d84611df2565b9250611f6b60208501611df2565b929592945050506040919091013590565b60008060408385031215611f8f57600080fd5b82359150611f9f60208401611df2565b90509250929050565b600060208284031215611fba57600080fd5b61170a82611df2565b602080825282518282018190526000918401906040840190835b81811015611ffb578351835260209384019390920191600101611fdd565b509095945050505050565b600082601f83011261201757600080fd5b81356001600160401b0381111561203057612030611e38565b8060051b61204060208201611e4e565b9182526020818501810192908101908684111561205c57600080fd5b6020860192505b8383101561133e5782356001600160401b0381111561208157600080fd5b612090886020838a0101611ed9565b83525060209283019290910190612063565b600080600080600080600080610100898b0312156120bf57600080fd5b8835975060208901356001600160401b038111156120dc57600080fd5b6120e88b828c01611ed9565b97505060408901356001600160401b0381111561210457600080fd5b6121108b828c01611ed9565b965050606089013594506080890135935060a08901356001600160401b0381111561213a57600080fd5b6121468b828c01612006565b93505060c08901356001600160401b0381111561216257600080fd5b61216e8b828c01612006565b92505060e08901356001600160401b0381111561218a57600080fd5b6121968b828c01611ed9565b9150509295985092959890939650565b600082825180855260208501945060208160051b8301016020850160005b838110156121f657601f198584030188526121e0838351611d9a565b60209889019890935091909101906001016121c4565b50909695505050505050565b60208152600082516101006020840152612220610120840182611d9a565b90506020840151601f1984830301604085015261223d8282611d9a565b91505060408401516060840152606084015160808401526080840151601f198483030160a085015261226f82826121a6565b91505060a0840151601f198483030160c085015261228d82826121a6565b91505060c084015160e084015260e0840151601f19848303016101008501526122b68282611d9a565b95945050505050565b600080604083850312156122d257600080fd5b6122db83611df2565b9150602083013580151581146122f057600080fd5b809150509250929050565b6000806000806080858703121561231157600080fd5b61231a85611df2565b935061232860208601611df2565b92506040850135915060608501356001600160401b0381111561234a57600080fd5b8501601f8101871361235b57600080fd5b61236a87823560208401611e7e565b91505092959194509250565b6000806040838503121561238957600080fd5b61239283611df2565b915060208301356001600160401b03811115611f2957600080fd5b600080604083850312156123c057600080fd5b6123c983611df2565b9150611f9f60208401611df2565b600181811c908216806123eb57607f821691505b60208210810361240b57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f436f6e74656e744e46543a20746f6b656e20646f6573206e6f74206578697374604082015260600190565b60006001820161246657634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fd5b601f82111561085d57806000526020600020601f840160051c810160208510156124aa5750805b601f840160051c820191505b8181101561169557600081556001016124b6565b81516001600160401b038111156124e3576124e3611e38565b6124f7816124f184546123d7565b84612483565b6020601f82116001811461252b57600083156125135750848201515b600019600385901b1c1916600184901b178455611695565b600084815260208120601f198516915b8281101561255b578785015182556020948501946001909201910161253b565b50848210156125795786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6000835161259a818460208801611d76565b8351908301906125ae818360208801611d76565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061133e90830184611d9a565b6000602082840312156125fc57600080fd5b815161170a81611d4356fe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220796e6538b16611a84505214cb494f3e648194e556f941aba106a65bda136941164736f6c634300081c0033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80638462151c1161011a578063a22cb465116100ad578063d0def5211161007c578063d0def5211461044b578063d53913931461045e578063d547741f14610473578063e985e9c514610486578063f2fde38b1461049957600080fd5b8063a22cb465146103ff578063aa271e1a14610412578063b88d4fde14610425578063c87b56dd1461043857600080fd5b806395d89b41116100e957806395d89b41146103bc578063983b2d56146103c4578063a1bffc20146103d7578063a217fddf146103f757600080fd5b80638462151c146103655780638da5cb5b14610385578063910076271461039657806391d14854146103a957600080fd5b80632f2ff15d1161019257806342842e0e1161016157806342842e0e146103245780636352211e1461033757806370a082311461034a578063715018a61461035d57600080fd5b80632f2ff15d146102d85780632f745c59146102eb5780633092afd5146102fe57806336568abe1461031157600080fd5b806318160ddd116101ce57806318160ddd1461027d57806318e97fd11461028f57806323b872dd146102a2578063248a9ca3146102b557600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004611d59565b6104ac565b60405190151581526020015b60405180910390f35b6102306104bd565b60405161021f9190611dc6565b61025061024b366004611dd9565b61054f565b6040516001600160a01b03909116815260200161021f565b61027b610276366004611e0e565b610578565b005b6009545b60405190815260200161021f565b61027b61029d366004611ef9565b610587565b61027b6102b0366004611f3f565b610640565b6102816102c3366004611dd9565b60009081526008602052604090206001015490565b61027b6102e6366004611f7c565b6106cb565b6102816102f9366004611e0e565b6106f0565b61027b61030c366004611fa8565b61080a565b61027b61031f366004611f7c565b61082a565b61027b610332366004611f3f565b610862565b610250610345366004611dd9565b61087d565b610281610358366004611fa8565b610888565b61027b6108d0565b610378610373366004611fa8565b6108e4565b60405161021f9190611fc3565b6007546001600160a01b0316610250565b61027b6103a43660046120a2565b61097b565b6102136103b7366004611f7c565b610af7565b610230610b22565b61027b6103d2366004611fa8565b610b31565b6103ea6103e5366004611dd9565b610b51565b60405161021f9190612202565b610281600081565b61027b61040d3660046122bf565b610f73565b610213610420366004611fa8565b610f7e565b61027b6104333660046122fb565b610f98565b610230610446366004611dd9565b610fb0565b610281610459366004612376565b6110c1565b61028160008051602061260883398151915281565b61027b610481366004611f7c565b6111ce565b6102136104943660046123ad565b6111f3565b61027b6104a7366004611fa8565b611221565b60006104b78261125f565b92915050565b6060600080546104cc906123d7565b80601f01602080910402602001604051908101604052809291908181526020018280546104f8906123d7565b80156105455780601f1061051a57610100808354040283529160200191610545565b820191906000526020600020905b81548152906001019060200180831161052857829003601f168201915b5050505050905090565b600061055a82611284565b506000828152600460205260409020546001600160a01b03166104b7565b6105838282336112bd565b5050565b6000828152600260205260409020546001600160a01b03166105c45760405162461bcd60e51b81526004016105bb90612411565b60405180910390fd5b336105ce8361087d565b6001600160a01b0316146106365760405162461bcd60e51b815260206004820152602960248201527f436f6e74656e744e46543a2063616c6c6572206973206e6f742074686520746f60448201526835b2b71037bbb732b960b91b60648201526084016105bb565b61058382826112ca565b6001600160a01b03821661066a57604051633250574960e11b8152600060048201526024016105bb565b600061067783833361131a565b9050836001600160a01b0316816001600160a01b0316146106c5576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016105bb565b50505050565b6000828152600860205260409020600101546106e681611348565b6106c58383611352565b60006106fb83610888565b82106107495760405162461bcd60e51b815260206004820152601f60248201527f436f6e74656e744e46543a20696e646578206f7574206f6620626f756e64730060448201526064016105bb565b6000805b6009548110156107c1576000818152600260205260409020546001600160a01b0316151580156107965750846001600160a01b031661078b8261087d565b6001600160a01b0316145b156107b9578382036107ab5791506104b79050565b816107b581612446565b9250505b60010161074d565b5060405162461bcd60e51b815260206004820152601f60248201527f436f6e74656e744e46543a20696e646578206f7574206f6620626f756e64730060448201526064016105bb565b6108126113e6565b61058360008051602061260883398151915282611413565b6001600160a01b03811633146108535760405163334bd91960e11b815260040160405180910390fd5b61085d8282611413565b505050565b61085d83838360405180602001604052806000815250610f98565b60006104b782611284565b60006001600160a01b0382166108b4576040516322718ad960e21b8152600060048201526024016105bb565b506001600160a01b031660009081526003602052604090205490565b6108d86113e6565b6108e26000611480565b565b606060006108f183610888565b90506000816001600160401b0381111561090d5761090d611e38565b604051908082528060200260200182016040528015610936578160200160208202803683370190505b50905060005b828110156109735761094e85826106f0565b8282815181106109605761096061246d565b602090810291909101015260010161093c565b509392505050565b6000888152600260205260409020546001600160a01b03166109af5760405162461bcd60e51b81526004016105bb90612411565b336109b98961087d565b6001600160a01b031614806109e157506109e160008051602061260883398151915233610af7565b806109f657506007546001600160a01b031633145b610a745760405162461bcd60e51b815260206004820152604360248201527f436f6e74656e744e46543a2063616c6c6572206973206e6f742074686520746f60448201527f6b656e206f776e65722c206d696e746572206f7220636f6e7472616374206f776064820152623732b960e91b608482015260a4016105bb565b6000888152600a6020526040902080610a8d89826124ca565b5060018101610a9c88826124ca565b5060028101869055600381018590558351610ac09060048301906020870190611c86565b508251610ad69060058301906020860190611c86565b5060078101610ae583826124ca565b50426006909101555050505050505050565b60009182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600180546104cc906123d7565b610b396113e6565b61058360008051602061260883398151915282611352565b610b9960405180610100016040528060608152602001606081526020016000815260200160008152602001606081526020016060815260200160008152602001606081525090565b6000828152600260205260409020546001600160a01b0316610bcd5760405162461bcd60e51b81526004016105bb90612411565b6000828152600a60205260409081902081516101008101909252805482908290610bf6906123d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610c22906123d7565b8015610c6f5780601f10610c4457610100808354040283529160200191610c6f565b820191906000526020600020905b815481529060010190602001808311610c5257829