Loading
[ { "inputs": [], "name": "EditionDoesNotExist", "type": "error" }, { "inputs": [], "name": "InvalidManager", "type": "error" }, { "inputs": [], "name": "InvalidSize", "type": "error" }, { "inputs": [], "name": "ManagerDoesNotExist", "type": "error" }, { "inputs": [], "name": "ManagerRemoveBlocked", "type": "error" }, { "inputs": [], "name": "ManagerSwapBlocked", "type": "error" }, { "inputs": [], "name": "MetadataUpdateBlocked", "type": "error" }, { "inputs": [], "name": "MintFrozen", "type": "error" }, { "inputs": [], "name": "MinterRegistrationInvalid", "type": "error" }, { "inputs": [], "name": "NotMinter", "type": "error" }, { "inputs": [], "name": "RoyaltyBPSInvalid", "type": "error" }, { "inputs": [], "name": "RoyaltySetBlocked", "type": "error" }, { "inputs": [], "name": "SoldOut", "type": "error" }, { "inputs": [], "name": "TokenDoesNotExist", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipientAddress", "type": "address" }, { "indexed": true, "internalType": "uint16", "name": "royaltyPercentageBPS", "type": "uint16" } ], "name": "DefaultRoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newDefaultTokenManager", "type": "address" } ], "name": "DefaultTokenManagerChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "editionId", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "size", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "editionTokenManager", "type": "address" } ], "name": "EditionCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "components": [ { "internalType": "address", "name": "recipientAddress", "type": "address" }, { "internalType": "uint16", "name": "royaltyPercentageBPS", "type": "uint16" } ], "indexed": false, "internalType": "struct IRoyaltyManager.Royalty[]", "name": "_newRoyalties", "type": "tuple[]" } ], "name": "GranularRoyaltiesSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" } ], "name": "GranularTokenManagersRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" }, { "indexed": false, "internalType": "address[]", "name": "_tokenManagers", "type": "address[]" } ], "name": "GranularTokenManagersSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "minter", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "registered", "type": "bool" } ], "name": "MinterRegistrationChanged", "type": "event" }, { "anonymous": false, "inputs": [], "name": "MintsFrozen", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newRoyaltyManager", "type": "address" } ], "name": "RoyaltyManagerChanged", "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": [ { "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": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_editionUri", "type": "string" }, { "internalType": "uint256", "name": "_editionSize", "type": "uint256" }, { "internalType": "address", "name": "_editionTokenManager", "type": "address" }, { "components": [ { "internalType": "address", "name": "recipientAddress", "type": "address" }, { "internalType": "uint16", "name": "royaltyPercentageBPS", "type": "uint16" } ], "internalType": "struct IRoyaltyManager.Royalty", "name": "editionRoyalty", "type": "tuple" }, { "internalType": "bytes", "name": "mintVectorData", "type": "bytes" } ], "name": "createEdition", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_editionUri", "type": "string" }, { "internalType": "bytes", "name": "auctionData", "type": "bytes" }, { "internalType": "address", "name": "_editionTokenManager", "type": "address" }, { "components": [ { "internalType": "address", "name": "recipientAddress", "type": "address" }, { "internalType": "uint16", "name": "royaltyPercentageBPS", "type": "uint16" } ], "internalType": "struct IRoyaltyManager.Royalty", "name": "editionRoyalty", "type": "tuple" } ], "name": "createEditionWithAuction", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_editionUri", "type": "string" }, { "internalType": "uint256", "name": "_editionSize", "type": "uint256" }, { "internalType": "address", "name": "_editionTokenManager", "type": "address" }, { "components": [ { "internalType": "address", "name": "recipientAddress", "type": "address" }, { "internalType": "uint16", "name": "royaltyPercentageBPS", "type": "uint16" } ], "internalType": "struct IRoyaltyManager.Royalty", "name": "editionRoyalty", "type": "tuple" }, { "internalType": "bytes", "name": "mechanicVectorData", "type": "bytes" } ], "name": "createEditionWithMechanicVector", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_editionUri", "type": "string" }, { "internalType": "uint256", "name": "_editionSize", "type": "uint256" }, { "internalType": "address", "name": "_editionTokenManager", "type": "address" }, { "components": [ { "internalType": "address", "name": "recipientAddress", "type": "address" }, { "internalType": "uint16", "name": "royaltyPercentageBPS", "type": "uint16" } ], "internalType": "struct IRoyaltyManager.Royalty", "name": "editionRoyalty", "type": "tuple" }, { "internalType": "bytes", "name": "mintVectorData", "type": "bytes" }, { "internalType": "bytes", "name": "mechanicVectorData", "type": "bytes" } ], "name": "createEditionWithMechanicVectorAndPublicFixedPriceVector", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "defaultManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "editionCurrentSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "editionMaxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "editionStartId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "editionId", "type": "uint256" } ], "name": "editionURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "freezeMints", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "editionId", "type": "uint256" } ], "name": "getEditionDetails", "outputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "uint256", "name": "size", "type": "uint256" }, { "internalType": "uint256", "name": "supply", "type": "uint256" }, { "internalType": "uint256", "name": "initialTokenId", "type": "uint256" } ], "internalType": "struct IEditionCollection.EditionDetails", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getEditionId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getEditionStartIds", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "editionIds", "type": "uint256[]" } ], "name": "getEditionsDetailsAndUri", "outputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "uint256", "name": "size", "type": "uint256" }, { "internalType": "uint256", "name": "supply", "type": "uint256" }, { "internalType": "uint256", "name": "initialTokenId", "type": "uint256" } ], "internalType": "struct IEditionCollection.EditionDetails[]", "name": "", "type": "tuple[]" }, { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" } ], "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": "uint256", "name": "editionId", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintAmountToRecipient", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "editionId", "type": "uint256" }, { "internalType": "address[]", "name": "recipients", "type": "address[]" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintAmountToRecipients", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "editionId", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "mintOneToRecipient", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "editionId", "type": "uint256" }, { "internalType": "address[]", "name": "recipients", "type": "address[]" } ], "name": "mintOneToRecipients", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "minters", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "observability", "outputs": [ { "internalType": "contract IObservability", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "registerMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "removeDefaultTokenManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" } ], "name": "removeGranularTokenManagers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "removeRoyaltyManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royaltyManager", "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": "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": "newName", "type": "string" }, { "internalType": "string", "name": "newSymbol", "type": "string" }, { "internalType": "string", "name": "newContractUri", "type": "string" } ], "name": "setContractMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "recipientAddress", "type": "address" }, { "internalType": "uint16", "name": "royaltyPercentageBPS", "type": "uint16" } ], "internalType": "struct IRoyaltyManager.Royalty", "name": "_royalty", "type": "tuple" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_defaultTokenManager", "type": "address" } ], "name": "setDefaultTokenManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "editionId", "type": "uint256" }, { "internalType": "string", "name": "_uri", "type": "string" } ], "name": "setEditionURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "components": [ { "internalType": "address", "name": "recipientAddress", "type": "address" }, { "internalType": "uint16", "name": "royaltyPercentageBPS", "type": "uint16" } ], "internalType": "struct IRoyaltyManager.Royalty[]", "name": "_newRoyalties", "type": "tuple[]" } ], "name": "setGranularRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" }, { "internalType": "address[]", "name": "_tokenManagers", "type": "address[]" } ], "name": "setGranularTokenManagers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_royaltyManager", "type": "address" } ], "name": "setRoyaltyManager", "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": "id", "type": "uint256" } ], "name": "tokenManager", "outputs": [ { "internalType": "address", "name": "manager", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenManagerByTokenId", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "unregisterMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b50615e5280620000216000396000f3fe608060405234801561001057600080fd5b506004361061029e5760003560e01c806301ffc9a7146102a3578063063a7502146102cb5780630690a78d146102d557806306fdde03146102e8578063081812fc146102fd578063095ea7b31461031d57806317360d341461033057806318160ddd1461035157806318bae6c8146103675780631b30808d1461037a57806323b872dd1461038d5780632a55205a146103a05780632a5ac764146103c1578063336211bf146103d4578063377e5e27146103e757806342842e0e146103fa57806342966c681461040d578063439fab911461042057806346134b501461043357806347230dcb146104465780634f58122a1461045957806350cf5a311461046c578063572b6c051461047f5780636352211e146104925780636502abea146104a5578063662fff38146104b85780636b15fd45146104cb578063703c19d7146104de57806370a08231146104f3578063715018a61461050657806375794a3c1461050e578063834a20df146105185780638da5cb5b1461052b57806391d0049e14610533578063921727041461054657806395d89b4114610559578063994d8d9a14610561578063a22cb46514610574578063a305f5b214610587578063b5c5801e1461059a578063b859c935146105a2578063b88d4fde146105b5578063bfb2995c146105c8578063c2f50701146105db578063c73ef573146105e3578063c87b56dd146105f6578063ddf990f914610609578063e8a3d48514610629578063e985e9c514610631578063eb87215014610644578063ee295d6214610657578063ee947a9a1461066a578063eeab05891461067d578063ef60ceaf14610690578063f2fde38b146106a3578063f775baac146106b6578063f97b57ec146106c9578063fac70dc9146106de575b600080fd5b6102b66102b13660046147f7565b6106f1565b60405190151581526020015b60405180910390f35b6102d3610702565b005b6102d36102e3366004614855565b6107c2565b6102f06109fd565b6040516102c291906148ed565b61031061030b366004614900565b610a90565b6040516102c29190614926565b6102d361032b36600461494f565b610ab8565b61034361033e3660046149bf565b610bd2565b6040516102c2929190614a94565b610359610d25565b6040519081526020016102c2565b60cb54610310906001600160a01b031681565b610359610388366004614b0a565b610d79565b6102d361039b366004614b42565b610e0d565b6103b36103ae366004614b72565b610e45565b6040516102c2929190614b94565b6102d36103cf366004614bad565b610e65565b6103596103e2366004614900565b610efb565b6102f06103f5366004614900565b610f23565b6102d3610408366004614b42565b610fe4565b6102d361041b366004614900565b610fff565b6102d361042e366004614c46565b6111c5565b610310610441366004614900565b61133f565b6102d3610454366004614c7b565b61134d565b6102d36104673660046149bf565b611401565b6102d361047a366004614c7b565b611623565b6102b661048d366004614c7b565b6117c3565b6103106104a0366004614900565b6117d7565b6103106104b3366004614900565b6117f3565b6103596104c6366004614d5b565b61181e565b6103596104d9366004614e8b565b611897565b6104e6611b41565b6040516102c29190614f8a565b610359610501366004614c7b565b611b99565b6102d3611c06565b6103596101365481565b6102d3610526366004614c7b565b611c18565b610310611c96565b610359610541366004614f9d565b611ca5565b610359610554366004615018565b611e88565b6102f0611f0e565b61035961056f366004615054565b611f1e565b6102d36105823660046150f9565b6120ae565b6102d3610595366004614c7b565b6120c0565b6102d3612224565b6103596105b0366004615132565b612378565b6102d36105c3366004615157565b6123f2565b6102d36105d63660046151c2565b612431565b6102d3612751565b6103596105f1366004614900565b612862565b6102f0610604366004614900565b612884565b61061c610617366004614900565b612952565b6040516102c2919061525b565b6102f0612983565b6102b661063f36600461526e565b612a12565b60d054610310906001600160a01b031681565b60cf54610310906001600160a01b031681565b610359610678366004614900565b612a41565b6102d361068b36600461529c565b612a52565b6102d361069e366004615307565b612d1c565b6102d36106b1366004614c7b565b612ef0565b6103596106c4366004614f9d565b612f66565b6106d16130a3565b6040516102c29190615319565b6103596106ec366004614900565b6130b4565b60006106fc826130c5565b92915050565b61070a613115565b610712613184565b60cf805460ff60a01b1916600160a01b1790556040517f9d4b38394dff663b46f53f52ced584161b5021180321b381f6104325eecebf4990600090a160d060009054906101000a90046001600160a01b03166001600160a01b031663fd120bd26040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561079e57600080fd5b505af11580156107b2573d6000803e3d6000fd5b505050506107c06001609755565b565b60006107cd846117f3565b905060006107d96131e5565b90506001600160a01b0382166108235760006107f3611c96565b9050806001600160a01b0316826001600160a01b03161461081d5761081d6282b42960e81b6131ef565b506108b1565b604051634e9173c760e11b81526001600160a01b03831690639d22e78e9061085a90309085908a908a908a906006906004016153a5565b6020604051808303816000875af1158015610879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089d91906153fc565b6108b1576108b1631b04458960e01b6131ef565b600085815261013a602052604090206108cb9085856146ac565b5060408051600180825281830190925260009160208083019080368337019050509050858160008151811061090257610902615419565b6020908102919091010152604080516001808252818301909252600091816020015b606081526020019060019003908161092457905050905085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525085518694509092501515905061098557610985615419565b602090810291909101015260d0546040516374c1ace160e01b81526001600160a01b03909116906374c1ace1906109c2908590859060040161542f565b600060405180830381600087803b1580156109dc57600080fd5b505af11580156109f0573d6000803e3d6000fd5b5050505050505050505050565b60606101038054610a0d90615454565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3990615454565b8015610a865780601f10610a5b57610100808354040283529160200191610a86565b820191906000526020600020905b815481529060010190602001808311610a6957829003601f168201915b5050505050905090565b6000610a9b826131f8565b50600090815261010760205260409020546001600160a01b031690565b6000610ac3826117d7565b9050806001600160a01b0316836001600160a01b03161415610b235760405162461bcd60e51b81526020600482015260146024820152734552433732313a20616c7265616479206f776e7360601b60448201526064015b60405180910390fd5b806001600160a01b0316610b356131e5565b6001600160a01b03161480610b515750610b518161063f6131e5565b610bc35760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610b1a565b610bcd8383613248565b505050565b606080826000816001600160401b03811115610bf057610bf0614c98565b604051908082528060200260200182016040528015610c2957816020015b610c16614730565b815260200190600190039081610c0e5790505b5090506000826001600160401b03811115610c4657610c46614c98565b604051908082528060200260200182016040528015610c7957816020015b6060815260200190600190039081610c645790505b50905060005b83811015610d1657610ca8888883818110610c9c57610c9c615419565b90506020020135610f23565b828281518110610cba57610cba615419565b6020026020010181905250610ce6888883818110610cda57610cda615419565b905060200201356132b7565b838281518110610cf857610cf8615419565b60200260200101819052508080610d0e9061549f565b915050610c7f565b509093509150505b9250929050565b600080805b61013754811015610d73576101378181548110610d4957610d49615419565b906000526020600020015482610d5f91906154ba565b915080610d6b8161549f565b915050610d2a565b50919050565b6000610d8e610d866131e5565b60c990613350565b610da257610da2633e34a41b60e21b6131ef565b610daa613184565b60cf54600160a01b900460ff1660011415610dcf57610dcf6345a9661760e01b6131ef565b610ddb84610137541190565b610def57610def63eb49290360e01b6131ef565b610dfa848484613365565b9050610e066001609755565b9392505050565b610e1e610e186131e5565b8261345d565b610e3a5760405162461bcd60e51b8152600401610b1a906154d2565b610bcd8383836134bb565b600080610e5a610e548561363b565b846136df565b915091509250929050565b610e6d613115565b610e798686868661377a565b610e8661013583836146ac565b5060d054604051635bf57bc360e01b81526001600160a01b0390911690635bf57bc390610ec190899089908990899089908990600401615507565b600060405180830381600087803b158015610edb57600080fd5b505af1158015610eef573d6000803e3d6000fd5b50505050505050505050565b6000610f0682613795565b610f1a57610f1a63677510db60e11b6131ef565b6106fc8261363b565b6060610f3182610137541190565b610f4557610f4563eb49290360e01b6131ef565b600082815261013a602052604090208054610f5f90615454565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8b90615454565b8015610fd85780601f10610fad57610100808354040283529160200191610fd8565b820191906000526020600020905b815481529060010190602001808311610fbb57829003601f168201915b50505050509050919050565b610bcd838383604051806020016040528060008152506123f2565b611007613184565b600061101282610efb565b9050600061101f826117f3565b9050600061102b6131e5565b90506001600160a01b038216158015906110b457506040516301ffc9a760e01b81526001600160a01b038316906301ffc9a7906110739063129dae8b60e01b90600401615550565b602060405180830381865afa158015611090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b491906153fc565b1561112857816001600160a01b031663129dae8b826110d2876117d7565b866040518463ffffffff1660e01b81526004016110f193929190615565565b600060405180830381600087803b15801561110b57600080fd5b505af115801561111f573d6000803e3d6000fd5b50505050611145565b611132818561345d565b611145576111456282b42960e81b6131ef565b61114e846137b3565b60d0546040516323de665160e01b81526001600160a01b03909116906323de6651906111839084906000908990600401615565565b600060405180830381600087803b15801561119d57600080fd5b505af11580156111b1573d6000803e3d6000fd5b505050505050506111c26001609755565b50565b600054610100900460ff16158080156111e55750600054600160ff909116105b8061120657506111f430613851565b158015611206575060005460ff166001145b6112695760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b1a565b6000805460ff19166001179055801561128c576000805461ff0019166101001790555b6000808080808080806112a18a8c018c615594565b975097509750975097509750975097506000604051806040016040528060006001600160a01b03168152602001600061ffff1681525090506112ec898260008b8b8b8b8b8b8b613860565b5050505050505050508015610bcd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60006106fc6104b383610efb565b611355613115565b61136060c982613971565b6113745761137463ea6eb5c360e01b6131ef565b6040516001906001600160a01b03831690600080516020615de683398151915290600090a360d05460405163a9292a6f60e01b81526001600160a01b039091169063a9292a6f906113cc908490600190600401615683565b600060405180830381600087803b1580156113e657600080fd5b505af11580156113fa573d6000803e3d6000fd5b5050505050565b611409613184565b60006114136131e5565b90508160005b8181101561157557600060cc600087878581811061143957611439615419565b60209081029290920135835250810191909152604001600020546001600160a01b031690508061147357611473635f98be1560e11b6131ef565b806001600160a01b031663ce2003a58588888681811061149557611495615419565b905060200201356040518363ffffffff1660e01b81526004016114b9929190614b94565b6020604051808303816000875af11580156114d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fc91906153fc565b6115105761151063251c48e160e11b6131ef565b600060cc600088888681811061152857611528615419565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050808061156d9061549f565b915050611419565b507f4d30c2588339a383e2c3092b5383924cf202ae9c377b76c5fe5208cd41d8d2aa84846040516115a79291906156d4565b60405180910390a160d0546040516320364dcd60e21b81526001600160a01b03909116906380d93734906115e190879087906004016156d4565b600060405180830381600087803b1580156115fb57600080fd5b505af115801561160f573d6000803e3d6000fd5b50505050505061161f6001609755565b5050565b61162b613184565b61163481613986565b61164857611648631a7387bd60e11b6131ef565b60006116526131e5565b60cf549091506001600160a01b03168061169a5761166e611c96565b6001600160a01b0316826001600160a01b031614611695576116956282b42960e81b6131ef565b611720565b60405163bcdbc94760e01b81526001600160a01b038481166004830152838116602483015282169063bcdbc94790604401602060405180830381865afa1580156116e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170c91906153fc565b6117205761172063e10a050560e01b6131ef565b60cf80546001600160a01b0319166001600160a01b038516908117909155604051600080516020615e2683398151915290600090a260d05460405163755d5a1160e11b81526001600160a01b039091169063eabab42290611785908690600401614926565b600060405180830381600087803b15801561179f57600080fd5b505af11580156117b3573d6000803e3d6000fd5b5050505050506111c26001609755565b6065546001600160a01b0391821691161490565b600090815261010560205260409020546001600160a01b031690565b60cb54600082815260cc60205260409020546001600160a01b0391821691168015610d735792915050565b600061182b610d866131e5565b61183f5761183f633e34a41b60e21b6131ef565b611847613184565b60cf54600160a01b900460ff166001141561186c5761186c6345a9661760e01b6131ef565b61187884610137541190565b61188c5761188c63eb49290360e01b6131ef565b610dfa8484846139a2565b60006118a1613115565b6118a9613184565b60006118b68a8a8a613adf565b87519091506001600160a01b03161561190b57600081815260ce6020908152604090912088518154928a015161ffff16600160a01b026001600160b01b03199093166001600160a01b03909116179190911790555b8415611a6b5760008060008060008060008060008e8e81019061192e91906156fe565b985098509850985098509850985098509850886001600160a01b03166377a856ea604051806101c00160405280306001600160a01b031681526020018a65ffffffffffff1681526020018965ffffffffffff1681526020018b6001600160a01b031681526020018665ffffffffffff168152602001600065ffffffffffff168152602001846001600160a01b031681526020018765ffffffffffff1681526020018565ffffffffffff168152602001886001600160c01b031681526020018d65ffffffffffff1681526020016001151581526020016000151581526020016000801b8152506040518263ffffffff1660e01b8152600401611a2f91906157c8565b600060405180830381600087803b158015611a4957600080fd5b505af1158015611a5d573d6000803e3d6000fd5b505050505050505050505050505b8215611b29576000808080611a82878901896158cb565b6040805160c0810182523081526001600160601b038b1660208201526001600160a01b03808616828401526001606083015260006080830181905260a083015291516338a2f85160e21b8152959950939750919550935084169163e28be14491611af29188908690600401615933565b600060405180830381600087803b158015611b0c57600080fd5b505af1158015611b20573d6000803e3d6000fd5b50505050505050505b9050611b356001609755565b98975050505050505050565b6060610139805480602002602001604051908101604052809291908181526020018280548015610a8657602002820191906000526020600020905b815481526020019060010190808311611b7c575050505050905090565b60006001600160a01b038216611be95760405162461bcd60e51b815260206004820152601560248201527422a9219b99189d1024b73b30b634b21037bbb732b960591b6044820152606401610b1a565b506001600160a01b03166000908152610106602052604090205490565b611c0e613115565b6107c06000613c5d565b611c20613115565b611c2b60c982613caf565b611c3f57611c3f63ea6eb5c360e01b6131ef565b6040516000906001600160a01b03831690600080516020615de6833981519152908390a360d05460405163a9292a6f60e01b81526001600160a01b039091169063a9292a6f906113cc908490600090600401615683565b6033546001600160a01b031690565b6000611caf613115565b611cb7613184565b6000611cc4888888613adf565b85519091506001600160a01b031615611d1957600081815260ce60209081526040909120865181549288015161ffff16600160a01b026001600160b01b03199093166001600160a01b03909116179190911790555b8215611e725760008080808080808080611d358c8e018e6156fe565b985098509850985098509850985098509850886001600160a01b03166377a856ea604051806101c00160405280306001600160a01b031681526020018a65ffffffffffff1681526020018965ffffffffffff1681526020018b6001600160a01b031681526020018665ffffffffffff168152602001600065ffffffffffff168152602001846001600160a01b031681526020018765ffffffffffff1681526020018565ffffffffffff168152602001886001600160c01b031681526020018d65ffffffffffff1681526020016001151581526020016000151581526020016000801b8152506040518263ffffffff1660e01b8152600401611e3691906157c8565b600060405180830381600087803b158015611e5057600080fd5b505af1158015611e64573d6000803e3d6000fd5b505050505050505050505050505b9050611e7e6001609755565b9695505050505050565b6000611e95610d866131e5565b611ea957611ea9633e34a41b60e21b6131ef565b611eb1613184565b60cf54600160a01b900460ff1660011415611ed657611ed66345a9661760e01b6131ef565b611ee283610137541190565b611ef657611ef663eb49290360e01b6131ef565b611f02838360016139a2565b90506106fc6001609755565b60606101048054610a0d90615454565b6000611f28613115565b611f30613184565b6000611f3e86600186613adf565b83519091506001600160a01b031615611f9357600081815260ce60209081526040909120845181549286015161ffff16600160a01b026001600160b01b03199093166001600160a01b03909116179190911790555b600080600080600089806020019051810190611faf91906159b2565b945094509450945094506000604051806101000160405280306001600160a01b03168152602001856001600160a01b03168152602001336001600160a01b03168152602001846001600160a01b03168152602001838152602001600081526020016001151581526020016001600381111561202c5761202c61538f565b905260405163712f1bf760e11b81529091506001600160a01b0387169063e25e37ee9061206190889085908c90600401615a27565b600060405180830381600087803b15801561207b57600080fd5b505af115801561208f573d6000803e3d6000fd5b509899505050505050505050506120a66001609755565b949350505050565b61161f6120b96131e5565b8383613cc4565b6120c8613184565b6120d181613d90565b6120e5576120e5631a7387bd60e11b6131ef565b60006120ef6131e5565b60cb549091506001600160a01b0316806121375761210b611c96565b6001600160a01b0316826001600160a01b031614612132576121326282b42960e81b6131ef565b6121bf565b6040516342f19adb60e11b81526001600160a01b038216906385e335b6906121689085906000908890600401615aba565b6020604051808303816000875af1158015612187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ab91906153fc565b6121bf576121bf63e10a050560e01b6131ef565b60cb80546001600160a01b0319166001600160a01b038516908117909155604051600080516020615dc683398151915290600090a260d0546040516316365cdd60e01b81526001600160a01b03909116906316365cdd90611785908690600401614926565b61222c613184565b60006122366131e5565b60cb549091506001600160a01b03168061225a5761225a635f98be1560e11b6131ef565b60405163ce2003a560e01b81526001600160a01b0382169063ce2003a590612289908590600090600401614b94565b6020604051808303816000875af11580156122a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cc91906153fc565b6122e0576122e063251c48e160e11b6131ef565b60cb80546001600160a01b0319169055604051600090600080516020615dc6833981519152908290a260d0546040516316365cdd60e01b81526001600160a01b03909116906316365cdd9061233a90600090600401614926565b600060405180830381600087803b15801561235457600080fd5b505af1158015612368573d6000803e3d6000fd5b5050505050506107c06001609755565b6000612385610d866131e5565b61239957612399633e34a41b60e21b6131ef565b6123a1613184565b60cf54600160a01b900460ff16600114156123c6576123c66345a9661760e01b6131ef565b6123d283610137541190565b6123e6576123e663eb49290360e01b6131ef565b611f0283836001613365565b6124036123fd6131e5565b8361345d565b61241f5760405162461bcd60e51b8152600401610b1a906154d2565b61242b84848484613dac565b50505050565b612439613184565b60006124436131e5565b9050600061244f611c96565b60cf549091506001600160a01b0316858161255057826001600160a01b0316846001600160a01b03161461248c5761248c6282b42960e81b6131ef565b60005b8181101561254a576124d28787838181106124ac576124ac615419565b90506040020160200160208101906124c49190615add565b61271061ffff909116111590565b6124e6576124e6633daf741f60e21b6131ef565b8686828181106124f8576124f8615419565b90506040020160ce60008b8b8581811061251457612514615419565b90506020020135815260200190815260200160002081816125359190615afa565b508190506125428161549f565b91505061248f565b5061269e565b60005b8181101561269c576125708787838181106124ac576124ac615419565b61258457612584633daf741f60e21b6131ef565b826001600160a01b031663ad6e40c78a8a848181106125a5576125a5615419565b905060200201358989858181106125be576125be615419565b905060400201886040518463ffffffff1660e01b81526004016125e393929190615b87565b602060405180830381865afa158015612600573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262491906153fc565b6126385761263863270e710760e21b6131ef565b86868281811061264a5761264a615419565b90506040020160ce60008b8b8581811061266657612666615419565b90506020020135815260200190815260200160002081816126879190615afa565b508190506126948161549f565b915050612553565b505b7feaf422d1ab2d8f38856ab6be8378c08d2886463a33667e896ba3a6ebf2c6260c888888886040516126d39493929190615bb4565b60405180910390a160d054604051632be18fef60e11b81526001600160a01b03909116906357c31fde90612711908b908b908b908b90600401615bb4565b600060405180830381600087803b15801561272b57600080fd5b505af115801561273f573d6000803e3d6000fd5b505050505050505061242b6001609755565b612759613184565b60006127636131e5565b60cf549091506001600160a01b03168061278757612787635f98be1560e11b6131ef565b60405163680c607d60e11b81526001600160a01b0382169063d018c0fa906127b3908590600401614926565b602060405180830381865afa1580156127d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f491906153fc565b6128085761280863251c48e160e11b6131ef565b60cf80546001600160a01b0319169055604051600090600080516020615e26833981519152908290a260d05460405163755d5a1160e11b81526001600160a01b039091169063eabab4229061233a90600090600401614926565b610137818154811061287357600080fd5b600091825260209091200154905081565b606061288f82613795565b6128a3576128a363677510db60e11b6131ef565b60006128ae83610efb565b600081815261013a602052604090208054919250906128cc90615454565b80601f01602080910402602001604051908101604052809291908181526020018280546128f890615454565b80156129455780601f1061291a57610100808354040283529160200191612945565b820191906000526020600020905b81548152906001019060200180831161292857829003601f168201915b5050505050915050919050565b61295a614730565b61296682610137541190565b61297a5761297a63eb49290360e01b6131ef565b6106fc826132b7565b610135805461299190615454565b80601f01602080910402602001604051908101604052809291908181526020018280546129bd90615454565b8015612a0a5780601f106129df57610100808354040283529160200191612a0a565b820191906000526020600020905b8154815290600101906020018083116129ed57829003601f168201915b505050505081565b6001600160a01b0391821660009081526101086020908152604080832093909416825291909152205460ff1690565b610138818154811061287357600080fd5b612a5a613184565b6000612a646131e5565b90506000612a70611c96565b90508460005b81811015612c6957612aad868683818110612a9357612a93615419565b9050602002016020810190612aa89190614c7b565b613d90565b612ac157612ac1631a7387bd60e11b6131ef565b6000612ae4898984818110612ad857612ad8615419565b905060200201356117f3565b90506001600160a01b038116612b2157836001600160a01b0316856001600160a01b031614612b1c57612b1c6282b42960e81b6131ef565b612bdf565b806001600160a01b03166385e335b6868b8b86818110612b4357612b43615419565b600088815260cc60209081526040918290205491516001600160e01b031960e089901b168152612b88969591909302013592506001600160a01b031690600401615aba565b6020604051808303816000875af1158015612ba7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcb91906153fc565b612bdf57612bdf63e10a050560e01b6131ef565b868683818110612bf157612bf1615419565b9050602002016020810190612c069190614c7b565b60cc60008b8b86818110612c1c57612c1c615419565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550508080612c619061549f565b915050612a76565b507facc0f6922d8ccd133dbdaee1908d4d734f25a540223d55145e9fad2898471a4e87878787604051612c9f9493929190615c0c565b60405180910390a160d0546040516315bd85bf60e01b81526001600160a01b03909116906315bd85bf90612cdd908a908a908a908a90600401615c0c565b600060405180830381600087803b158015612cf757600080fd5b505af1158015612d0b573d6000803e3d6000fd5b5050505050505061242b6001609755565b612d24613184565b612d346040820160208301615add565b61271061ffff82161115612d5257612d52633daf741f60e21b6131ef565b6000612d5c6131e5565b60cf549091506001600160a01b031680612da457612d78611c96565b6001600160a01b0316826001600160a01b031614612d9f57612d9f6282b42960e81b6131ef565b612e27565b60405163049a5c0f60e41b81526001600160a01b038216906349a5c0f090612dd29087908690600401615c64565b602060405180830381865afa158015612def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1391906153fc565b612e2757612e2763270e710760e21b6131ef565b8360cd612e348282615afa565b50612e4790506040850160208601615add565b61ffff16612e586020860186614c7b565b6001600160a01b03167f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4160405160405180910390a360d0546001600160a01b031663d10072c0612eab6020870187614c7b565b612ebb6040880160208901615add565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015261ffff166024820152604401611183565b612ef8613115565b6001600160a01b038116612f5d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b1a565b6111c281613c5d565b6000612f70613115565b612f78613184565b6000612f85888888613adf565b85519091506001600160a01b031615612fda57600081815260ce60209081526040909120865181549288015161ffff16600160a01b026001600160b01b03199093166001600160a01b03909116179190911790555b8215611e72576000808080612ff1878901896158cb565b6040805160c0810182523081526001600160601b038b1660208201526001600160a01b03808616828401526001606083015260006080830181905260a083015291516338a2f85160e21b8152959950939750919550935084169163e28be144916130619188908690600401615933565b600060405180830381600087803b15801561307b57600080fd5b505af115801561308f573d6000803e3d6000fd5b50505050505050509050611e7e6001609755565b60606130af60c9613ddf565b905090565b610139818154811061287357600080fd5b60006001600160e01b031982166380ac58cd60e01b14806130f657506001600160e01b03198216635b5e139f60e01b145b806106fc57506301ffc9a760e01b6001600160e01b03198316146106fc565b61311d6131e5565b6001600160a01b031661312e611c96565b6001600160a01b0316146107c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b1a565b600260975414156131d75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b1a565b6002609755565b6001609755565b60006130af613dec565b6111c281613e0e565b61320181613795565b6111c25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610b1a565b60008181526101076020526040902080546001600160a01b0319166001600160a01b038416908117909155819061327e826117d7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6132bf614730565b604051806080016040528060405180602001604052806000815250815260200161013884815481106132f3576132f3615419565b90600052602060002001548152602001610137848154811061331757613317615419565b90600052602060002001548152602001610139848154811061333b5761333b615419565b90600052602060002001548152509050919050565b6000610e06836001600160a01b038416613e18565b600080610138858154811061337c5761337c615419565b906000526020600020015490506000610137868154811061339f5761339f615419565b90600052602060002001549050600061013987815481106133c2576133c2615419565b600091825260208220015491506133d986846154ba565b9050838111156133f3576133f36352df9fe560e01b6131ef565b60005b86811015613430576134118861340c86866154ba565b613e30565b61341c6001856154ba565b9350806134288161549f565b9150506133f6565b5080610137898154811061344657613446615419565b600091825260209091200155979650505050505050565b600080613469836117d7565b9050806001600160a01b0316846001600160a01b0316148061349057506134908185612a12565b806120a65750836001600160a01b03166134a984610a90565b6001600160a01b031614949350505050565b826001600160a01b03166134ce826117d7565b6001600160a01b03161461351d5760405162461bcd60e51b815260206004820152601660248201527522a9219b99189d10333937b6903737ba1037bbb732b960511b6044820152606401610b1a565b6001600160a01b0382166135715760405162461bcd60e51b815260206004820152601b60248201527a4552433732313a20746f20746865207a65726f206164647265737360281b6044820152606401610b1a565b60008181526101076020908152604080832080546001600160a01b03191690556001600160a01b038616835261010690915281208054600192906135b6908490615c8a565b90915550506001600160a01b0382166000908152610106602052604081208054600192906135e59084906154ba565b90915550506000818152610105602052604080822080546001600160a01b0319166001600160a01b038681169182179092559151849391871691600080516020615e0683398151915291a4610bcd838383613f41565b6101398054604080516020808402820181019092528281526000938493849383018282801561368957602002820191906000526020600020905b815481526020019060010190808311613675575b505083519394506000925050505b818110156136d5578281815181106136b1576136b1615419565b602002602001015186106136c3578093505b6136ce6001826154ba565b9050613697565b5091949350505050565b600082815260ce602090815260408083208151808301909252546001600160a01b038116808352600160a01b90910461ffff1692820192909252829161374a57506040805180820190915260cd546001600160a01b0381168252600160a01b900461ffff1660208201525b80516020820151909350612710906137669061ffff1686615ca1565b6137709190615cc0565b9150509250929050565b61378761010385856146ac565b506113fa61010483836146ac565b600090815261010560205260409020546001600160a01b0316151590565b60006137be826117d7565b60008381526101076020908152604080832080546001600160a01b03191690556001600160a01b038416835261010690915281208054929350600192909190613808908490615c8a565b90915550506000828152610105602052604080822080546001600160a01b0319169055518391906001600160a01b03841690600080516020615e06833981519152908390a45050565b6001600160a01b03163b151590565b61386b8a8a8a6140c6565b61387586866141a2565b61387e846141d3565b825160005b818110156138cb576138b88582815181106138a0576138a0615419565b602002602001015160c961397190919063ffffffff16565b50806138c38161549f565b915050613883565b5060016101365587516138e6906101359060208b0190614758565b5060405162df38cb60e71b81526001600160a01b03831690636f9c658090613912903090600401614926565b600060405180830381600087803b15801561392c57600080fd5b505af1158015613940573d6000803e3d6000fd5b505060d080546001600160a01b0319166001600160a01b039590951694909417909355505050505050505050505050565b6000610e06836001600160a01b03841661421c565b60006106fc6001600160a01b03831663440444c560e11b614266565b60008083519050600061013886815481106139bf576139bf615419565b90600052602060002001549050600061013787815481106139e2576139e2615419565b9060005260206000200154905060006101398881548110613a0557613a05615419565b60009182526020822001549150613a1c8786615ca1565b613a2690846154ba565b905083811115613a4057613a406352df9fe560e01b6131ef565b60005b85811015613ab15760005b88811015613a9e57613a7f8a8381518110613a6b57613a6b615419565b6020026020010151868661340c91906154ba565b613a8a6001866154ba565b945080613a968161549f565b915050613a4e565b5080613aa98161549f565b915050613a43565b50826101378a81548110613ac757613ac7615419565b60009182526020909120015598975050505050505050565b600082613af657613af6630ffd11ad60e01b6131ef565b6101398054610136805460018084019094557f22d66071756d4d57920b8322c1a903a27bd75b44065e925d5f9f1c08908d28f683015561013880548085019091557ff79a63dcec80ed75c82f36161f17b9c2f407860160383a7be0a0ee7962c527ae018690556101378054938401815560009081527f43dc304bb3613567eca51c4fb9e7f3128bc51bba882a32550e891d6cbd8a0fa1909301839055805491928692613ba39084906154ba565b9091555050600081815261013a602090815260409091208651613bc892880190614758565b506001600160a01b03831615613c1d57613be183613d90565b613bf557613bf5631a7387bd60e11b6131ef565b600081815260cc6020526040902080546001600160a01b0319166001600160a01b0385161790555b826001600160a01b031684827f7fe7f72f14a53255f3c9e225ab1d40fdb21335b87a7912726a196fb816866ae060405160405180910390a4949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610e06836001600160a01b038416614282565b816001600160a01b0316836001600160a01b03161415613d225760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610b1a565b6001600160a01b0383811660008181526101086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60006106fc6001600160a01b038316633b209e2f60e11b614266565b613db78484846134bb565b613dc384848484614375565b61242b5760405162461bcd60e51b8152600401610b1a90615ce2565b60606000610e068361447e565b6000613df7336117c3565b15613e09575060131936013560601c90565b503390565b8060005260046000fd5b60009081526001919091016020526040902054151590565b6001600160a01b038216613e7d5760405162461bcd60e51b81526020600482015260146024820152734552433732313a207a65726f206164647265737360601b6044820152606401610b1a565b613e8681613795565b15613eca5760405162461bcd60e51b8152602060048201526014602482015273115490cdcc8c4e881d1bdad95b881b5a5b9d195960621b6044820152606401610b1a565b6001600160a01b038216600090815261010660205260408120805460019290613ef49084906154ba565b90915550506000818152610105602052604080822080546001600160a01b0319166001600160a01b0386169081179091559051839290600080516020615e06833981519152908290a45050565b6000613f4b6131e5565b90506000613f588361133f565b90506001600160a01b03811615801590613fe157506040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790613fa090637af46b4f60e11b90600401615550565b602060405180830381865afa158015613fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fe191906153fc565b1561405957604051637f1eaf8560e01b81526001600160a01b0383811660048301528681166024830152858116604483015260648201859052821690637f1eaf8590608401600060405180830381600087803b15801561404057600080fd5b505af1158015614054573d6000803e3d6000fd5b505050505b60d0546040516323de665160e01b81526001600160a01b03909116906323de66519061408d90889088908890600401615565565b600060405180830381600087803b1580156140a757600080fd5b505af11580156140bb573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff166140ed5760405162461bcd60e51b8152600401610b1a90615d14565b602082015161271061ffff8216111561411057614110633daf741f60e21b6131ef565b6141186144d9565b614120614508565b61412984613c5d565b82516001600160a01b03161561417057825160cd8054602086015161ffff16600160a01b026001600160b01b03199091166001600160a01b03909316929092179190911790555b6001600160a01b0382161561242b5760cb80546001600160a01b0384166001600160a01b031990911617905550505050565b600054610100900460ff166141c95760405162461bcd60e51b8152600401610b1a90615d14565b61161f8282614537565b600054610100900460ff166141fa5760405162461bcd60e51b8152600401610b1a90615d14565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b60006142288383613e18565b61425e575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106fc565b5060006106fc565b600061427183614587565b8015610e065750610e0683836145ba565b6000818152600183016020526040812054801561436b5760006142a6600183615c8a565b85549091506000906142ba90600190615c8a565b905081811461431f5760008660000182815481106142da576142da615419565b90600052602060002001549050808760000184815481106142fd576142fd615419565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061433057614330615d5f565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106fc565b60009150506106fc565b6000614389846001600160a01b0316613851565b1561447657836001600160a01b031663150b7a026143a56131e5565b8786866040518563ffffffff1660e01b81526004016143c79493929190615d75565b6020604051808303816000875af1925050508015614402575060408051601f3d908101601f191682019092526143ff91810190615da8565b60015b61445c573d808015614430576040519150601f19603f3d011682016040523d82523d6000602084013e614435565b606091505b5080516144545760405162461bcd60e51b8152600401610b1a90615ce2565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506120a6565b5060016120a6565b606081600001805480602002602001604051908101604052809291908181526020018280548015610fd857602002820191906000526020600020905b8154815260200190600101908083116144ba5750505050509050919050565b600054610100900460ff166145005760405162461bcd60e51b8152600401610b1a90615d14565b6107c061464e565b600054610100900460ff1661452f5760405162461bcd60e51b8152600401610b1a90615d14565b6107c0614685565b600054610100900460ff1661455e5760405162461bcd60e51b8152600401610b1a90615d14565b815161457290610103906020850190614758565b508051610bcd90610104906020840190614758565b600061459a826301ffc9a760e01b6145ba565b80156106fc57506145b3826001600160e01b03196145ba565b1592915050565b6000806301ffc9a760e01b836040516024016145d69190615550565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015614637575060208210155b80156146435750600081115b979650505050505050565b600054610100900460ff166146755760405162461bcd60e51b8152600401610b1a90615d14565b6107c06146806131e5565b613c5d565b600054610100900460ff166131de5760405162461bcd60e51b8152600401610b1a90615d14565b8280546146b890615454565b90600052602060002090601f0160209004810192826146da5760008555614720565b82601f106146f35782800160ff19823516178555614720565b82800160010185558215614720579182015b82811115614720578235825591602001919060010190614705565b5061472c9291506147cc565b5090565b6040518060800160405280606081526020016000815260200160008152602001600081525090565b82805461476490615454565b90600052602060002090601f0160209004810192826147865760008555614720565b82601f1061479f57805160ff1916838001178555614720565b82800160010185558215614720579182015b828111156147205782518255916020019190600101906147b1565b5b8082111561472c57600081556001016147cd565b6001600160e01b0319811681146111c257600080fd5b60006020828403121561480957600080fd5b8135610e06816147e1565b60008083601f84011261482657600080fd5b5081356001600160401b0381111561483d57600080fd5b602083019150836020828501011115610d1e57600080fd5b60008060006040848603121561486a57600080fd5b8335925060208401356001600160401b0381111561488757600080fd5b61489386828701614814565b9497909650939450505050565b6000815180845260005b818110156148c6576020818501810151868301820152016148aa565b818111156148d8576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610e0660208301846148a0565b60006020828403121561491257600080fd5b5035919050565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b6001600160a01b03811681146111c257600080fd5b6000806040838503121561496257600080fd5b823561496d8161493a565b946020939093013593505050565b60008083601f84011261498d57600080fd5b5081356001600160401b038111156149a457600080fd5b6020830191508360208260051b8501011115610d1e57600080fd5b600080602083850312156149d257600080fd5b82356001600160401b038111156149e857600080fd5b6149f48582860161497b565b90969095509350505050565b6000815160808452614a1560808501826148a0565b90506020830151602085015260408301516040850152606083015160608501528091505092915050565b600081518084526020808501808196508360051b8101915082860160005b85811015614a87578284038952614a758483516148a0565b98850198935090840190600101614a5d565b5091979650505050505050565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b83811015614aeb57605f19888703018552614ad9868351614a00565b95509382019390820190600101614abd565b505085840381870152505050614b018185614a3f565b95945050505050565b600080600060608486031215614b1f57600080fd5b833592506020840135614b318161493a565b929592945050506040919091013590565b600080600060608486031215614b5757600080fd5b8335614b628161493a565b92506020840135614b318161493a565b60008060408385031215614b8557600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008060008060008060608789031215614bc657600080fd5b86356001600160401b0380821115614bdd57600080fd5b614be98a838b01614814565b90985096506020890135915080821115614c0257600080fd5b614c0e8a838b01614814565b90965094506040890135915080821115614c2757600080fd5b50614c3489828a01614814565b979a9699509497509295939492505050565b60008060208385031215614c5957600080fd5b82356001600160401b03811115614c6f57600080fd5b6149f485828601614814565b600060208284031215614c8d57600080fd5b8135610e068161493a565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614cd657614cd6614c98565b604052919050565b600082601f830112614cef57600080fd5b813560206001600160401b03821115614d0a57614d0a614c98565b8160051b614d19828201614cae565b9283528481018201928281019087851115614d3357600080fd5b83870192505b84831015614643578235614d4c8161493a565b82529183019190830190614d39565b600080600060608486031215614d7057600080fd5b8335925060208401356001600160401b03811115614d8d57600080fd5b614d9986828701614cde565b925050604084013590509250925092565b600082601f830112614dbb57600080fd5b81356001600160401b03811115614dd457614dd4614c98565b614de7601f8201601f1916602001614cae565b818152846020838601011115614dfc57600080fd5b816020850160208301376000918101602001919091529392505050565b61ffff811681146111c257600080fd5b600060408284031215614e3b57600080fd5b604080519081016001600160401b0381118282101715614e5d57614e5d614c98565b6040529050808235614e6e8161493a565b81526020830135614e7e81614e19565b6020919091015292915050565b60008060008060008060008060e0898b031215614ea757600080fd5b88356001600160401b0380821115614ebe57600080fd5b614eca8c838d01614daa565b995060208b0135985060408b01359150614ee38261493a565b819750614ef38c60608d01614e29565b965060a08b0135915080821115614f0957600080fd5b614f158c838d01614814565b909650945060c08b0135915080821115614f2e57600080fd5b50614f3b8b828c01614814565b999c989b5096995094979396929594505050565b600081518084526020808501945080840160005b83811015614f7f57815187529582019590820190600101614f63565b509495945050505050565b602081526000610e066020830184614f4f565b60008060008060008060c08789031215614fb657600080fd5b86356001600160401b0380821115614fcd57600080fd5b614fd98a838b01614daa565b97506020890135965060408901359150614ff28261493a565b8195506150028a60608b01614e29565b945060a0890135915080821115614c2757600080fd5b6000806040838503121561502b57600080fd5b8235915060208301356001600160401b0381111561504857600080fd5b61377085828601614cde565b60008060008060a0858703121561506a57600080fd5b84356001600160401b038082111561508157600080fd5b61508d88838901614daa565b955060208701359150808211156150a357600080fd5b506150b087828801614daa565b93505060408501356150c18161493a565b91506150d08660608701614e29565b905092959194509250565b80151581146111c257600080fd5b80356150f4816150db565b919050565b6000806040838503121561510c57600080fd5b82356151178161493a565b91506020830135615127816150db565b809150509250929050565b6000806040838503121561514557600080fd5b8235915060208301356151278161493a565b6000806000806080858703121561516d57600080fd5b84356151788161493a565b935060208501356151888161493a565b92506040850135915060608501356001600160401b038111156151aa57600080fd5b6151b687828801614daa565b91505092959194509250565b600080600080604085870312156151d857600080fd5b84356001600160401b03808211156151ef57600080fd5b6151fb8883890161497b565b9096509450602087013591508082111561521457600080fd5b818701915087601f83011261522857600080fd5b81358181111561523757600080fd5b8860208260061b850101111561524c57600080fd5b95989497505060200194505050565b602081526000610e066020830184614a00565b6000806040838503121561528157600080fd5b823561528c8161493a565b915060208301356151278161493a565b600080600080604085870312156152b257600080fd5b84356001600160401b03808211156152c957600080fd5b6152d58883890161497b565b909650945060208701359150808211156152ee57600080fd5b506152fb8782880161497b565b95989497509550505050565b600060408284031215610d7357600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561535a5783516001600160a01b031683529284019291840191600101615335565b50909695505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b038781168252861660208201526040810185905260a0606082018190526000906153d99083018587615366565b9050600783106153eb576153eb61538f565b826080830152979650505050505050565b60006020828403121561540e57600080fd5b8151610e06816150db565b634e487b7160e01b600052603260045260246000fd5b6040815260006154426040830185614f4f565b8281036020840152614b018185614a3f565b600181811c9082168061546857607f821691505b60208210811415610d7357634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156154b3576154b3615489565b5060010190565b600082198211156154cd576154cd615489565b500190565b6020808252601b908201527a115490cdcc8c4e8818d85b1b195c881d5b985d5d1a1bdc9a5e9959602a1b604082015260600190565b60608152600061551b60608301888a615366565b828103602084015261552e818789615366565b90508281036040840152615543818587615366565b9998505050505050505050565b6001600160e01b031991909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b80356150f48161493a565b600080600080600080600080610100898b0312156155b157600080fd5b6155ba89615589565b975060208901356001600160401b03808211156155d657600080fd5b6155e28c838d01614daa565b985060408b01359150808211156155f857600080fd5b6156048c838d01614daa565b975060608b013591508082111561561a57600080fd5b6156268c838d01614daa565b965061563460808c01615589565b955060a08b013591508082111561564a57600080fd5b506156578b828c01614cde565b93505061566660c08a016150e9565b915061567460e08a01615589565b90509295985092959890939650565b6001600160a01b039290921682521515602082015260400190565b81835260006001600160fb1b038311156156b757600080fd5b8260051b8083602087013760009401602001938452509192915050565b6020815260006120a660208301848661569e565b803565ffffffffffff811681146150f457600080fd5b60008060008060008060008060006101208a8c03121561571d57600080fd5b89356157288161493a565b985060208a01356157388161493a565b975061574660408b016156e8565b965061575460608b016156e8565b955060808a01356001600160c01b038116811461577057600080fd5b945061577e60a08b016156e8565b935061578c60c08b016156e8565b925061579a60e08b016156e8565b91506101008a01356157ab8161493a565b809150509295985092959850929598565b65ffffffffffff169052565b60006101c0820190506157dc828451614919565b60208301516157ee60208401826157bc565b50604083015161580160408401826157bc565b5060608301516158146060840182614919565b50608083015161582760808401826157bc565b5060a083015161583a60a08401826157bc565b5060c083015161584d60c0840182614919565b5060e083015161586060e08401826157bc565b5061010080840151615874828501826157bc565b5050610120838101516001600160c01b0316908301526101408084015161589d828501826157bc565b505061016083810151151590830152610180808401511515908301526101a092830151929091019190915290565b600080600080608085870312156158e157600080fd5b84356001600160601b03811681146158f857600080fd5b935060208501356159088161493a565b925060408501356159188161493a565b915060608501356001600160401b038111156151aa57600080fd5b83516001600160a01b0390811682526020808601516001600160601b0316908301526040808601519091169082015260608085015115159082015260808085015115159082015260a08481015115159082015260006101006159a060c08401866001600160601b03169052565b8060e0840152611e7e818401856148a0565b600080600080600060a086880312156159ca57600080fd5b85516159d58161493a565b6020870151604088015191965094506159ed8161493a565b60608701519093506159fe8161493a565b80925050608086015190509295509295909350565b60048110615a2357615a2361538f565b9052565b60006101408201905084825260018060a01b03808551166020840152806020860151166040840152806040860151166060840152506060840151615a6e6080840182614919565b50608084015160a083015260a084015160c083015260c0840151615a9660e084018215159052565b5060e0840151615aaa610100840182615a13565b5082610120830152949350505050565b6001600160a01b0393841681526020810192909252909116604082015260600190565b600060208284031215615aef57600080fd5b8135610e0681614e19565b8135615b058161493a565b81546001600160a01b031981166001600160a01b039290921691821783556020840135615b3181614e19565b6001600160b01b03199190911690911760a09190911b61ffff60a01b1617905550565b8035615b5f8161493a565b6001600160a01b031682526020810135615b7881614e19565b61ffff81166020840152505050565b83815260808101615b9b6020830185615b54565b6001600160a01b03929092166060919091015292915050565b60006040808352615bc8818401878961569e565b83810360208086019190915285825286910160005b86811015615bff57615bef8284615b54565b9183019190830190600101615bdd565b5098975050505050505050565b604081526000615c2060408301868861569e565b8281036020848101919091528482528591810160005b86811015615bff578335615c498161493a565b6001600160a01b031682529282019290820190600101615c36565b60608101615c728285615b54565b6001600160a01b039290921660409190910152919050565b600082821015615c9c57615c9c615489565b500390565b6000816000190483118215151615615cbb57615cbb615489565b500290565b600082615cdd57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526018908201527722a9219b99189d1034b73b30b634b2103932b1b2b4bb32b960411b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611e7e908301846148a0565b600060208284031215615dba57600080fd5b8151610e06816147e156fec407dfe559ca4a63d7cf8439b9fce2965d7a4c8c92eb5d5047f53bb9eec295fd73e05f4c0a27cbf60841afa4a2f8577f5e99db3e3e9c293800d6e6b1f7b8a7abddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efe236d251e7da4ac8a3c275f80aebc9b74cbf356425fa04864da5043511a81219a164736f6c634300080a000a