[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newRoyaltyRecipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "newRoyaltyBps", "type": "uint256" } ], "name": "DefaultRoyalty", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnerUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "platformFeeRecipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "platformFeeBps", "type": "uint256" } ], "name": "PlatformFeeInfoUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" } ], "name": "PrimarySaleRecipientUpdated", "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": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "royaltyRecipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "royaltyBps", "type": "uint256" } ], "name": "RoyaltyForToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "mintedTo", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenIdMinted", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "uri", "type": "string" } ], "name": "TokensMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "signer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "mintedTo", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenIdMinted", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "address", "name": "royaltyRecipient", "type": "address" }, { "internalType": "uint256", "name": "royaltyBps", "type": "uint256" }, { "internalType": "address", "name": "primarySaleRecipient", "type": "address" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" }, { "internalType": "uint128", "name": "validityStartTimestamp", "type": "uint128" }, { "internalType": "uint128", "name": "validityEndTimestamp", "type": "uint128" }, { "internalType": "bytes32", "name": "uid", "type": "bytes32" } ], "indexed": false, "internalType": "struct ITokenERC721.MintRequest", "name": "mintRequest", "type": "tuple" } ], "name": "TokensMintedWithSignature", "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": [ { "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": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractType", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractVersion", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDefaultRoyaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPlatformFeeInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "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": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "getRoyaltyInfoForToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "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": "_defaultAdmin", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "_contractURI", "type": "string" }, { "internalType": "address[]", "name": "_trustedForwarders", "type": "address[]" }, { "internalType": "address", "name": "_saleRecipient", "type": "address" }, { "internalType": "address", "name": "_royaltyRecipient", "type": "address" }, { "internalType": "uint128", "name": "_royaltyBps", "type": "uint128" }, { "internalType": "uint128", "name": "_platformFeeBps", "type": "uint128" }, { "internalType": "address", "name": "_platformFeeRecipient", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "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": "forwarder", "type": "address" } ], "name": "isTrustedForwarder", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "string", "name": "_uri", "type": "string" } ], "name": "mintTo", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "address", "name": "royaltyRecipient", "type": "address" }, { "internalType": "uint256", "name": "royaltyBps", "type": "uint256" }, { "internalType": "address", "name": "primarySaleRecipient", "type": "address" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" }, { "internalType": "uint128", "name": "validityStartTimestamp", "type": "uint128" }, { "internalType": "uint128", "name": "validityEndTimestamp", "type": "uint128" }, { "internalType": "bytes32", "name": "uid", "type": "bytes32" } ], "internalType": "struct ITokenERC721.MintRequest", "name": "_req", "type": "tuple" }, { "internalType": "bytes", "name": "_signature", "type": "bytes" } ], "name": "mintWithSignature", "outputs": [ { "internalType": "uint256", "name": "tokenIdMinted", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "data", "type": "bytes[]" } ], "name": "multicall", "outputs": [ { "internalType": "bytes[]", "name": "results", "type": "bytes[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextTokenIdToMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "platformFeeRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "primarySaleRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "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": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_uri", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_royaltyRecipient", "type": "address" }, { "internalType": "uint256", "name": "_royaltyBps", "type": "uint256" } ], "name": "setDefaultRoyaltyInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "setOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_platformFeeRecipient", "type": "address" }, { "internalType": "uint256", "name": "_platformFeeBps", "type": "uint256" } ], "name": "setPlatformFeeInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_saleRecipient", "type": "address" } ], "name": "setPrimarySaleRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address", "name": "_recipient", "type": "address" }, { "internalType": "uint256", "name": "_bps", "type": "uint256" } ], "name": "setRoyaltyInfoForToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "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": [ { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "address", "name": "royaltyRecipient", "type": "address" }, { "internalType": "uint256", "name": "royaltyBps", "type": "uint256" }, { "internalType": "address", "name": "primarySaleRecipient", "type": "address" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" }, { "internalType": "uint128", "name": "validityStartTimestamp", "type": "uint128" }, { "internalType": "uint128", "name": "validityEndTimestamp", "type": "uint128" }, { "internalType": "bytes32", "name": "uid", "type": "bytes32" } ], "internalType": "struct ITokenERC721.MintRequest", "name": "_req", "type": "tuple" }, { "internalType": "bytes", "name": "_signature", "type": "bytes" } ], "name": "verify", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b50600054610100900460ff166200002f5760005460ff161562000039565b62000039620000de565b620000a15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600054610100900460ff16158015620000c4576000805461ffff19166101011790555b8015620000d7576000805461ff00191690555b506200010b565b6000620000f630620000fc60201b62001da21760201c565b15905090565b6001600160a01b03163b151590565b614e21806200011b6000396000f3fe6080604052600436106103125760003560e01c80636f4f28371161019a578063b24f2d39116100e1578063d547741f1161008a578063e8a3d48511610064578063e8a3d48514610996578063e985e9c5146109ab578063eb13554f146109f557600080fd5b8063d547741f14610917578063de90377414610937578063e15916341461097657600080fd5b8063ca15c873116100bb578063ca15c873146108a0578063cb2ef6f7146108c0578063d45573f6146108e157600080fd5b8063b24f2d3914610831578063b88d4fde14610860578063c87b56dd1461088057600080fd5b806395d89b4111610143578063a217fddf1161011d578063a217fddf146107cf578063a22cb465146107e4578063ac9650d81461080457600080fd5b806395d89b411461077e5780639bcf7a1514610793578063a0a8e460146107b357600080fd5b80639010d07c116101745780639010d07c146106f757806391d1485414610717578063938e3d7b1461075e57600080fd5b80636f4f2837146106a257806370a08231146106c25780638da5cb5b146106e257600080fd5b80632c4510f81161025e57806342966c6811610207578063572b6c05116101e1578063572b6c0514610629578063600dd5ea146106625780636352211e1461068257600080fd5b806342966c68146105a75780634cc157df146105c75780634f6ccce71461060957600080fd5b806336568abe1161023857806336568abe146105505780633b1475a71461057057806342842e0e1461058757600080fd5b80632c4510f8146104fd5780632f2ff15d146105105780632f745c591461053057600080fd5b806313af4035116102c057806323b872dd1161029a57806323b872dd1461046d578063248a9ca31461048d5780632a55205a146104be57600080fd5b806313af40351461041757806318160ddd146104375780631e7ac4881461044d57600080fd5b8063079fe40e116102f1578063079fe40e1461039c578063081812fc146103d5578063095ea7b3146103f557600080fd5b806275a3171461031757806301ffc9a71461034a57806306fdde031461037a575b600080fd5b34801561032357600080fd5b50610337610332366004614260565b610a16565b6040519081526020015b60405180910390f35b34801561035657600080fd5b5061036a6103653660046142c9565b610a5e565b6040519015158152602001610341565b34801561038657600080fd5b5061038f610a8a565b604051610341919061433e565b3480156103a857600080fd5b506101f9546103bd906001600160a01b031681565b6040516001600160a01b039091168152602001610341565b3480156103e157600080fd5b506103bd6103f0366004614351565b610b1d565b34801561040157600080fd5b5061041561041036600461436a565b610bb9565b005b34801561042357600080fd5b50610415610432366004614394565b610ce1565b34801561044357600080fd5b506101c754610337565b34801561045957600080fd5b5061041561046836600461436a565b610dca565b34801561047957600080fd5b506104156104883660046143af565b610e96565b34801561049957600080fd5b506103376104a8366004614351565b600090815261012f602052604090206001015490565b3480156104ca57600080fd5b506104de6104d93660046143eb565b610f18565b604080516001600160a01b039093168352602083019190915201610341565b61033761050b36600461440d565b610f55565b34801561051c57600080fd5b5061041561052b366004614472565b6110cb565b34801561053c57600080fd5b5061033761054b36600461436a565b6110f4565b34801561055c57600080fd5b5061041561056b366004614472565b61118b565b34801561057c57600080fd5b506103376101f85481565b34801561059357600080fd5b506104156105a23660046143af565b611227565b3480156105b357600080fd5b506104156105c2366004614351565b611242565b3480156105d357600080fd5b506105e76105e2366004614351565b6112cb565b604080516001600160a01b03909316835261ffff909116602083015201610341565b34801561061557600080fd5b50610337610624366004614351565b61133b565b34801561063557600080fd5b5061036a610644366004614394565b6001600160a01b031660009081526099602052604090205460ff1690565b34801561066e57600080fd5b5061041561067d36600461436a565b6113d0565b34801561068e57600080fd5b506103bd61069d366004614351565b611499565b3480156106ae57600080fd5b506104156106bd366004614394565b611511565b3480156106ce57600080fd5b506103376106dd366004614394565b61156b565b3480156106ee57600080fd5b506103bd6115f3565b34801561070357600080fd5b506103bd6107123660046143eb565b61164e565b34801561072357600080fd5b5061036a610732366004614472565b600091825261012f602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561076a57600080fd5b5061041561077936600461449e565b61166e565b34801561078a57600080fd5b5061038f61168f565b34801561079f57600080fd5b506104156107ae3660046144e0565b61169f565b3480156107bf57600080fd5b5060405160018152602001610341565b3480156107db57600080fd5b50610337600081565b3480156107f057600080fd5b506104156107ff366004614513565b61177b565b34801561081057600080fd5b5061082461081f36600461454a565b61178d565b60405161034191906145bf565b34801561083d57600080fd5b506101fb546101fc546001600160a01b03909116906001600160801b03166105e7565b34801561086c57600080fd5b5061041561087b3660046146c0565b611882565b34801561088c57600080fd5b5061038f61089b366004614351565b611905565b3480156108ac57600080fd5b506103376108bb366004614351565b6119a8565b3480156108cc57600080fd5b506a546f6b656e45524337323160a81b610337565b3480156108ed57600080fd5b506101fa546101fc546001600160a01b0390911690600160801b90046001600160801b03166105e7565b34801561092357600080fd5b50610415610932366004614472565b6119c0565b34801561094357600080fd5b5061095761095236600461440d565b6119e9565b6040805192151583526001600160a01b03909116602083015201610341565b34801561098257600080fd5b506104156109913660046147ef565b611a64565b3480156109a257600080fd5b5061038f611d13565b3480156109b757600080fd5b5061036a6109c6366004614902565b6001600160a01b0391821660009081526101986020908152604080832093909416825291909152205460ff1690565b348015610a0157600080fd5b506101fa546103bd906001600160a01b031681565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610a4a81610a45611db1565b611dbb565b610a55858585611e3c565b95945050505050565b6000610a6982611f00565b80610a8457506001600160e01b0319821663152a902d60e11b145b92915050565b60606101938054610a9a9061492c565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac69061492c565b8015610b135780601f10610ae857610100808354040283529160200191610b13565b820191906000526020600020905b815481529060010190602001808311610af657829003601f168201915b5050505050905090565b600081815261019560205260408120546001600160a01b0316610b9c5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b50600090815261019760205260409020546001600160a01b031690565b6000610bc482611499565b9050806001600160a01b0316836001600160a01b03161415610c325760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610b93565b806001600160a01b0316610c44611db1565b6001600160a01b03161480610c605750610c60816109c6611db1565b610cd25760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610b93565b610cdc8383611f25565b505050565b6000610cef81610a45611db1565b6001600160a01b03821660009081527fe9104285c6851efcbc5e0e70440200efbdcab556a1c8784776780f8bb44f2931602052604090205460ff16610d765760405162461bcd60e51b815260206004820152601b60248201527f6e6577206f776e6572206e6f74206d6f64756c652061646d696e2e00000000006044820152606401610b93565b6101f780546001600160a01b038481166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a3505050565b6000610dd881610a45611db1565b612710821115610e1c5760405162461bcd60e51b815260206004820152600f60248201526e65786365656473204d41585f42505360881b6044820152606401610b93565b6101fc80546001600160801b031667ffffffffffffffff8416600160801b021790556101fa80546001600160a01b0319166001600160a01b0385169081179091556040518381527fe2497bd806ec41a6e0dd992c29a72efc0ef8fec9092d1978fd4a1e00b2f18304906020015b60405180910390a2505050565b610ea7610ea1611db1565b82611f94565b610f0d5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6044820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b6064820152608401610b93565b610cdc83838361208d565b600080600080610f27866112cb565b90945084925061ffff169050612710610f40828761497d565b610f4a919061499c565b925050509250929050565b600060026001541415610faa5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b93565b60026001556000610fbc858585612237565b90506000610fcd6020870187614394565b9050610fe581610fe060808901896149be565b611e3c565b92506000610ff96040880160208901614394565b6001600160a01b0316146110695760405180604001604052808760200160208101906110259190614394565b6001600160a01b0390811682526040898101356020938401526000878152610200845220835181546001600160a01b03191692169190911781559101516001909101555b611072866123b7565b82816001600160a01b0316836001600160a01b03167f110d160a1bedeea919a88fbc4b2a9fb61b7e664084391b6ca2740db66fef80fe896040516110b69190614a74565b60405180910390a45050600180559392505050565b600082815261012f60205260409020600101546110ea81610a45611db1565b610cdc838361256f565b60006110ff8361156b565b82106111615760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610b93565b506001600160a01b039190911660009081526101c560209081526040808320938352929052205490565b611193611db1565b6001600160a01b0316816001600160a01b0316146112195760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610b93565b6112238282612592565b5050565b610cdc83838360405180602001604052806000815250611882565b61124d610ea1611db1565b6112bf5760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f766564000000000000000000000000000000006064820152608401610b93565b6112c8816125b5565b50565b600081815261020060209081526040808320815180830190925280546001600160a01b0316808352600190910154928201929092528291156113135780516020820151611331565b6101fb546101fc546001600160a01b03909116906001600160801b03165b9250925050915091565b60006113476101c75490565b82106113aa5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610b93565b6101c782815481106113be576113be614b84565b90600052602060002001549050919050565b60006113de81610a45611db1565b6127108211156114255760405162461bcd60e51b815260206004820152601260248201527165786365656420726f79616c74792062707360701b6044820152606401610b93565b6101fb80546001600160a01b0319166001600160a01b0385169081179091556101fc80546fffffffffffffffffffffffffffffffff19166001600160801b0385161790556040518381527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb90602001610e89565b600081815261019560205260408120546001600160a01b031680610a845760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610b93565b600061151f81610a45611db1565b6101f980546001600160a01b0319166001600160a01b0384169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a25050565b60006001600160a01b0382166115d65760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610b93565b506001600160a01b03166000908152610196602052604090205490565b6101f7546001600160a01b031660009081527fe9104285c6851efcbc5e0e70440200efbdcab556a1c8784776780f8bb44f2931602052604081205460ff1661163b5750600090565b6101f7546001600160a01b03165b905090565b600082815261016160205260408120611667908361265e565b9392505050565b600061167c81610a45611db1565b6116896101fd84846140f5565b50505050565b60606101948054610a9a9061492c565b60006116ad81610a45611db1565b6127108211156116f45760405162461bcd60e51b815260206004820152601260248201527165786365656420726f79616c74792062707360701b6044820152606401610b93565b6040805180820182526001600160a01b03858116808352602080840187815260008a81526102008352869020945185546001600160a01b031916941693909317845591516001909301929092559151848152909186917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d910160405180910390a350505050565b611223611786611db1565b838361266a565b60608167ffffffffffffffff8111156117a8576117a8614621565b6040519080825280602002602001820160405280156117db57816020015b60608152602001906001900390816117c65790505b50905060005b8281101561187b5761184b308585848181106117ff576117ff614b84565b905060200281019061181191906149be565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061273a92505050565b82828151811061185d5761185d614b84565b6020026020010181905250808061187390614b9a565b9150506117e1565b5092915050565b61189361188d611db1565b83611f94565b6118f95760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6044820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b6064820152608401610b93565b61168984848484612825565b60008181526101ff602052604090208054606091906119239061492c565b80601f016020809104026020016040519081016040528092919081815260200182805461194f9061492c565b801561199c5780601f106119715761010080835404028352916020019161199c565b820191906000526020600020905b81548152906001019060200180831161197f57829003601f168201915b50505050509050919050565b600081815261016160205260408120610a84906128a3565b600082815261012f60205260409020600101546119df81610a45611db1565b610cdc8383612592565b60008060006119f98686866128ad565b61012087013560009081526101fe602052604090205490915060ff16158015611a5957506001600160a01b03811660009081527fa2a71de801f4f5af590dd1e71778408c512ca00170a88b45ca00ba943b31e98e602052604090205460ff165b969095509350505050565b600054610100900460ff16611a7f5760005460ff1615611a83565b303b155b611ae65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b93565b600054610100900460ff16158015611b08576000805461ffff19166101011790555b611b10612909565b611b566040518060400160405280600b81526020016a546f6b656e45524337323160a81b815250604051806040016040528060018152602001603160f81b81525061293a565b611b5f8761296b565b611b698a8a6129a3565b6101fb80546001600160a01b03199081166001600160a01b03888116919091179092556101fc80546fffffffffffffffffffffffffffffffff19166001600160801b0388161790556101fa805482168584161790556101f980549091169188169190911790558751611be3906101fd9060208b0190614179565b50612710836001600160801b03161115611c315760405162461bcd60e51b815260206004820152600f60248201526e65786365656473204d41585f42505360881b6044820152606401610b93565b6101fc80546001600160801b03808616600160801b0291161790556101f780546001600160a01b038d166001600160a01b0319909116179055611c7560008c6129d4565b611c9f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68c6129d4565b611cc97f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c8c6129d4565b611cf47f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c60006129d4565b8015611d06576000805461ff00191690555b5050505050505050505050565b6101fd8054611d219061492c565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4d9061492c565b8015611d9a5780601f10611d6f57610100808354040283529160200191611d9a565b820191906000526020600020905b815481529060010190602001808311611d7d57829003601f168201915b505050505081565b6001600160a01b03163b151590565b60006116496129de565b600082815261012f602090815260408083206001600160a01b038516845290915290205460ff1661122357611dfa816001600160a01b03166014612a08565b611e05836020612a08565b604051602001611e16929190614bb5565b60408051601f198184030181529082905262461bcd60e51b8252610b939160040161433e565b6101f88054906001906000611e518385614c36565b909155505081611e905760405162461bcd60e51b815260206004820152600a60248201526932b6b83a3c903ab9349760b11b6044820152606401610b93565b60008181526101ff60205260409020611eaa9084846140f5565b50611eb58482612bb1565b80846001600160a01b03167f9d89e36eadf856db0ad9ffb5a569e07f95634dddd9501141ecf04820484ad0dc8585604051611ef1929190614c4e565b60405180910390a39392505050565b60006001600160e01b0319821663780e9d6360e01b1480610a845750610a8482612bcb565b60008181526101976020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611f5b82611499565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081815261019560205260408120546001600160a01b031661200e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b93565b600061201983611499565b9050806001600160a01b0316846001600160a01b031614806120545750836001600160a01b031661204984610b1d565b6001600160a01b0316145b8061208557506001600160a01b038082166000908152610198602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166120a082611499565b6001600160a01b0316146121045760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610b93565b6001600160a01b0382166121665760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b93565b612171838383612c0b565b61217c600082611f25565b6001600160a01b0383166000908152610196602052604081208054600192906121a6908490614c62565b90915550506001600160a01b0382166000908152610196602052604081208054600192906121d5908490614c36565b90915550506000818152610195602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008060006122478686866119e9565b91509150816122985760405162461bcd60e51b815260206004820152601160248201527f696e76616c6964207369676e61747572650000000000000000000000000000006044820152606401610b93565b426122aa610100880160e08901614c79565b6001600160801b0316111580156122db5750426122cf61012088016101008901614c79565b6001600160801b031610155b6123275760405162461bcd60e51b815260206004820152600f60248201527f72657175657374206578706972656400000000000000000000000000000000006044820152606401610b93565b60006123366020880188614394565b6001600160a01b0316141561238d5760405162461bcd60e51b815260206004820152601360248201527f726563697069656e7420756e646566696e6564000000000000000000000000006044820152606401610b93565b61012086013560009081526101fe60205260409020805460ff191660011790559150509392505050565b60a08101356123c35750565b6101fc5460a082013590600090612710906123ee90600160801b90046001600160801b03168461497d565b6123f8919061499c565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61241f60e0850160c08601614394565b6001600160a01b031614156124825781341461247d5760405162461bcd60e51b815260206004820152601660248201527f6d7573742073656e6420746f74616c2070726963652e000000000000000000006044820152606401610b93565b6124d0565b34156124d05760405162461bcd60e51b815260206004820152601260248201527f6d73672076616c7565206e6f74207a65726f00000000000000000000000000006044820152606401610b93565b6000806124e36080860160608701614394565b6001600160a01b031614612506576125016080850160608601614394565b612514565b6101f9546001600160a01b03165b905061254461252960e0860160c08701614394565b612531611db1565b6101fa546001600160a01b031685612d66565b61168961255760e0860160c08701614394565b61255f611db1565b8361256a8688614c62565b612d66565b6125798282612db0565b600082815261016160205260409020610cdc9082612e55565b61259c8282612e6a565b600082815261016160205260409020610cdc9082612f0d565b60006125c082611499565b90506125ce81600084612c0b565b6125d9600083611f25565b6001600160a01b038116600090815261019660205260408120805460019290612603908490614c62565b90915550506000828152610195602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60006116678383612f22565b816001600160a01b0316836001600160a01b031614156126cc5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b93565b6001600160a01b0383811660008181526101986020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60606001600160a01b0383163b6127a25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610b93565b600080846001600160a01b0316846040516127bd9190614c94565b600060405180830381855af49150503d80600081146127f8576040519150601f19603f3d011682016040523d82523d6000602084013e6127fd565b606091505b5091509150610a558282604051806060016040528060278152602001614dc560279139612f4c565b61283084848461208d565b61283c84848484612f85565b6116895760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610b93565b6000610a84825490565b600061208583838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061290392506128f791508890506130d5565b8051906020012061320f565b9061325d565b600054610100900460ff166129305760405162461bcd60e51b8152600401610b9390614cb0565b612938613281565b565b600054610100900460ff166129615760405162461bcd60e51b8152600401610b9390614cb0565b61122382826132ae565b600054610100900460ff166129925760405162461bcd60e51b8152600401610b9390614cb0565b61299a6132ef565b6112c881613316565b600054610100900460ff166129ca5760405162461bcd60e51b8152600401610b9390614cb0565b61122382826133a5565b611223828261256f565b3360009081526099602052604081205460ff1615612a03575060131936013560601c90565b503390565b60606000612a1783600261497d565b612a22906002614c36565b67ffffffffffffffff811115612a3a57612a3a614621565b6040519080825280601f01601f191660200182016040528015612a64576020820181803683370190505b509050600360fc1b81600081518110612a7f57612a7f614b84565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612aae57612aae614b84565b60200101906001600160f81b031916908160001a9053506000612ad284600261497d565b612add906001614c36565b90505b6001811115612b62577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612b1e57612b1e614b84565b1a60f81b828281518110612b3457612b34614b84565b60200101906001600160f81b031916908160001a90535060049490941c93612b5b81614cfb565b9050612ae0565b5083156116675760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b93565b6112238282604051806020016040528060008152506133f5565b60006001600160e01b031982166380ac58cd60e01b1480612bfc57506001600160e01b03198216635b5e139f60e01b145b80610a845750610a8482613473565b612c16838383613498565b600080527fdf45e191c6a8bff7d5b2484d5c1deccbd5b2abc06a2abf694394baf9d01cb5e56020527f2b85be2befc2dd713b2f771c3d841437400c04e85bacc15958c6dcadb2aa5c045460ff16158015612c7857506001600160a01b03831615155b8015612c8c57506001600160a01b03821615155b15610cdc576001600160a01b03831660009081527fdf45e191c6a8bff7d5b2484d5c1deccbd5b2abc06a2abf694394baf9d01cb5e5602052604090205460ff1680612d0e57506001600160a01b03821660009081527fdf45e191c6a8bff7d5b2484d5c1deccbd5b2abc06a2abf694394baf9d01cb5e5602052604090205460ff165b610cdc5760405162461bcd60e51b815260206004820152602360248201527f7265737472696374656420746f205452414e534645525f524f4c4520686f6c6460448201526265727360e81b6064820152608401610b93565b80612d7057611689565b6001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415612da457612d9f8282613552565b611689565b611689848484846135f5565b600082815261012f602090815260408083206001600160a01b038516845290915290205460ff1661122357600082815261012f602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612e11611db1565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611667836001600160a01b03841661364e565b600082815261012f602090815260408083206001600160a01b038516845290915290205460ff161561122357600082815261012f602090815260408083206001600160a01b03851684529091529020805460ff19169055612ec9611db1565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000611667836001600160a01b03841661369d565b6000826000018281548110612f3957612f39614b84565b9060005260206000200154905092915050565b60608315612f5b575081611667565b825115612f6b5782518084602001fd5b8160405162461bcd60e51b8152600401610b93919061433e565b60006001600160a01b0384163b156130ca57836001600160a01b031663150b7a02612fae611db1565b8786866040518563ffffffff1660e01b8152600401612fd09493929190614d12565b6020604051808303816000875af192505050801561300b575060408051601f3d908101601f1916820190925261300891810190614d4e565b60015b6130b0573d808015613039576040519150601f19603f3d011682016040523d82523d6000602084013e61303e565b606091505b5080516130a85760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610b93565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612085565b506001949350505050565b60607f86633b4ffa94b7c3d316ca70d7d2700f3fdfa7a7806efd31499b513d9176692e6131056020840184614394565b6131156040850160208601614394565b604085013561312a6080870160608801614394565b61313760808801886149be565b604051613145929190614d6b565b60405190819003902060a088013561316360e08a0160c08b01614394565b6131746101008b0160e08c01614c79565b6131866101208c016101008d01614c79565b60408051602081019b909b526001600160a01b03998a16908b015296881660608a0152608089019590955292861660a088015260c087019190915260e08601529092166101008401526001600160801b03918216610120808501919091529116610140830152830135610160820152610180016040516020818303038152906040529050919050565b6000610a8461321c613790565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061326c858561380b565b915091506132798161387b565b509392505050565b600054610100900460ff166132a85760405162461bcd60e51b8152600401610b9390614cb0565b60018055565b600054610100900460ff166132d55760405162461bcd60e51b8152600401610b9390614cb0565b815160209283012081519190920120603391909155603455565b600054610100900460ff166129385760405162461bcd60e51b8152600401610b9390614cb0565b600054610100900460ff1661333d5760405162461bcd60e51b8152600401610b9390614cb0565b60005b81518110156112235760016099600084848151811061336157613361614b84565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061339d81614b9a565b915050613340565b600054610100900460ff166133cc5760405162461bcd60e51b8152600401610b9390614cb0565b81516133e090610193906020850190614179565b508051610cdc90610194906020840190614179565b6133ff8383613a36565b61340c6000848484612f85565b610cdc5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610b93565b60006001600160e01b03198216635a05180f60e01b1480610a845750610a8482613b87565b6001600160a01b0383166134f5576134f0816101c7805460008381526101c860205260408120829055600182018355919091527fff6df30967a6a678f565c59a19e91e5c0dbb20cfe9f9bf26d7da6dea0fffa24c0155565b613518565b816001600160a01b0316836001600160a01b031614613518576135188382613bbc565b6001600160a01b03821661352f57610cdc81613c5e565b826001600160a01b0316826001600160a01b031614610cdc57610cdc8282613d13565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461359f576040519150601f19603f3d011682016040523d82523d6000602084013e6135a4565b606091505b5050905080610cdc5760405162461bcd60e51b815260206004820152601c60248201527f6e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610b93565b816001600160a01b0316836001600160a01b0316141561361457611689565b6001600160a01b03831630141561363957612d9f6001600160a01b0385168383613d59565b6116896001600160a01b038516848484613dd1565b600081815260018301602052604081205461369557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a84565b506000610a84565b600081815260018301602052604081205480156137865760006136c1600183614c62565b85549091506000906136d590600190614c62565b905081811461373a5760008660000182815481106136f5576136f5614b84565b906000526020600020015490508087600001848154811061371857613718614b84565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061374b5761374b614d7b565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a84565b6000915050610a84565b60006116497f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6137bf60335490565b6034546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6000808251604114156138425760208301516040840151606085015160001a61383687828585613e09565b94509450505050613874565b82516040141561386c5760208301516040840151613861868383613ef6565b935093505050613874565b506000905060025b9250929050565b600081600481111561388f5761388f614d91565b14156138985750565b60018160048111156138ac576138ac614d91565b14156138fa5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b93565b600281600481111561390e5761390e614d91565b141561395c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b93565b600381600481111561397057613970614d91565b14156139c95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b93565b60048160048111156139dd576139dd614d91565b14156112c85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b93565b6001600160a01b038216613a8c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b93565b600081815261019560205260409020546001600160a01b031615613af25760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b93565b613afe60008383612c0b565b6001600160a01b038216600090815261019660205260408120805460019290613b28908490614c36565b90915550506000818152610195602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160e01b03198216637965db0b60e01b1480610a8457506301ffc9a760e01b6001600160e01b0319831614610a84565b60006001613bc98461156b565b613bd39190614c62565b60008381526101c66020526040902054909150808214613c29576001600160a01b03841660009081526101c56020908152604080832085845282528083205484845281842081905583526101c690915290208190555b5060009182526101c6602090815260408084208490556001600160a01b0390941683526101c581528383209183525290812055565b6101c754600090613c7190600190614c62565b60008381526101c860205260408120546101c78054939450909284908110613c9b57613c9b614b84565b90600052602060002001549050806101c78381548110613cbd57613cbd614b84565b60009182526020808320909101929092558281526101c890915260408082208490558582528120556101c7805480613cf757613cf7614d7b565b6001900381819060005260206000200160009055905550505050565b6000613d1e8361156b565b6001600160a01b0390931660009081526101c56020908152604080832086845282528083208590559382526101c69052919091209190915550565b6040516001600160a01b038316602482015260448101829052610cdc90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b031990931692909217909152613f48565b6040516001600160a01b03808516602483015283166044820152606481018290526116899085906323b872dd60e01b90608401613d85565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613e405750600090506003613eed565b8460ff16601b14158015613e5857508460ff16601c14155b15613e695750600090506004613eed565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613ebd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ee657600060019250925050613eed565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831681613f2c60ff86901c601b614c36565b9050613f3a87828885613e09565b935093505050935093915050565b6000613f9d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661401a9092919063ffffffff16565b805190915015610cdc5780806020019051810190613fbb9190614da7565b610cdc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b93565b60606120858484600085856001600160a01b0385163b61407c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b93565b600080866001600160a01b031685876040516140989190614c94565b60006040518083038185875af1925050503d80600081146140d5576040519150601f19603f3d011682016040523d82523d6000602084013e6140da565b606091505b50915091506140ea828286612f4c565b979650505050505050565b8280546141019061492c565b90600052602060002090601f0160209004810192826141235760008555614169565b82601f1061413c5782800160ff19823516178555614169565b82800160010185558215614169579182015b8281111561416957823582559160200191906001019061414e565b506141759291506141ed565b5090565b8280546141859061492c565b90600052602060002090601f0160209004810192826141a75760008555614169565b82601f106141c057805160ff1916838001178555614169565b82800160010185558215614169579182015b828111156141695782518255916020019190600101906141d2565b5b8082111561417557600081556001016141ee565b80356001600160a01b038116811461421957600080fd5b919050565b60008083601f84011261423057600080fd5b50813567ffffffffffffffff81111561424857600080fd5b60208301915083602082850101111561387457600080fd5b60008060006040848603121561427557600080fd5b61427e84614202565b9250602084013567ffffffffffffffff81111561429a57600080fd5b6142a68682870161421e565b9497909650939450505050565b6001600160e01b0319811681146112c857600080fd5b6000602082840312156142db57600080fd5b8135611667816142b3565b60005b838110156143015781810151838201526020016142e9565b838111156116895750506000910152565b6000815180845261432a8160208601602086016142e6565b601f01601f19169290920160200192915050565b6020815260006116676020830184614312565b60006020828403121561436357600080fd5b5035919050565b6000806040838503121561437d57600080fd5b61438683614202565b946020939093013593505050565b6000602082840312156143a657600080fd5b61166782614202565b6000806000606084860312156143c457600080fd5b6143cd84614202565b92506143db60208501614202565b9150604084013590509250925092565b600080604083850312156143fe57600080fd5b50508035926020909101359150565b60008060006040848603121561442257600080fd5b833567ffffffffffffffff8082111561443a57600080fd5b90850190610140828803121561444f57600080fd5b9093506020850135908082111561446557600080fd5b506142a68682870161421e565b6000806040838503121561448557600080fd5b8235915061449560208401614202565b90509250929050565b600080602083850312156144b157600080fd5b823567ffffffffffffffff8111156144c857600080fd5b6144d48582860161421e565b90969095509350505050565b6000806000606084860312156144f557600080fd5b833592506143db60208501614202565b80151581146112c857600080fd5b6000806040838503121561452657600080fd5b61452f83614202565b9150602083013561453f81614505565b809150509250929050565b6000806020838503121561455d57600080fd5b823567ffffffffffffffff8082111561457557600080fd5b818501915085601f83011261458957600080fd5b81358181111561459857600080fd5b8660208260051b85010111156145ad57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561461457603f19888603018452614602858351614312565b945092850192908501906001016145e6565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561466057614660614621565b604052919050565b600067ffffffffffffffff83111561468257614682614621565b614695601f8401601f1916602001614637565b90508281528383830111156146a957600080fd5b828260208301376000602084830101529392505050565b600080600080608085870312156146d657600080fd5b6146df85614202565b93506146ed60208601614202565b925060408501359150606085013567ffffffffffffffff81111561471057600080fd5b8501601f8101871361472157600080fd5b61473087823560208401614668565b91505092959194509250565b600082601f83011261474d57600080fd5b61166783833560208501614668565b600082601f83011261476d57600080fd5b8135602067ffffffffffffffff82111561478957614789614621565b8160051b614798828201614637565b92835284810182019282810190878511156147b257600080fd5b83870192505b848310156140ea576147c983614202565b825291830191908301906147b8565b80356001600160801b038116811461421957600080fd5b6000806000806000806000806000806101408b8d03121561480f57600080fd5b6148188b614202565b995060208b013567ffffffffffffffff8082111561483557600080fd5b6148418e838f0161473c565b9a5060408d013591508082111561485757600080fd5b6148638e838f0161473c565b995060608d013591508082111561487957600080fd5b6148858e838f0161473c565b985060808d013591508082111561489b57600080fd5b506148a88d828e0161475c565b9650506148b760a08c01614202565b94506148c560c08c01614202565b93506148d360e08c016147d8565b92506148e26101008c016147d8565b91506148f16101208c01614202565b90509295989b9194979a5092959850565b6000806040838503121561491557600080fd5b61491e83614202565b915061449560208401614202565b600181811c9082168061494057607f821691505b6020821081141561496157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561499757614997614967565b500290565b6000826149b957634e487b7160e01b600052601260045260246000fd5b500490565b6000808335601e198436030181126149d557600080fd5b83018035915067ffffffffffffffff8211156149f057600080fd5b60200191503681900382131561387457600080fd5b6000808335601e19843603018112614a1c57600080fd5b830160208101925035905067ffffffffffffffff811115614a3c57600080fd5b80360383131561387457600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152614a9560208201614a8884614202565b6001600160a01b03169052565b6000614aa360208401614202565b6001600160a01b03811660408401525060408301356060830152614ac960608401614202565b6001600160a01b038116608084015250614ae66080840184614a05565b6101408060a0860152614afe61016086018385614a4b565b925060a086013560c0860152614b1660c08701614202565b6001600160a01b03811660e08701529150614b3360e087016147d8565b9150610100614b4c818701846001600160801b03169052565b614b578188016147d8565b925050610120614b71818701846001600160801b03169052565b9590950135939094019290925250919050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415614bae57614bae614967565b5060010190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614bed8160178501602088016142e6565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351614c2a8160288401602088016142e6565b01602801949350505050565b60008219821115614c4957614c49614967565b500190565b602081526000612085602083018486614a4b565b600082821015614c7457614c74614967565b500390565b600060208284031215614c8b57600080fd5b611667826147d8565b60008251614ca68184602087016142e6565b9190910192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600081614d0a57614d0a614967565b506000190190565b60006001600160a01b03808716835280861660208401525083604083015260806060830152614d446080830184614312565b9695505050505050565b600060208284031215614d6057600080fd5b8151611667816142b3565b8183823760009101908152919050565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060208284031215614db957600080fd5b81516116678161450556fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204982caeab0969bd056b959fc19a64af8ceacca890fa8275d955040da54665bb664736f6c634300080c0033