gotake-contracts
Version:
TypeChain generated types and ABIs for GoTake contracts
1,036 lines • 61.5 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "IPNFT",
"sourceName": "contracts/IPNFT.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": "MediaNFTMinted",
"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 IPNFT.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"
}
],
"bytecode": "0x608060405234801561001057600080fd5b506040516128a23803806128a283398101604081905261002f9161020d565b806040518060400160405280601081526020016f1359591a584814d95c9a595cc813919560821b815250604051806040016040528060058152602001644d4544494160d81b815250816000908161008691906102dc565b50600161009382826102dc565b5050506001600160a01b0381166100c457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100cd8161010b565b506100d960008261015d565b506101047f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68261015d565b505061039a565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008281526008602090815260408083206001600160a01b038516845290915281205460ff166102035760008381526008602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101bb3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610207565b5060005b92915050565b60006020828403121561021f57600080fd5b81516001600160a01b038116811461023657600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061026757607f821691505b60208210810361028757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102d757806000526020600020601f840160051c810160208510156102b45750805b601f840160051c820191505b818110156102d457600081556001016102c0565b50505b505050565b81516001600160401b038111156102f5576102f561023d565b610309816103038454610253565b8461028d565b6020601f82116001811461033d57600083156103255750848201515b600019600385901b1c1916600184901b1784556102d4565b600084815260208120601f198516915b8281101561036d578785015182556020948501946001909201910161034d565b508482101561038b5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6124f9806103a96000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638da5cb5b1161010f578063aa271e1a116100a2578063d539139311610071578063d539139314610440578063d547741f14610455578063e985e9c514610468578063f2fde38b1461047b57600080fd5b8063aa271e1a146103f4578063b88d4fde14610407578063c87b56dd1461041a578063d0def5211461042d57600080fd5b8063983b2d56116100de578063983b2d56146103a6578063a1bffc20146103b9578063a217fddf146103d9578063a22cb465146103e157600080fd5b80638da5cb5b14610367578063910076271461037857806391d148541461038b57806395d89b411461039e57600080fd5b80632f745c59116101875780636352211e116101565780636352211e1461031957806370a082311461032c578063715018a61461033f5780638462151c1461034757600080fd5b80632f745c59146102cd5780633092afd5146102e057806336568abe146102f357806342842e0e1461030657600080fd5b806318160ddd116101c357806318160ddd1461027257806323b872dd14610284578063248a9ca3146102975780632f2ff15d146102ba57600080fd5b806301ffc9a7146101f557806306fdde031461021d578063081812fc14610232578063095ea7b31461025d575b600080fd5b610208610203366004611c10565b61048e565b60405190151581526020015b60405180910390f35b61022561049f565b6040516102149190611c7d565b610245610240366004611c90565b610531565b6040516001600160a01b039091168152602001610214565b61027061026b366004611cc5565b61055a565b005b6009545b604051908152602001610214565b610270610292366004611cef565b610569565b6102766102a5366004611c90565b60009081526008602052604090206001015490565b6102706102c8366004611d2c565b6105f9565b6102766102db366004611cc5565b61061e565b6102706102ee366004611d58565b610738565b610270610301366004611d2c565b610758565b610270610314366004611cef565b610790565b610245610327366004611c90565b6107ab565b61027661033a366004611d58565b6107b6565b6102706107fe565b61035a610355366004611d58565b610812565b6040516102149190611d73565b6007546001600160a01b0316610245565b610270610386366004611f1d565b6108a9565b610208610399366004611d2c565b6109d9565b610225610a04565b6102706103b4366004611d58565b610a13565b6103cc6103c7366004611c90565b610a33565b604051610214919061207d565b610276600081565b6102706103ef366004612131565b610e85565b610208610402366004611d58565b610e90565b61027061041536600461216d565b610eaa565b610225610428366004611c90565b610ec2565b61027661043b3660046121e8565b610fd3565b6102766000805160206124a483398151915281565b610270610463366004611d2c565b61109c565b610208610476366004612235565b6110c1565b610270610489366004611d58565b6110ef565b60006104998261112d565b92915050565b6060600080546104ae9061225f565b80601f01602080910402602001604051908101604052809291908181526020018280546104da9061225f565b80156105275780601f106104fc57610100808354040283529160200191610527565b820191906000526020600020905b81548152906001019060200180831161050a57829003601f168201915b5050505050905090565b600061053c82611152565b506000828152600460205260409020546001600160a01b0316610499565b61056582823361118b565b5050565b6001600160a01b03821661059857604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006105a5838333611198565b9050836001600160a01b0316816001600160a01b0316146105f3576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161058f565b50505050565b600082815260086020526040902060010154610614816111af565b6105f383836111b9565b6000610629836107b6565b82106106775760405162461bcd60e51b815260206004820152601d60248201527f4d656469614e46543a20696e646578206f7574206f6620626f756e6473000000604482015260640161058f565b6000805b6009548110156106ef576000818152600260205260409020546001600160a01b0316151580156106c45750846001600160a01b03166106b9826107ab565b6001600160a01b0316145b156106e7578382036106d95791506104999050565b816106e381612299565b9250505b60010161067b565b5060405162461bcd60e51b815260206004820152601d60248201527f4d656469614e46543a20696e646578206f7574206f6620626f756e6473000000604482015260640161058f565b61074061124d565b6105656000805160206124a48339815191528261127a565b6001600160a01b03811633146107815760405163334bd91960e11b815260040160405180910390fd5b61078b828261127a565b505050565b61078b83838360405180602001604052806000815250610eaa565b600061049982611152565b60006001600160a01b0382166107e2576040516322718ad960e21b81526000600482015260240161058f565b506001600160a01b031660009081526003602052604090205490565b61080661124d565b61081060006112e7565b565b6060600061081f836107b6565b90506000816001600160401b0381111561083b5761083b611db6565b604051908082528060200260200182016040528015610864578160200160208202803683370190505b50905060005b828110156108a15761087c858261061e565b82828151811061088e5761088e6122c0565b602090810291909101015260010161086a565b509392505050565b6108c16000805160206124a4833981519152336109d9565b806108d657506007546001600160a01b031633145b6108f25760405162461bcd60e51b815260040161058f906122d6565b6000888152600260205260409020546001600160a01b03166109565760405162461bcd60e51b815260206004820152601e60248201527f4d656469614e46543a20746f6b656e20646f6573206e6f742065786973740000604482015260640161058f565b6000888152600a602052604090208061096f8982612366565b506001810161097e8882612366565b50600281018690556003810185905583516109a29060048301906020870190611b3d565b5082516109b89060058301906020860190611b3d565b50600781016109c78382612366565b50426006909101555050505050505050565b60009182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600180546104ae9061225f565b610a1b61124d565b6105656000805160206124a4833981519152826111b9565b610a7b60405180610100016040528060608152602001606081526020016000815260200160008152602001606081526020016060815260200160008152602001606081525090565b6000828152600260205260409020546001600160a01b0316610adf5760405162461bcd60e51b815260206004820152601e60248201527f4d656469614e46543a20746f6b656e20646f6573206e6f742065786973740000604482015260640161058f565b6000828152600a60205260409081902081516101008101909252805482908290610b089061225f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b349061225f565b8015610b815780601f10610b5657610100808354040283529160200191610b81565b820191906000526020600020905b815481529060010190602001808311610b6457829003601f168201915b50505050508152602001600182018054610b9a9061225f565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc69061225f565b8015610c135780601f10610be857610100808354040283529160200191610c13565b820191906000526020600020905b815481529060010190602001808311610bf657829003601f168201915b50505050508152602001600282015481526020016003820154815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610d01578382906000526020600020018054610c749061225f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca09061225f565b8015610ced5780601f10610cc257610100808354040283529160200191610ced565b820191906000526020600020905b815481529060010190602001808311610cd057829003601f168201915b505050505081526020019060010190610c55565b50505050815260200160058201805480602002602001604051908101604052809291908181526020016000905b82821015610dda578382906000526020600020018054610d4d9061225f565b80601f0160208091040260200160405190810160405280929190818152602001828054610d799061225f565b8015610dc65780601f10610d9b57610100808354040283529160200191610dc6565b820191906000526020600020905b815481529060010190602001808311610da957829003601f168201915b505050505081526020019060010190610d2e565b50505050815260200160068201548152602001600782018054610dfc9061225f565b80601f0160208091040260200160405190810160405280929190818152602001828054610e289061225f565b8015610e755780601f10610e4a57610100808354040283529160200191610e75565b820191906000526020600020905b815481529060010190602001808311610e5857829003601f168201915b5050505050815250509050919050565b610565338383611339565b60006104996000805160206124a4833981519152836109d9565b610eb5848484610569565b6105f333858585856113d8565b6060610ecd82611152565b5060008281526006602052604081208054610ee79061225f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f139061225f565b8015610f605780601f10610f3557610100808354040283529160200191610f60565b820191906000526020600020905b815481529060010190602001808311610f4357829003601f168201915b505050505090506000610f7e60408051602081019091526000815290565b90508051600003610f90575092915050565b815115610fc2578082604051602001610faa929190612424565b60405160208183030381529060405292505050919050565b610fcb84611503565b949350505050565b6000610fed6000805160206124a4833981519152336109d9565b8061100257506007546001600160a01b031633145b61101e5760405162461bcd60e51b815260040161058f906122d6565b60098054908190600061103083612299565b919050555061103f8482611578565b6110498184611592565b836001600160a01b0316817fd2c7e6084a0b10fe5be2264345f2dab2ce0c0c015d1f14434f85bb2b53c4c3f860405161108d90602080825260009082015260400190565b60405180910390a39392505050565b6000828152600860205260409020600101546110b7816111af565b6105f3838361127a565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6110f761124d565b6001600160a01b03811661112157604051631e4fbdf760e01b81526000600482015260240161058f565b61112a816112e7565b50565b60006001600160e01b03198216637965db0b60e01b14806104995750610499826115e2565b6000818152600260205260408120546001600160a01b03168061049957604051637e27328960e01b81526004810184905260240161058f565b61078b8383836001611607565b6000806111a685858561170d565b95945050505050565b61112a8133611806565b60006111c583836109d9565b6112455760008381526008602090815260408083206001600160a01b03861684529091529020805460ff191660011790556111fd3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610499565b506000610499565b6007546001600160a01b031633146108105760405163118cdaa760e01b815233600482015260240161058f565b600061128683836109d9565b156112455760008381526008602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610499565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661136b57604051630b61174360e31b81526001600160a01b038316600482015260240161058f565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156114fc57604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061141a908890889087908790600401612453565b6020604051808303816000875af1925050508015611455575060408051601f3d908101601f1916820190925261145291810190612486565b60015b6114be573d808015611483576040519150601f19603f3d011682016040523d82523d6000602084013e611488565b606091505b5080516000036114b657604051633250574960e11b81526001600160a01b038516600482015260240161058f565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146114fa57604051633250574960e11b81526001600160a01b038516600482015260240161058f565b505b5050505050565b606061150e82611152565b50600061152660408051602081019091526000815290565b905060008151116115465760405180602001604052806000815250611571565b806115508461183f565b604051602001611561929190612424565b6040516020818303038152906040525b9392505050565b6105658282604051806020016040528060008152506118d1565b60008281526006602052604090206115aa8282612366565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b60006001600160e01b03198216632483248360e11b14806104995750610499826118e9565b808061161b57506001600160a01b03821615155b156116dd57600061162b84611152565b90506001600160a01b038316158015906116575750826001600160a01b0316816001600160a01b031614155b801561166a575061166881846110c1565b155b156116935760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161058f565b81156116db5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6000828152600260205260408120546001600160a01b039081169083161561173a5761173a818486611939565b6001600160a01b0381161561177857611757600085600080611607565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156117a7576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b61181082826109d9565b6105655760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161058f565b6060600061184c8361199d565b60010190506000816001600160401b0381111561186b5761186b611db6565b6040519080825280601f01601f191660200182016040528015611895576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461189f57509392505050565b6118db8383611a75565b61078b3360008585856113d8565b60006001600160e01b031982166380ac58cd60e01b148061191a57506001600160e01b03198216635b5e139f60e01b145b8061049957506301ffc9a760e01b6001600160e01b0319831614610499565b611944838383611ada565b61078b576001600160a01b03831661197257604051637e27328960e01b81526004810182905260240161058f565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161058f565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106119dc5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611a08576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611a2657662386f26fc10000830492506010015b6305f5e1008310611a3e576305f5e100830492506008015b6127108310611a5257612710830492506004015b60648310611a64576064830492506002015b600a83106104995760010192915050565b6001600160a01b038216611a9f57604051633250574960e11b81526000600482015260240161058f565b6000611aad83836000611198565b90506001600160a01b0381161561078b576040516339e3563760e11b81526000600482015260240161058f565b60006001600160a01b03831615801590610fcb5750826001600160a01b0316846001600160a01b03161480611b145750611b1484846110c1565b80610fcb5750506000908152600460205260409020546001600160a01b03908116911614919050565b828054828255906000526020600020908101928215611b83579160200282015b82811115611b835782518290611b739082612366565b5091602001919060010190611b5d565b50611b8f929150611b93565b5090565b80821115611b8f576000611ba78282611bb0565b50600101611b93565b508054611bbc9061225f565b6000825580601f10611bcc575050565b601f01602090049060005260206000209081019061112a91905b80821115611b8f5760008155600101611be6565b6001600160e01b03198116811461112a57600080fd5b600060208284031215611c2257600080fd5b813561157181611bfa565b60005b83811015611c48578181015183820152602001611c30565b50506000910152565b60008151808452611c69816020860160208601611c2d565b601f01601f19169290920160200192915050565b6020815260006115716020830184611c51565b600060208284031215611ca257600080fd5b5035919050565b80356001600160a01b0381168114611cc057600080fd5b919050565b60008060408385031215611cd857600080fd5b611ce183611ca9565b946020939093013593505050565b600080600060608486031215611d0457600080fd5b611d0d84611ca9565b9250611d1b60208501611ca9565b929592945050506040919091013590565b60008060408385031215611d3f57600080fd5b82359150611d4f60208401611ca9565b90509250929050565b600060208284031215611d6a57600080fd5b61157182611ca9565b602080825282518282018190526000918401906040840190835b81811015611dab578351835260209384019390920191600101611d8d565b509095945050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611df457611df4611db6565b604052919050565b6000806001600160401b03841115611e1657611e16611db6565b50601f8301601f1916602001611e2b81611dcc565b915050828152838383011115611e4057600080fd5b828260208301376000602084830101529392505050565b600082601f830112611e6857600080fd5b61157183833560208501611dfc565b600082601f830112611e8857600080fd5b81356001600160401b03811115611ea157611ea1611db6565b8060051b611eb160208201611dcc565b91825260208185018101929081019086841115611ecd57600080fd5b6020860192505b83831015611f135782356001600160401b03811115611ef257600080fd5b611f01886020838a0101611e57565b83525060209283019290910190611ed4565b9695505050505050565b600080600080600080600080610100898b031215611f3a57600080fd5b8835975060208901356001600160401b03811115611f5757600080fd5b611f638b828c01611e57565b97505060408901356001600160401b03811115611f7f57600080fd5b611f8b8b828c01611e57565b965050606089013594506080890135935060a08901356001600160401b03811115611fb557600080fd5b611fc18b828c01611e77565b93505060c08901356001600160401b03811115611fdd57600080fd5b611fe98b828c01611e77565b92505060e08901356001600160401b0381111561200557600080fd5b6120118b828c01611e57565b9150509295985092959890939650565b600082825180855260208501945060208160051b8301016020850160005b8381101561207157601f1985840301885261205b838351611c51565b602098890198909350919091019060010161203f565b50909695505050505050565b6020815260008251610100602084015261209b610120840182611c51565b90506020840151601f198483030160408501526120b88282611c51565b91505060408401516060840152606084015160808401526080840151601f198483030160a08501526120ea8282612021565b91505060a0840151601f198483030160c08501526121088282612021565b91505060c084015160e084015260e0840151601f19848303016101008501526111a68282611c51565b6000806040838503121561214457600080fd5b61214d83611ca9565b91506020830135801515811461216257600080fd5b809150509250929050565b6000806000806080858703121561218357600080fd5b61218c85611ca9565b935061219a60208601611ca9565b92506040850135915060608501356001600160401b038111156121bc57600080fd5b8501601f810187136121cd57600080fd5b6121dc87823560208401611dfc565b91505092959194509250565b600080604083850312156121fb57600080fd5b61220483611ca9565b915060208301356001600160401b0381111561221f57600080fd5b61222b85828601611e57565b9150509250929050565b6000806040838503121561224857600080fd5b61225183611ca9565b9150611d4f60208401611ca9565b600181811c9082168061227357607f821691505b60208210810361229357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600182016122b957634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fd5b60208082526029908201527f4d656469614e46543a2063616c6c6572206973206e6f742061206d696e7465726040820152681037b91037bbb732b960b91b606082015260800190565b601f82111561078b57806000526020600020601f840160051c810160208510156123465750805b601f840160051c820191505b818110156114fc5760008155600101612352565b81516001600160401b0381111561237f5761237f611db6565b6123938161238d845461225f565b8461231f565b6020601f8211600181146123c757600083156123af5750848201515b600019600385901b1c1916600184901b1784556114fc565b600084815260208120601f198516915b828110156123f757878501518255602094850194600190920191016123d7565b50848210156124155786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60008351612436818460208801611c2d565b83519083019061244a818360208801611c2d565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611f1390830184611c51565b60006020828403121561249857600080fd5b815161157181611bfa56fe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a264697066735822122044ef0d95ff67b264fda018eed878af63f53872fd8b8e992d872953b4934bac1b64736f6c634300081c0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80638da5cb5b1161010f578063aa271e1a116100a2578063d539139311610071578063d539139314610440578063d547741f14610455578063e985e9c514610468578063f2fde38b1461047b57600080fd5b8063aa271e1a146103f4578063b88d4fde14610407578063c87b56dd1461041a578063d0def5211461042d57600080fd5b8063983b2d56116100de578063983b2d56146103a6578063a1bffc20146103b9578063a217fddf146103d9578063a22cb465146103e157600080fd5b80638da5cb5b14610367578063910076271461037857806391d148541461038b57806395d89b411461039e57600080fd5b80632f745c59116101875780636352211e116101565780636352211e1461031957806370a082311461032c578063715018a61461033f5780638462151c1461034757600080fd5b80632f745c59146102cd5780633092afd5146102e057806336568abe146102f357806342842e0e1461030657600080fd5b806318160ddd116101c357806318160ddd1461027257806323b872dd14610284578063248a9ca3146102975780632f2ff15d146102ba57600080fd5b806301ffc9a7146101f557806306fdde031461021d578063081812fc14610232578063095ea7b31461025d575b600080fd5b610208610203366004611c10565b61048e565b60405190151581526020015b60405180910390f35b61022561049f565b6040516102149190611c7d565b610245610240366004611c90565b610531565b6040516001600160a01b039091168152602001610214565b61027061026b366004611cc5565b61055a565b005b6009545b604051908152602001610214565b610270610292366004611cef565b610569565b6102766102a5366004611c90565b60009081526008602052604090206001015490565b6102706102c8366004611d2c565b6105f9565b6102766102db366004611cc5565b61061e565b6102706102ee366004611d58565b610738565b610270610301366004611d2c565b610758565b610270610314366004611cef565b610790565b610245610327366004611c90565b6107ab565b61027661033a366004611d58565b6107b6565b6102706107fe565b61035a610355366004611d58565b610812565b6040516102149190611d73565b6007546001600160a01b0316610245565b610270610386366004611f1d565b6108a9565b610208610399366004611d2c565b6109d9565b610225610a04565b6102706103b4366004611d58565b610a13565b6103cc6103c7366004611c90565b610a33565b604051610214919061207d565b610276600081565b6102706103ef366004612131565b610e85565b610208610402366004611d58565b610e90565b61027061041536600461216d565b610eaa565b610225610428366004611c90565b610ec2565b61027661043b3660046121e8565b610fd3565b6102766000805160206124a483398151915281565b610270610463366004611d2c565b61109c565b610208610476366004612235565b6110c1565b610270610489366004611d58565b6110ef565b60006104998261112d565b92915050565b6060600080546104ae9061225f565b80601f01602080910402602001604051908101604052809291908181526020018280546104da9061225f565b80156105275780601f106104fc57610100808354040283529160200191610527565b820191906000526020600020905b81548152906001019060200180831161050a57829003601f168201915b5050505050905090565b600061053c82611152565b506000828152600460205260409020546001600160a01b0316610499565b61056582823361118b565b5050565b6001600160a01b03821661059857604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006105a5838333611198565b9050836001600160a01b0316816001600160a01b0316146105f3576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161058f565b50505050565b600082815260086020526040902060010154610614816111af565b6105f383836111b9565b6000610629836107b6565b82106106775760405162461bcd60e51b815260206004820152601d60248201527f4d656469614e46543a20696e646578206f7574206f6620626f756e6473000000604482015260640161058f565b6000805b6009548110156106ef576000818152600260205260409020546001600160a01b0316151580156106c45750846001600160a01b03166106b9826107ab565b6001600160a01b0316145b156106e7578382036106d95791506104999050565b816106e381612299565b9250505b60010161067b565b5060405162461bcd60e51b815260206004820152601d60248201527f4d656469614e46543a20696e646578206f7574206f6620626f756e6473000000604482015260640161058f565b61074061124d565b6105656000805160206124a48339815191528261127a565b6001600160a01b03811633146107815760405163334bd91960e11b815260040160405180910390fd5b61078b828261127a565b505050565b61078b83838360405180602001604052806000815250610eaa565b600061049982611152565b60006001600160a01b0382166107e2576040516322718ad960e21b81526000600482015260240161058f565b506001600160a01b031660009081526003602052604090205490565b61080661124d565b61081060006112e7565b565b6060600061081f836107b6565b90506000816001600160401b0381111561083b5761083b611db6565b604051908082528060200260200182016040528015610864578160200160208202803683370190505b50905060005b828110156108a15761087c858261061e565b82828151811061088e5761088e6122c0565b602090810291909101015260010161086a565b509392505050565b6108c16000805160206124a4833981519152336109d9565b806108d657506007546001600160a01b031633145b6108f25760405162461bcd60e51b815260040161058f906122d6565b6000888152600260205260409020546001600160a01b03166109565760405162461bcd60e51b815260206004820152601e60248201527f4d656469614e46543a20746f6b656e20646f6573206e6f742065786973740000604482015260640161058f565b6000888152600a602052604090208061096f8982612366565b506001810161097e8882612366565b50600281018690556003810185905583516109a29060048301906020870190611b3d565b5082516109b89060058301906020860190611b3d565b50600781016109c78382612366565b50426006909101555050505050505050565b60009182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600180546104ae9061225f565b610a1b61124d565b6105656000805160206124a4833981519152826111b9565b610a7b60405180610100016040528060608152602001606081526020016000815260200160008152602001606081526020016060815260200160008152602001606081525090565b6000828152600260205260409020546001600160a01b0316610adf5760405162461bcd60e51b815260206004820152601e60248201527f4d656469614e46543a20746f6b656e20646f6573206e6f742065786973740000604482015260640161058f565b6000828152600a60205260409081902081516101008101909252805482908290610b089061225f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b349061225f565b8015610b815780601f10610b5657610100808354040283529160200191610b81565b820191906000526020600020905b815481529060010190602001808311610b6457829003601f168201915b50505050508152602001600182018054610b9a9061225f565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc69061225f565b8015610c135780601f10610be857610100808354040283529160200191610c13565b820191906000526020600020905b815481529060010190602001808311610bf657829003601f168201915b50505050508152602001600282015481526020016003820154815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610d01578382906000526020600020018054610c749061225f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca09061225f565b8015610ced5780601f10610cc257610100808354040283529160200191610ced565b820191906000526020600020905b815481529060010190602001808311610cd057829003601f168201915b505050505081526020019060010190610c55565b50505050815260200160058201805480602002602001604051908101604052809291908181526020016000905b82821015610dda578382906000526020600020018054610d4d9061225f565b80601f0160208091040260200160405190810160405280929190818152602001828054610d799061225f565b8015610dc65780601f10610d9b57610100808354040283529160200191610dc6565b820191906000526020600020905b815481529060010190602001808311610da957829003601f168201915b505050505081526020019060010190610d2e565b50505050815260200160068201548152602001600782018054610dfc9061225f565b80601f0160208091040260200160405190810160405280929190818152602001828054610e289061225f565b8015610e755780601f10610e4a57610100808354040283529160200191610e75565b820191906000526020600020905b815481529060010190602001808311610e5857829003601f168201915b5050505050815250509050919050565b610565338383611339