[ { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_royalties", "type": "address" }, { "internalType": "address", "name": "_wrappingContract", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint256", "name": "_supply", "type": "uint256" }, { "internalType": "string", "name": "_baseTokenUri", "type": "string" }, { "internalType": "bool", "name": "_addJsonExtension", "type": "bool" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyExists", "type": "error" }, { "inputs": [], "name": "InvalidOwner", "type": "error" }, { "inputs": [], "name": "InvalidRecipient", "type": "error" }, { "inputs": [], "name": "InvalidSender", "type": "error" }, { "inputs": [], "name": "NotFound", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "UnsafeRecipient", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ERC20Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ERC721Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "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": "id", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "accountNFTBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "addJsonExtension", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amountOrId", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "availableIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseTokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contract", "type": "address" } ], "name": "contractNFTBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contract", "type": "address" } ], "name": "contractTokenBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contract", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "enoughTokenBalance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "listAvailableIds", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "nftExists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC721Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "revokeOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "royaltyAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "amount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royaltyReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "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": "id", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_addJsonExtension", "type": "bool" } ], "name": "setAddJsonExtension", "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": "_baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_royaltyAmount", "type": "uint256" } ], "name": "setRoyaltyAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_royaltyReceiver", "type": "address" } ], "name": "setRoyaltyReceiver", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bool", "name": "state", "type": "bool" } ], "name": "setWhitelist", "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": "bool", "name": "state", "type": "bool" } ], "name": "toggleTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAvailableIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalNativeSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "unwrap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "unwrapSet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whitelist", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" }, { "internalType": "bool", "name": "isWhitelisted", "type": "bool" } ], "name": "whitelistAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "wrap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "wrapSet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "wrappedNFTSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "wrappingContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60e06040526012805461ffff60a01b191690553480156200001f57600080fd5b50604051620031c1380380620031c183398101604081905262000042916200026f565b8484601285898c806001600160a01b03811662000072576040516349e27cff60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180556004620000cd8782620003e5565b506005620000dc8682620003e5565b5060ff8416608081905260c0849052600280546001600160a01b0319166001600160a01b0385161790556200011390600a620005c6565b6200011f9084620005de565b60a05250601094506200013b9350869250849150620003e59050565b50601280546101f4601155911515600160a81b02600161ff0160a01b03199092166001600160a01b0390981697909717179095555062000600945050505050565b80516001600160a01b03811681146200019457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001c157600080fd5b81516001600160401b0380821115620001de57620001de62000199565b604051601f8301601f19908116603f0116810190828211818310171562000209576200020962000199565b816040528381526020925086838588010111156200022657600080fd5b600091505b838210156200024a57858201830151818301840152908201906200022b565b600093810190920192909252949350505050565b805180151581146200019457600080fd5b600080600080600080600080610100898b0312156200028d57600080fd5b62000298896200017c565b9750620002a860208a016200017c565b9650620002b860408a016200017c565b60608a01519096506001600160401b0380821115620002d657600080fd5b620002e48c838d01620001af565b965060808b0151915080821115620002fb57600080fd5b620003098c838d01620001af565b955060a08b0151945060c08b01519150808211156200032757600080fd5b50620003368b828c01620001af565b9250506200034760e08a016200025e565b90509295985092959890939650565b600181811c908216806200036b57607f821691505b6020821081036200038c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003e057600081815260208120601f850160051c81016020861015620003bb5750805b601f850160051c820191505b81811015620003dc57828155600101620003c7565b5050505b505050565b81516001600160401b0381111562000401576200040162000199565b620004198162000412845462000356565b8462000392565b602080601f831160018114620004515760008415620004385750858301515b600019600386901b1c1916600185901b178555620003dc565b600085815260208120601f198616915b82811015620004825788860151825594840194600190910190840162000461565b5085821015620004a15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000508578160001904821115620004ec57620004ec620004b1565b80851615620004fa57918102915b93841c9390800290620004cc565b509250929050565b6000826200052157506001620005c0565b816200053057506000620005c0565b8160018114620005495760028114620005545762000574565b6001915050620005c0565b60ff841115620005685762000568620004b1565b50506001821b620005c0565b5060208310610133831016604e8410600b841016171562000599575081810a620005c0565b620005a58383620004c7565b8060001904821115620005bc57620005bc620004b1565b0290505b92915050565b6000620005d760ff84168362000510565b9392505050565b6000816000190483118215151615620005fb57620005fb620004b1565b500290565b60805160a05160c051612b836200063e6000396000818161057b01526108cb015260006103bb01526000818161049301526117460152612b836000f3fe608060405234801561001057600080fd5b50600436106102d65760003560e01c8063850c23dc11610182578063b9a45aac116100e9578063d547cfb7116100a2578063e985e9c51161007c578063e985e9c51461074f578063ea598cb01461077d578063ef1f3ebb14610790578063f2fde38b146107b957600080fd5b8063d547cfb714610709578063dd62ed3e14610711578063de0e9a3e1461073c57600080fd5b8063b9a45aac1461067e578063b9f77bdf14610691578063c87b56dd146106a5578063ca5994db146106b8578063cb6205e4146106cb578063d528d118146106f657600080fd5b80639b19251a1161013b5780639b19251a146105fc5780639fbc87131461061f578063a22cb46514610632578063a9059cbb14610645578063b0faefdd14610658578063b88d4fde1461066b57600080fd5b8063850c23dc1461059d57806386ca1618146105a65780638da5cb5b146105bb5780638dc251e3146105ce57806395d89b41146105e157806397151657146105e957600080fd5b80632a55205a1161024157806353d6fd59116101fa57806366e3e5e4116101d457806366e3e5e41461053a57806370a082311461054d5780637c6e551d1461056d57806381456f481461057657600080fd5b806353d6fd591461050157806355f804b3146105145780636352211e1461052757600080fd5b80632a55205a146104545780632b96895814610486578063313ce5671461048e57806342842e0e146104c75780634ada218b146104da5780634f07de09146104ee57600080fd5b806318160ddd1161029357806318160ddd146103b65780631ae24366146103dd578063201f3517146103f05780632276e3781461041957806323b872dd1461042e57806326560be71461044157600080fd5b806301ffc9a7146102db57806304bdc76b1461030357806306fdde0314610315578063081812fc1461032a578063095ea7b31461036b578063150b7a021461037e575b600080fd5b6102ee6102e93660046122a6565b6107cc565b60405190151581526020015b60405180910390f35b600f545b6040519081526020016102fa565b61031d610839565b6040516102fa91906122e7565b61035361033836600461231a565b6008602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102fa565b6102ee610379366004612348565b6108c7565b61039d61038c366004612374565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016102fa565b6103077f000000000000000000000000000000000000000000000000000000000000000081565b6102ee6103eb366004612348565b610a35565b6103076103fe366004612413565b6001600160a01b03166000908152600b602052604090205490565b61042c610427366004612440565b610a4a565b005b6102ee61043c36600461245b565b610a92565b61042c61044f366004612440565b610b52565b61046761046236600461249c565b610b9a565b604080516001600160a01b0390931683526020830191909152016102fa565b61042c610bd4565b6104b57f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016102fa565b61042c6104d536600461245b565b610c3a565b6012546102ee90600160a01b900460ff1681565b61042c6104fc36600461231a565b610d15565b61042c61050f3660046124be565b610d44565b61042c61052236600461253a565b610d99565b61035361053536600461231a565b610dd3565b610307610548366004612413565b610e0e565b61030761055b366004612413565b60066020526000908152604090205481565b61030760115481565b6103077f000000000000000000000000000000000000000000000000000000000000000081565b61030760035481565b6105ae610e5e565b6040516102fa91906125cf565b600054610353906001600160a01b031681565b61042c6105dc366004612413565b610eb6565b61031d610f02565b61042c6105f7366004612613565b610f0f565b6102ee61060a366004612413565b600e6020526000908152604090205460ff1681565b601254610353906001600160a01b031681565b61042c6106403660046124be565b610f64565b6102ee610653366004612348565b610fd0565b600254610353906001600160a01b031681565b61042c610679366004612374565b610fe4565b61042c61068c3660046124be565b6110af565b6012546102ee90600160a81b900460ff1681565b61031d6106b336600461231a565b611104565b61042c6106c6366004612613565b611171565b6102ee6106d936600461231a565b6000908152600a60205260409020546001600160a01b0316151590565b61030761070436600461231a565b6111b9565b61031d6111da565b61030761071f3660046126b9565b600760209081526000928352604080842090915290825290205481565b61042c61074a36600461231a565b6111e7565b6102ee61075d3660046126b9565b600960209081526000928352604080842090915290825290205460ff1681565b61042c61078b36600461231a565b611201565b61030761079e366004612413565b6001600160a01b03166000908152600c602052604090205490565b61042c6107c7366004612413565b611212565b60006001600160e01b031982166380ac58cd60e01b14806107fd57506001600160e01b03198216635b5e139f60e01b145b8061081857506001600160e01b0319821663152a902d60e11b145b8061083357506301ffc9a760e01b6001600160e01b03198316145b92915050565b60048054610846906126f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610872906126f2565b80156108bf5780601f10610894576101008083540402835291602001916108bf565b820191906000526020600020905b8154815290600101906020018083116108a257829003601f168201915b505050505081565b60007f000000000000000000000000000000000000000000000000000000000000000082111580156108f95750600082115b156109d0576000828152600a60205260409020546001600160a01b031633811480159061094a57506001600160a01b038116600090815260096020908152604080832033845290915290205460ff16155b15610967576040516282b42960e81b815260040160405180910390fd5b60008381526008602090815260409182902080546001600160a01b0319166001600160a01b038881169182179092559251868152908416917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350610a2c565b3360008181526007602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50600192915050565b600081610a4184610e0e565b10159392505050565b6000546001600160a01b03163314610a74576040516282b42960e81b815260040160405180910390fd5b60128054911515600160a81b0260ff60a81b19909216919091179055565b6001600160a01b038316600090815260076020908152604080832033845290915281205482811015610b035760405162461bcd60e51b81526020600482015260156024820152742737ba1032b737bab3b41030b63637bbb0b731b29760591b60448201526064015b60405180910390fd5b6000198114610b3b57610b168382612742565b6001600160a01b03861660009081526007602090815260408083203384529091529020555b610b468585856112ae565b50600195945050505050565b6000546001600160a01b03163314610b7c576040516282b42960e81b815260040160405180910390fd5b60128054911515600160a01b0260ff60a01b19909216919091179055565b60125460115460009182916001600160a01b039091169061271090610bbf9086612755565b610bc99190612774565b915091509250929050565b6000546001600160a01b03163314610bfe576040516282b42960e81b815260040160405180910390fd5b600080546001600160a01b031916815560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3565b610c46338484846114e3565b6001600160a01b0382163b15801590610cf25750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610cc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce59190612796565b6001600160e01b03191614155b15610d1057604051633da6393160e01b815260040160405180910390fd5b505050565b6000546001600160a01b03163314610d3f576040516282b42960e81b815260040160405180910390fd5b601155565b6000546001600160a01b03163314610d6e576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610dc3576040516282b42960e81b815260040160405180910390fd5b6010610dcf8282612801565b5050565b6000818152600a60205260409020546001600160a01b031680610e095760405163c5723b5160e01b815260040160405180910390fd5b919050565b6000610e1861173f565b6001600160a01b0383166000908152600c6020526040902054610e3b9190612755565b6001600160a01b0383166000908152600660205260409020546108339190612742565b6060600f805480602002602001604051908101604052809291908181526020018280548015610eac57602002820191906000526020600020905b815481526020019060010190808311610e98575b5050505050905090565b6000546001600160a01b03163314610ee0576040516282b42960e81b815260040160405180910390fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b60058054610846906126f2565b610f17611771565b60005b8151811015610f5757610f45828281518110610f3857610f386128c1565b60200260200101516117ca565b80610f4f816128d7565b915050610f1a565b50610f6160018055565b50565b3360008181526009602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000610fdd3384846112ae565b9392505050565b610ff0338686866114e3565b6001600160a01b0384163b1580159061108a5750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a029061103a9033908a908990899089906004016128f0565b6020604051808303816000875af1158015611059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107d9190612796565b6001600160e01b03191614155b156110a857604051633da6393160e01b815260040160405180910390fd5b5050505050565b6000546001600160a01b031633146110d9576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b606060006010611113846119d9565b604051602001611124929190612944565b60408051808303601f19018152919052601254909150600160a81b900460ff1615610833578060405160200161115a91906129cb565b604051602081830303815290604052905092915050565b611179611771565b60005b8151811015610f57576111a782828151811061119a5761119a6128c1565b6020026020010151611a6c565b806111b1816128d7565b91505061117c565b600f81815481106111c957600080fd5b600091825260209091200154905081565b60108054610846906126f2565b6111ef611771565b6111f881611a6c565b610f6160018055565b611209611771565b6111f8816117ca565b6000546001600160a01b0316331461123c576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116611263576040516349e27cff60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006112bb848484611bdc565b833b1561131a57816112cc85610e0e565b101561131a5760405162461bcd60e51b815260206004820152601960248201527f4e6f7420656e6f75676820746f6b656e2062616c616e63652e000000000000006044820152606401610afa565b600061132461173f565b6001600160a01b038087166000818152600660205260408082208054948a16835290822054928252939450919290918691906113608386612742565b90915550506001600160a01b038616600090815260066020526040902080548601905561138c87611cd1565b15806113af57506001600160a01b0387166000908152600b602052604090205415155b15611417576001600160a01b0387166000908152600660205260408120546113d8908590612774565b6113e28585612774565b6113ec9190612742565b905060005b818110156114145761140289611cfa565b8061140c816128d7565b9150506113f1565b50505b61142086611cd1565b6114895760006114308483612774565b6001600160a01b038816600090815260066020526040902054611454908690612774565b61145e9190612742565b905060005b818110156114865761147488611e42565b8061147e816128d7565b915050611463565b50505b856001600160a01b0316876001600160a01b03167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487876040516114ce91815260200190565b60405180910390a35060019695505050505050565b6000818152600a60205260409020546001600160a01b038481169116146115405760405162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b31027232a1760791b6044820152606401610afa565b6001600160a01b0382166115965760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742073656e6420746f206e756c6c20616464726573732e000000006044820152606401610afa565b826001600160a01b0316846001600160a01b031614806115db57506001600160a01b0380841660009081526009602090815260408083209388168352929052205460ff165b806115ff57506000818152600860205260409020546001600160a01b038581169116145b61164b5760405162461bcd60e51b815260206004820152601960248201527f4f70657261746f72206973206e6f7420617070726f7665642e000000000000006044820152606401610afa565b61165361173f565b6001600160a01b0384166000908152600660205260408120805490919061167b908490612742565b90915550611689905061173f565b6001600160a01b0383166000908152600660205260409020805490910190556116b28382611f2d565b6116bc82826120fd565b80826001600160a01b0316846001600160a01b0316600080516020612b2e83398151915260405160405180910390a4816001600160a01b0316836001600160a01b03167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e03148761172861173f565b60405190815260200160405180910390a350505050565b600061176c7f0000000000000000000000000000000000000000000000000000000000000000600a612ad8565b905090565b6002600154036117c35760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610afa565b6002600155565b6000818152600a60205260409020546001600160a01b03161561182f5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f742077726170206578697374696e6720746f6b656e2e00000000006044820152606401610afa565b6002546040516331a9108f60e11b8152600481018390526001600160a01b039091169033908290636352211e90602401602060405180830381865afa15801561187c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a09190612ae7565b6001600160a01b0316146118f65760405162461bcd60e51b815260206004820152601a60248201527f596f7520646f206e6f74206f776e207468617420746f6b656e2e0000000000006044820152606401610afa565b6118fe61173f565b611909906001612755565b3360009081526006602052604081208054909190611928908490612b04565b925050819055506001600360008282546119429190612b04565b90915550611952905033836120fd565b604051632142170760e11b8152336004820152306024820152604481018390526001600160a01b038216906342842e0e90606401600060405180830381600087803b1580156119a057600080fd5b505af11580156119b4573d6000803e3d6000fd5b5050604051849250339150600090600080516020612b2e833981519152908290a45050565b606060006119e6836121b8565b600101905060008167ffffffffffffffff811115611a0657611a066124f3565b6040519080825280601f01601f191660200182016040528015611a30576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611a3a57509392505050565b33611a7682610dd3565b6001600160a01b031614611acc5760405162461bcd60e51b815260206004820152601a60248201527f596f7520646f206e6f74206f776e207468617420746f6b656e2e0000000000006044820152606401610afa565b611ad461173f565b611adf906001612755565b3360009081526006602052604081208054909190611afe908490612742565b92505081905550600160036000828254611b189190612742565b90915550611b2890503382611f2d565b6000818152600d60209081526040808320839055600a9091529081902080546001600160a01b03191690556002549051632142170760e11b8152306004820152336024820152604481018390526001600160a01b03909116906342842e0e90606401600060405180830381600087803b158015611ba457600080fd5b505af1158015611bb8573d6000803e3d6000fd5b5050604051839250600091503390600080516020612b2e833981519152908390a450565b601254600090600160a01b900460ff1680611c0457506000546001600160a01b038581169116145b80611c1c57506000546001600160a01b038481169116145b80611c3f57506001600160a01b03841660009081526013602052604090205460ff165b80611c6257506001600160a01b03831660009081526013602052604090205460ff165b905080611ccb5760405162461bcd60e51b815260206004820152603160248201527f54726164696e67206973206e6f7420656e61626c6564206f72206164647265736044820152701cc81b9bdd081dda1a5d195b1a5cdd1959607a1b6064820152608401610afa565b50505050565b6001600160a01b0381166000908152600e602052604081205460ff16806108335750813b610833565b6001600160a01b038116611d2157604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b0381166000908152600b602052604081208054611d4790600190612742565b81548110611d5757611d576128c1565b90600052602060002001549050600b6000836001600160a01b03166001600160a01b03168152602001908152602001600020805480611d9857611d98612b17565b600082815260208082208301600019908101839055909201909255828252600d81526040808320839055600a825280832080546001600160a01b031990811690915560089092528083208054909216909155600f80546001810182559083527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80201839055518291906001600160a01b03851690600080516020612b2e833981519152908390a45050565b6001600160a01b038116611e6957604051634e46966960e11b815260040160405180910390fd5b600f805460009190611e7d90600190612742565b81548110611e8d57611e8d6128c1565b90600052602060002001549050600f805480611eab57611eab612b17565b600082815260208082208301600019908101839055909201909255828252600a905260409020546001600160a01b031615611ef95760405163119b4fd360e11b815260040160405180910390fd5b611f0382826120fd565b60405181906001600160a01b03841690600090600080516020612b2e833981519152908290a45050565b6000823b15612000576001600160a01b0383166000908152600c602052604090208054611f5c90600190612742565b81548110611f6c57611f6c6128c1565b60009182526020808320909101546001600160a01b0386168352600c82526040808420868552600d90935290922054815492935083928110611fb057611fb06128c1565b60009182526020808320909101929092556001600160a01b0385168152600c90915260409020805480611fe557611fe5612b17565b600190038181906000526020600020016000905590556120c6565b6001600160a01b0383166000908152600b60205260409020805461202690600190612742565b81548110612036576120366128c1565b60009182526020808320909101546001600160a01b0386168352600b82526040808420868552600d9093529092205481549293508392811061207a5761207a6128c1565b60009182526020808320909101929092556001600160a01b0385168152600b909152604090208054806120af576120af612b17565b600190038181906000526020600020016000905590555b6000828152600d6020908152604080832054938352808320939093559281526008909252902080546001600160a01b031916905550565b6000818152600a6020526040902080546001600160a01b0319166001600160a01b038416179055813b1561217b576001600160a01b0382166000818152600c602090815260408220805460018181018355828552928420018590559290915290546121689190612742565b6000828152600d60205260409020555050565b6001600160a01b0382166000818152600b602090815260408220805460018181018355828552928420018590559290915290546121689190612742565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106121f75772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612223576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061224157662386f26fc10000830492506010015b6305f5e1008310612259576305f5e100830492506008015b612710831061226d57612710830492506004015b6064831061227f576064830492506002015b600a83106108335760010192915050565b6001600160e01b031981168114610f6157600080fd5b6000602082840312156122b857600080fd5b8135610fdd81612290565b60005b838110156122de5781810151838201526020016122c6565b50506000910152565b60208152600082518060208401526123068160408501602087016122c3565b601f01601f19169190910160400192915050565b60006020828403121561232c57600080fd5b5035919050565b6001600160a01b0381168114610f6157600080fd5b6000806040838503121561235b57600080fd5b823561236681612333565b946020939093013593505050565b60008060008060006080868803121561238c57600080fd5b853561239781612333565b945060208601356123a781612333565b935060408601359250606086013567ffffffffffffffff808211156123cb57600080fd5b818801915088601f8301126123df57600080fd5b8135818111156123ee57600080fd5b89602082850101111561240057600080fd5b9699959850939650602001949392505050565b60006020828403121561242557600080fd5b8135610fdd81612333565b80358015158114610e0957600080fd5b60006020828403121561245257600080fd5b610fdd82612430565b60008060006060848603121561247057600080fd5b833561247b81612333565b9250602084013561248b81612333565b929592945050506040919091013590565b600080604083850312156124af57600080fd5b50508035926020909101359150565b600080604083850312156124d157600080fd5b82356124dc81612333565b91506124ea60208401612430565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612532576125326124f3565b604052919050565b6000602080838503121561254d57600080fd5b823567ffffffffffffffff8082111561256557600080fd5b818501915085601f83011261257957600080fd5b81358181111561258b5761258b6124f3565b61259d601f8201601f19168501612509565b915080825286848285010111156125b357600080fd5b8084840185840137600090820190930192909252509392505050565b6020808252825182820181905260009190848201906040850190845b81811015612607578351835292840192918401916001016125eb565b50909695505050505050565b6000602080838503121561262657600080fd5b823567ffffffffffffffff8082111561263e57600080fd5b818501915085601f83011261265257600080fd5b813581811115612664576126646124f3565b8060051b9150612675848301612509565b818152918301840191848101908884111561268f57600080fd5b938501935b838510156126ad57843582529385019390850190612694565b98975050505050505050565b600080604083850312156126cc57600080fd5b82356126d781612333565b915060208301356126e781612333565b809150509250929050565b600181811c9082168061270657607f821691505b60208210810361272657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156108335761083361272c565b600081600019048311821515161561276f5761276f61272c565b500290565b60008261279157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156127a857600080fd5b8151610fdd81612290565b601f821115610d1057600081815260208120601f850160051c810160208610156127da5750805b601f850160051c820191505b818110156127f9578281556001016127e6565b505050505050565b815167ffffffffffffffff81111561281b5761281b6124f3565b61282f8161282984546126f2565b846127b3565b602080601f831160018114612864576000841561284c5750858301515b600019600386901b1c1916600185901b1785556127f9565b600085815260208120601f198616915b8281101561289357888601518255948401946001909101908401612874565b50858210156128b15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b6000600182016128e9576128e961272c565b5060010190565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000808454612952816126f2565b6001828116801561296a576001811461297f576129ae565b60ff19841687528215158302870194506129ae565b8860005260208060002060005b858110156129a55781548a82015290840190820161298c565b50505082870194505b5050505083516129c28183602088016122c3565b01949350505050565b600082516129dd8184602087016122c3565b64173539b7b760d91b920191825250600501919050565b600181815b80851115612a2f578160001904821115612a1557612a1561272c565b80851615612a2257918102915b93841c93908002906129f9565b509250929050565b600082612a4657506001610833565b81612a5357506000610833565b8160018114612a695760028114612a7357612a8f565b6001915050610833565b60ff841115612a8457612a8461272c565b50506001821b610833565b5060208310610133831016604e8410600b8410161715612ab2575081810a610833565b612abc83836129f4565b8060001904821115612ad057612ad061272c565b029392505050565b6000610fdd60ff841683612a37565b600060208284031215612af957600080fd5b8151610fdd81612333565b808201808211156108335761083361272c565b634e487b7160e01b600052603160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201bd6cb2157e18ccb0a680c081ff511250e1f4b26ee270c16ac6aaa70ee74d26364736f6c63430008100033000000000000000000000000b0a181f748d9789b7ce32ae9f80571e28557a879000000000000000000000000b0a181f748d9789b7ce32ae9f80571e28557a8790000000000000000000000005532b3bd7a0ef100244745bc923c9cb0b304dca100000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000006a00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a476f6464657373657320616e6420476c6164696174726963657300000000000000000000000000000000000000000000000000000000000000000000000000024747000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005368747470733a2f2f736e6f7774726163652e696f2f746f6b656e2f3078353533324233624437413045663130303234343734354263393233633943623062333034446341313f636861696e49643d343331313400000000000000000000000000