Overview ERC1155
Total Supply:
0 SF

Holders:
1
Profile Summary
Blockchain:
Ethereum (1)

Contract Source Code Verified (Partial Match)
Contract Name:
ERC1155SeaDropCloneable

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 100000 runs

Created At:
Tue, 02 Apr 2024 03:40:23 GMT
ERC1155SeaDropCloneable.sol
src
clones
ERC1155SeaDropCloneable.sol


Contract ABI
[
  {
    "inputs": [],
    "name": "AccountBalanceOverflow",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AllowedSeaportCannotBeZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ArrayLengthsMismatch",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "got",
        "type": "uint256"
      }
    ],
    "name": "CannotExceedMaxSupplyOfUint64",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CreatorPayoutAddressCannotBeZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CreatorPayoutBasisPointsCannotBeZero",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CreatorPayoutsNotSet",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "DuplicateFeeRecipient",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "DuplicatePayer",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "DuplicateSigner",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "FeeRecipientCannotBeZeroAddress",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "got",
        "type": "address"
      }
    ],
    "name": "FeeRecipientNotAllowed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "FeeRecipientNotPresent",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InsufficientBalance",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "caller",
        "type": "address"
      }
    ],
    "name": "InvalidCallerOnlyAllowedSeaport",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "totalReceivedBasisPoints",
        "type": "uint256"
      }
    ],
    "name": "InvalidCreatorPayoutBasisPoints",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "totalReceivedBasisPoints",
        "type": "uint256"
      }
    ],
    "name": "InvalidCreatorPayoutTotalBasisPoints",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint8",
        "name": "version",
        "type": "uint8"
      }
    ],
    "name": "InvalidExtraDataEncoding",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "feeBps",
        "type": "uint256"
      }
    ],
    "name": "InvalidFeeBps",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "fromTokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "toTokenId",
        "type": "uint256"
      }
    ],
    "name": "InvalidFromAndToTokenId",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidProof",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "got",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maximum",
        "type": "uint256"
      }
    ],
    "name": "InvalidSignedEndTime",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "got",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minimumOrMaximum",
        "type": "uint256"
      }
    ],
    "name": "InvalidSignedFeeBps",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "got",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minimum",
        "type": "uint256"
      }
    ],
    "name": "InvalidSignedFromTokenId",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "got",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maximum",
        "type": "uint256"
      }
    ],
    "name": "InvalidSignedMaxTokenSupplyForStage",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "got",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maximum",
        "type": "uint256"
      }
    ],
    "name": "InvalidSignedMaxTotalMintableByWallet",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "got",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maximum",
        "type": "uint256"
      }
    ],
    "name": "InvalidSignedMaxTotalMintableByWalletPerToken",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "paymentToken",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "got",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minimum",
        "type": "uint256"
      }
    ],
    "name": "InvalidSignedMintPrice",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "got",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "want",
        "type": "address"
      }
    ],
    "name": "InvalidSignedPaymentToken",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "got",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minimum",
        "type": "uint256"
      }
    ],
    "name": "InvalidSignedStartTime",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "got",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maximum",
        "type": "uint256"
      }
    ],
    "name": "InvalidSignedToTokenId",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "startTime",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "endTime",
        "type": "uint256"
      }
    ],
    "name": "InvalidStartAndEndTime",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint8",
        "name": "substandard",
        "type": "uint8"
      }
    ],
    "name": "InvalidSubstandard",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MaxSupplyMismatch",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MintAmountsMismatch",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "total",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maxSupply",
        "type": "uint256"
      }
    ],
    "name": "MintExceedsMaxSupply",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "total",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "allowed",
        "type": "uint256"
      }
    ],
    "name": "MintQuantityExceedsMaxMintedPerWallet",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "total",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "allowed",
        "type": "uint256"
      }
    ],
    "name": "MintQuantityExceedsMaxMintedPerWalletForTokenId",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "total",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maxSupply",
        "type": "uint256"
      }
    ],
    "name": "MintQuantityExceedsMaxSupply",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "total",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maxTokenSupplyForStage",
        "type": "uint256"
      }
    ],
    "name": "MintQuantityExceedsMaxTokenSupplyForStage",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MustSpecifyERC1155ConsiderationItemForSeaDropMint",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NewOwnerIsZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NoBalanceToWithdraw",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NoHandoverRequest",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "currentTimestamp",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "startTimestamp",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "endTimestamp",
        "type": "uint256"
      }
    ],
    "name": "NotActive",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotOwnerNorApproved",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "OfferContainsDuplicateTokenId",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OnlyDelegateCalled",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "PayerCannotBeZeroAddress",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "got",
        "type": "address"
      }
    ],
    "name": "PayerNotAllowed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "PayerNotPresent",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ProvenanceHashCannotBeSetAfterAlreadyBeingSet",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ProvenanceHashCannotBeSetAfterMintStarted",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "PublicDropStageNotPresent",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "PublicDropsMismatch",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "RoyaltyOverflow",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "RoyaltyReceiverIsZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SameTransferValidator",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SignatureAlreadyUsed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SignedMintsMustRestrictFeeRecipients",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SignerCannotBeZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SignerNotPresent",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "startTokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "endTokenId",
        "type": "uint256"
      }
    ],
    "name": "TokenIdNotWithinDropStageRange",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferToNonERC1155ReceiverImplementer",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TransferToZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "Unauthorized",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint8",
        "name": "version",
        "type": "uint8"
      }
    ],
    "name": "UnsupportedExtraDataVersion",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "selector",
        "type": "bytes4"
      }
    ],
    "name": "UnsupportedFunctionSelector",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "previousMerkleRoot",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "newMerkleRoot",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "string[]",
        "name": "publicKeyURI",
        "type": "string[]"
      },
      {
        "indexed": false,
        "internalType": "string",
        "name": "allowListURI",
        "type": "string"
      }
    ],
    "name": "AllowListUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "feeRecipient",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "bool",
        "name": "allowed",
        "type": "bool"
      }
    ],
    "name": "AllowedFeeRecipientUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address[]",
        "name": "allowedSeaport",
        "type": "address[]"
      }
    ],
    "name": "AllowedSeaportUpdated",
    "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": "isApproved",
        "type": "bool"
      }
    ],
    "name": "ApprovalForAll",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "_fromTokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "_toTokenId",
        "type": "uint256"
      }
    ],
    "name": "BatchMetadataUpdate",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "string",
        "name": "newContractURI",
        "type": "string"
      }
    ],
    "name": "ContractURIUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "payoutAddress",
            "type": "address"
          },
          {
            "internalType": "uint16",
            "name": "basisPoints",
            "type": "uint16"
          }
        ],
        "indexed": false,
        "internalType": "struct CreatorPayout[]",
        "name": "creatorPayouts",
        "type": "tuple[]"
      }
    ],
    "name": "CreatorPayoutsUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "string",
        "name": "newDropURI",
        "type": "string"
      }
    ],
    "name": "DropURIUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint8",
        "name": "version",
        "type": "uint8"
      }
    ],
    "name": "Initialized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "newMaxSupply",
        "type": "uint256"
      }
    ],
    "name": "MaxSupplyUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "pendingOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipHandoverCanceled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "pendingOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipHandoverRequested",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "oldOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "payer",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "bool",
        "name": "allowed",
        "type": "bool"
      }
    ],
    "name": "PayerUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "previousHash",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "newHash",
        "type": "bytes32"
      }
    ],
    "name": "ProvenanceHashUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint80",
            "name": "startPrice",
            "type": "uint80"
          },
          {
            "internalType": "uint80",
            "name": "endPrice",
            "type": "uint80"
          },
          {
            "internalType": "uint40",
            "name": "startTime",
            "type": "uint40"
          },
          {
            "internalType": "uint40",
            "name": "endTime",
            "type": "uint40"
          },
          {
            "internalType": "bool",
            "name": "restrictFeeRecipients",
            "type": "bool"
          },
          {
            "internalType": "address",
            "name": "paymentToken",
            "type": "address"
          },
          {
            "internalType": "uint24",
            "name": "fromTokenId",
            "type": "uint24"
          },
          {
            "internalType": "uint24",
            "name": "toTokenId",
            "type": "uint24"
          },
          {
            "internalType": "uint16",
            "name": "maxTotalMintableByWallet",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "maxTotalMintableByWalletPerToken",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "feeBps",
            "type": "uint16"
          }
        ],
        "indexed": false,
        "internalType": "struct PublicDrop",
        "name": "publicDrop",
        "type": "tuple"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "PublicDropUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "basisPoints",
        "type": "uint256"
      }
    ],
    "name": "RoyaltyInfoUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "payer",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "dropStageIndex",
        "type": "uint256"
      }
    ],
    "name": "SeaDropMint",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "enum SeaDropErrorsAndEvents.SEADROP_TOKEN_TYPE",
        "name": "tokenType",
        "type": "uint8"
      }
    ],
    "name": "SeaDropTokenDeployed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "signer",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "bool",
        "name": "allowed",
        "type": "bool"
      }
    ],
    "name": "SignerUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      }
    ],
    "name": "TransferBatch",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "TransferSingle",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "oldValidator",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "newValidator",
        "type": "address"
      }
    ],
    "name": "TransferValidatorUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "string",
        "name": "value",
        "type": "string"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "URI",
    "type": "event"
  },
  {
    "stateMutability": "nonpayable",
    "type": "fallback"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "result",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "owners",
        "type": "address[]"
      },
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      }
    ],
    "name": "balanceOfBatch",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "balances",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      }
    ],
    "name": "batchBurn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "cancelOwnershipHandover",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "pendingOwner",
        "type": "address"
      }
    ],
    "name": "completeOwnershipHandover",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "contractURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "fromTokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "toTokenId",
        "type": "uint256"
      }
    ],
    "name": "emitBatchMetadataUpdate",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getTransferValidationFunction",
    "outputs": [
      {
        "internalType": "bytes4",
        "name": "functionSignature",
        "type": "bytes4"
      },
      {
        "internalType": "bool",
        "name": "isViewFunction",
        "type": "bool"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getTransferValidator",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "allowedConfigurer",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "allowedSeaport",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "name_",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol_",
        "type": "string"
      },
      {
        "internalType": "address",
        "name": "initialOwner",
        "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": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "maxSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "result",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "pendingOwner",
        "type": "address"
      }
    ],
    "name": "ownershipHandoverExpiresAt",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "result",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "ownershipHandoverValidFor",
    "outputs": [
      {
        "internalType": "uint64",
        "name": "",
        "type": "uint64"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "provenanceHash",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "requestOwnershipHandover",
    "outputs": [],
    "stateMutability": "payable",
    "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": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "safeBatchTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "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": "isApproved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "newBaseURI",
        "type": "string"
      }
    ],
    "name": "setBaseURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "newContractURI",
        "type": "string"
      }
    ],
    "name": "setContractURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "internalType": "uint96",
        "name": "feeNumerator",
        "type": "uint96"
      }
    ],
    "name": "setDefaultRoyalty",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "newMaxSupply",
        "type": "uint256"
      }
    ],
    "name": "setMaxSupply",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "newProvenanceHash",
        "type": "bytes32"
      }
    ],
    "name": "setProvenanceHash",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newValidator",
        "type": "address"
      }
    ],
    "name": "setTransferValidator",
    "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": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "totalMinted",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "uri",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  }
]


Contract Creation Code
608060405234801561001057600080fd5b506145c1806100206000396000f3fe6080604052600436106102695760003560e01c8063869f759411610153578063c6ab67a3116100cb578063f242432a1161007f578063f5298aca11610064578063f5298aca1461143d578063f6eb127a1461145d578063fee81cf41461147d57610269565b8063f242432a1461140a578063f2fde38b1461142a57610269565b8063e8a3d485116100b0578063e8a3d485146113c2578063e985e9c5146113d7578063f04e283e146113f757610269565b8063c6ab67a31461138f578063d7533f02146113a457610269565b80639d7f4ebf11610122578063a483011411610107578063a48301141461130c578063a9fc664e1461132c578063bd85b0391461134c57610269565b80639d7f4ebf146112a1578063a22cb465146112ec57610269565b8063869f7594146112015780638da5cb5b14611238578063938e3d7b1461126c57806395d89b411461128c57610269565b80632a55205a116101e65780634e1273f4116101b557806355f804b31161019a57806355f804b3146111c45780636c0360eb146111e4578063715018a6146111f957610269565b80634e1273f41461118f57806354d1f13d146111bc57610269565b80632a55205a146110e35780632eb2c2d61461112f578063362925c21461114f57806337da577c1461116f57610269565b8063098144d41161023d5780630d705df6116102225780630d705df61461107a5780630e89341c146110bb57806325692962146110db57610269565b8063098144d41461100e578063099b6bfa1461105a57610269565b8062fdd58e14610f4d57806301ffc9a714610f9a57806304634d8d14610fca57806306fdde0314610fec575b34801561027557600080fd5b5060003660607fffffffff0000000000000000000000000000000000000000000000000000000083351682846102ae8260048184613770565b909250905060007fffffffff0000000000000000000000000000000000000000000000000000000084167f6aba501800000000000000000000000000000000000000000000000000000000148061034657507fffffffff0000000000000000000000000000000000000000000000000000000084167fb957d0cb00000000000000000000000000000000000000000000000000000000145b8061039257507fffffffff0000000000000000000000000000000000000000000000000000000084167febb4a55f00000000000000000000000000000000000000000000000000000000145b806103de57507fffffffff0000000000000000000000000000000000000000000000000000000084167f1ecdfb8c00000000000000000000000000000000000000000000000000000000145b8061042a57507fffffffff0000000000000000000000000000000000000000000000000000000084167f7f2a5cca00000000000000000000000000000000000000000000000000000000145b8061047657507fffffffff0000000000000000000000000000000000000000000000000000000084167f8e7d1e4300000000000000000000000000000000000000000000000000000000145b806104c257507fffffffff0000000000000000000000000000000000000000000000000000000084167ff460590b00000000000000000000000000000000000000000000000000000000145b8061050e57507fffffffff0000000000000000000000000000000000000000000000000000000084167f69ec1daa00000000000000000000000000000000000000000000000000000000145b8061055a57507fffffffff0000000000000000000000000000000000000000000000000000000084167f582d424100000000000000000000000000000000000000000000000000000000145b806105a657507fffffffff0000000000000000000000000000000000000000000000000000000084167f9891976500000000000000000000000000000000000000000000000000000000145b806105f257507fffffffff0000000000000000000000000000000000000000000000000000000084167f2e778efc00000000000000000000000000000000000000000000000000000000145b8061063e57507fffffffff0000000000000000000000000000000000000000000000000000000084167fe6fd04ff00000000000000000000000000000000000000000000000000000000145b8061068a57507fffffffff0000000000000000000000000000000000000000000000000000000084167fa9236bc400000000000000000000000000000000000000000000000000000000145b806106d557507fffffffff0000000000000000000000000000000000000000000000000000000084167e378a3a00000000000000000000000000000000000000000000000000000000145b8061072157507fffffffff0000000000000000000000000000000000000000000000000000000084167f6233719600000000000000000000000000000000000000000000000000000000145b8061076d57507fffffffff0000000000000000000000000000000000000000000000000000000084167f82daf2a100000000000000000000000000000000000000000000000000000000145b806107b957507fffffffff0000000000000000000000000000000000000000000000000000000084167fd59ff1fc00000000000000000000000000000000000000000000000000000000145b8061080557507fffffffff0000000000000000000000000000000000000000000000000000000084167f94cf795e00000000000000000000000000000000000000000000000000000000145b8061085157507fffffffff0000000000000000000000000000000000000000000000000000000084167ffde6e55400000000000000000000000000000000000000000000000000000000145b8061089d57507fffffffff0000000000000000000000000000000000000000000000000000000084167f1055d70800000000000000000000000000000000000000000000000000000000145b905060007fffffffff0000000000000000000000000000000000000000000000000000000085167f6aba501800000000000000000000000000000000000000000000000000000000148061093257507fffffffff0000000000000000000000000000000000000000000000000000000085167fb957d0cb00000000000000000000000000000000000000000000000000000000145b8061097e57507fffffffff0000000000000000000000000000000000000000000000000000000085167febb4a55f00000000000000000000000000000000000000000000000000000000145b806109ca57507fffffffff0000000000000000000000000000000000000000000000000000000085167f1ecdfb8c00000000000000000000000000000000000000000000000000000000145b80610a1657507fffffffff0000000000000000000000000000000000000000000000000000000085167f7f2a5cca00000000000000000000000000000000000000000000000000000000145b80610a6257507fffffffff0000000000000000000000000000000000000000000000000000000085167f8e7d1e4300000000000000000000000000000000000000000000000000000000145b80610aae57507fffffffff0000000000000000000000000000000000000000000000000000000085167f69ec1daa00000000000000000000000000000000000000000000000000000000145b90508115610c84578015610ac957610ac46114b0565b610ba0565b7f0b9fa6f5000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000861601610ba0576000610b226020600c8688613770565b610b2b9161379a565b60601c90503381141580610b9157503373ffffffffffffffffffffffffffffffffffffffff8216148015610b915750610b6261155e565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600891909101602052604090205460ff16155b15610b9e57610b9e6114b0565b505b600954604051600091829173ffffffffffffffffffffffffffffffffffffffff90911690610bd190839036906137e2565b600060405180830381855af49150503d8060008114610c0c576040519150601f19603f3d011682016040523d82523d6000602084013e610c11565b606091505b509150915081610c2357805181602001fd5b7f676e689b000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000881601610c7657610c768686611592565b9650610f4295505050505050565b7fe3f34ec7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000861601610da157600080610cdc85870187613814565b91509150600080600080610d59868660008181526001602090815260408083205473ffffffffffffffffffffffffffffffffffffffff9095168352600282528083205460038352818420948452939091529020549092909167ffffffffffffffff7001000000000000000000000000000000008204811692911690565b6040805160208101959095528481019390935260608401919091526080808401919091528151808403909101815260a090920190529b50610f429a5050505050505050505050565b7f0b226d32000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000861601610df85763f4dd92ce6000526020601cf35b7fca388191000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000861601610e81576009546040805173ffffffffffffffffffffffffffffffffffffffff90921660208301520160405160208183030381529060405295505050505050610f42565b7f51d9a6ad000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000861601610ee157610ed26114b0565b610edc84846116fd565b610f3c565b6040517f67fe1ffb0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000861660048201526024015b60405180910390fd5b50505050505b915050805190602001f35b348015610f5957600080fd5b50610f87610f68366004613814565b679a31110384e0b0c96020526014919091526000908152604090205490565b6040519081526020015b60405180910390f35b348015610fa657600080fd5b50610fba610fb5366004613840565b611735565b6040519015158152602001610f91565b348015610fd657600080fd5b50610fea610fe5366004613882565b611823565b005b348015610ff857600080fd5b50611001611896565b604051610f9191906138cc565b34801561101a57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610f91565b34801561106657600080fd5b50610fea611075366004613938565b611928565b34801561108657600080fd5b50604080517f1854b2410000000000000000000000000000000000000000000000000000000081526001602082015201610f91565b3480156110c757600080fd5b506110016110d6366004613938565b6119a6565b610fea611a3a565b3480156110ef57600080fd5b506111036110fe366004613951565b611a8a565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610f91565b34801561113b57600080fd5b50610fea61114a366004613a01565b611afd565b34801561115b57600080fd5b50610fea61116a366004613bfd565b611bc4565b34801561117b57600080fd5b50610fea61118a366004613951565b611dd3565b34801561119b57600080fd5b506111af6111aa366004613c9b565b611e97565b604051610f919190613d07565b610fea611f07565b3480156111d057600080fd5b50610fea6111df366004613d4b565b611f43565b3480156111f057600080fd5b50611001611faf565b610fea611fbe565b34801561120d57600080fd5b50610f8761121c366004613938565b60009081526001602052604090205467ffffffffffffffff1690565b34801561124457600080fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754611035565b34801561127857600080fd5b50610fea611287366004613d4b565b611fd0565b34801561129857600080fd5b50611001612017565b3480156112ad57600080fd5b50610f876112bc366004613938565b600090815260016020526040902054700100000000000000000000000000000000900467ffffffffffffffff1690565b3480156112f857600080fd5b50610fea611307366004613d8d565b612026565b34801561131857600080fd5b50610fea611327366004613951565b61207c565b34801561133857600080fd5b50610fea611347366004613dc0565b612105565b34801561135857600080fd5b50610f87611367366004613938565b60009081526001602052604090205468010000000000000000900467ffffffffffffffff1690565b34801561139b57600080fd5b50600854610f87565b3480156113b057600080fd5b506040516202a3008152602001610f91565b3480156113ce57600080fd5b50611001612119565b3480156113e357600080fd5b50610fba6113f2366004613ddd565b612128565b610fea611405366004613dc0565b612193565b34801561141657600080fd5b50610fea611425366004613e0b565b6121d0565b610fea611438366004613dc0565b6122c5565b34801561144957600080fd5b50610fea611458366004613e87565b6122ec565b34801561146957600080fd5b50610fea611478366004613ebc565b6122fd565b34801561148957600080fd5b50610f87611498366004613dc0565b63389a75e1600c908152600091909152602090205490565b60095473ffffffffffffffffffffffffffffffffffffffff16331480159061152557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561155c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60008061158c60017fa1f93c45d55294e6c2e764d95774fe71c86ec26daf62930bcecf3675030e7d9b613f6e565b92915050565b600080806115a28486018661405f565b60368101519396509194509092505060601c806115bc5750825b825160008167ffffffffffffffff8111156115d9576115d9613ac0565b604051908082528060200260200182016040528015611602578160200160208202803683370190505b50905060008267ffffffffffffffff81111561162057611620613ac0565b604051908082528060200260200182016040528015611649578160200160208202803683370190505b50905060005b838110156116d6578681815181106116695761166961410e565b6020026020010151604001518382815181106116875761168761410e565b6020026020010181815250508681815181106116a5576116a561410e565b6020026020010151606001518282815181106116c3576116c361410e565b602090810291909101015260010161164f565b506116f28483836040518060200160405280600081525061236c565b505050505050505050565b6000808061170d84860186614198565b92509250925061172e8383836040518060200160405280600081525061236c565b5050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f94189afb0000000000000000000000000000000000000000000000000000000014806117c857507fffffffff0000000000000000000000000000000000000000000000000000000082167f1be900b100000000000000000000000000000000000000000000000000000000145b8061181457507f2e778efc000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061158c575061158c826123cb565b61182b6114b0565b6118358282612540565b6040805173ffffffffffffffffffffffffffffffffffffffff841681526bffffffffffffffffffffffff831660208201527ff21fccf4d64d86d532c4e4eb86c007b6ad57a460c27d724188625e755ec6cf6d91015b60405180910390a15050565b6060600480546118a59061420e565b80601f01602080910402602001604051908101604052809291908181526020018280546118d19061420e565b801561191e5780601f106118f35761010080835404028352916020019161191e565b820191906000526020600020905b81548152906001019060200180831161190157829003601f168201915b5050505050905090565b6119306114b0565b600854801561196b576040517f2858c21800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600882905560408051828152602081018490527f7c22004198bf87da0f0dab623c72e66ca1200f4454aa3b9ca30f436275428b7c910161188a565b6060600680546119b59061420e565b80601f01602080910402602001604051908101604052809291908181526020018280546119e19061420e565b8015611a2e5780601f10611a0357610100808354040283529160200191611a2e565b820191906000526020600020905b815481529060010190602001808311611a1157829003601f168201915b50505050509050919050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b600082815268aa4ec00224afccfdb76020526040812054606081901c91906127109083611abe576020515490508060601c93505b606084901b18847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff829004811182023d3d3e9396930204935090915050565b611bba33731e0049783f008a0085193e00003d00cd54003c7181141502898989898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525061259092505050565b5050505050505050565b6000547501000000000000000000000000000000000000000000900460ff1615808015611c0f575060005460017401000000000000000000000000000000000000000090910460ff16105b80611c415750303b158015611c41575060005474010000000000000000000000000000000000000000900460ff166001145b611ccd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610f33565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790558015611d5357600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b611d5c82612721565b611d6886868686612785565b8015611dcb57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b611ddb6114b0565b67ffffffffffffffff811115611e20576040517fb43e913700000000000000000000000000000000000000000000000000000000815260048101829052602401610f33565b60008281526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff851617905581518481529081018390527f44ecfc706d63e347851cfd40acfa6cf2e3a41faa3e8b460210c03938e84a91ad910161188a565b6060838214611eae57633b800a466000526004601cfd5b6040519050818152602081018260051b81810160405260005b818114611efc57679a31110384e0b0c98882013560601b17602090815286820135600090815260409020548483015201611ec7565b505050949350505050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b611f4b6114b0565b6006611f588284836142a7565b5060408051600081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208201527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c910161188a565b6060600680546118a59061420e565b611fc66129ab565b61155c60006129e1565b611fd86114b0565b6007611fe58284836142a7565b507f905d981207a7d0b6c62cc46ab0be2a076d0298e4a86d0ab79882dbd01ac37378828260405161188a9291906143c1565b6060600580546118a59061420e565b8015159050679a31110384e0b0c96020523360145281600052806034600c2055806000528160601b60601c337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206000a35050565b6120846114b0565b8082036120cf57817f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b6120b6846119a6565b6040516120c391906138cc565b60405180910390a25050565b60408051838152602081018390527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c910161188a565b61210d6129ab565b61211681612a47565b50565b6060600780546118a59061420e565b60007fffffffffffffffffffffffffe1ffb687c0ff75ff7ae6c1ffffc2ff32abffc38f73ffffffffffffffffffffffffffffffffffffffff83160161216f5750600161158c565b679a31110384e0b0c9602052601483905260008290526034600c20545b9392505050565b61219b6129ab565b63389a75e1600c52806000526020600c2080544211156121c357636f5e88186000526004601cfd5b60009055612116816129e1565b3073ffffffffffffffffffffffffffffffffffffffff8716036122685733731e0049783f008a0085193e00003d00cd54003c711480159061222a575061221461155e565b336000908152602091909152604090205460ff16155b15612263576040517f98d94de6000000000000000000000000000000000000000000000000000000008152336004820152602401610f33565b611dcb565b611dcb33731e0049783f008a0085193e00003d00cd54003c71811415028787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b1a92505050565b6122cd6129ab565b8060601b6122e357637448fbae6000526004601cfd5b612116816129e1565b6122f833848484612c99565b505050565b61172e338686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808a02828101820190935289825290935089925088918291850190849080828437600092019190915250612cfb92505050565b825160005b818110156123be576123b68686838151811061238f5761238f61410e565b60200260200101518684815181106123a9576123a961410e565b6020026020010151612db1565b600101612371565b5061172e85858585612f5e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f029a992c00000000000000000000000000000000000000000000000000000000148061245e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fad0d7f6c00000000000000000000000000000000000000000000000000000000145b806124aa57507fffffffff0000000000000000000000000000000000000000000000000000000082167fa07d229a00000000000000000000000000000000000000000000000000000000145b806124f657507f49064906000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806125145750632a55205a60e083901c9081146301ffc9a791909114175b8061158c575061158c826301ffc9a760e09190911c90811463d9b67a26821417630e89341c9091141790565b6bffffffffffffffffffffffff16612710808211156125675763350a88b36000526004601cfd5b8260601b8061257e5763b4457eaa6000526004601cfd5b90911768aa4ec00224afccfdb7555050565b61259d8585858585613086565b81518351146125b457633b800a466000526004601cfd5b8460601b8460601b806125cf5763ea553b346000526004601cfd5b81679a31110384e0b0c91781679a31110384e0b0c917816020528960601b848114811517612613578a6000526034600c205461261357634b6e7f186000526004601cfd5b50865160051b60005b81811461268a576020810190508088015184602052818a015160005260406000208054808311156126555763f4d678b86000526004601cfd5b82900390556020849052604060002080548083018181101561267f576301336cea6000526004601cfd5b9091555061261c9050565b5050505060405160408152855160051b602001604082018181838a60045afa503d60400160208401523d81019050865160051b60200191508181838960045afa50823d8201039150508260601c8460601c337f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8486a45050505061270c600090565b50833b15611dcb57611dcb85858585856131fe565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6000547501000000000000000000000000000000000000000000900460ff16612830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610f33565b73ffffffffffffffffffffffffffffffffffffffff831661287d576040517fa4d16ed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600161288761155e565b73ffffffffffffffffffffffffffffffffffffffff851660009081526020918252604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169415159490941790935582516001808252818501909452909290918281019080368337019050509050838160008151811061290e5761290e61410e565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508061295161155e565b60010190805190602001906129679291906136d1565b507fc90c61dd7a67259711a8a4c0b50bc6130257c5ba9f2539c5050264827f3819ea6004604051612998919061440e565b60405180910390a161172e8584846132d9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461155c576382b429006000526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b60005473ffffffffffffffffffffffffffffffffffffffff9081169082168103612a9d576040517f4a3bb19e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84811691821790925560408051928416835260208301919091527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910161188a565b612b578585612b3c866040805180820190915260018152602081019190915290565b60408051808201909152600181526020810187905285613086565b8460601b8460601b80612b725763ea553b346000526004601cfd5b81679a31110384e0b0c9176020528760601b828114811517612baa57886000526034600c2054612baa57634b6e7f186000526004601cfd5b50846000526040600020805480861115612bcc5763f4d678b86000526004601cfd5b8590039055679a31110384e0b0c981176020526040600020805480860181811015612bff576301336cea6000526004601cfd5b808355505050836020528060601c8260601c337fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260406000a45050612c42600090565b15612c8557612c858585612c69866040805180820190915260018152602081019190915290565b6040805180820190915260018152602081018790525b50505050565b833b15611dcb57611dcb85858585856133e8565b6000828152600160205260409020805467ffffffffffffffff680100000000000000008083048216859003909116027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909116179055612c7f84848484613494565b815160005b81811015612da457612d9c848281518110612d1d57612d1d61410e565b6020026020010151848381518110612d3757612d3761410e565b6020026020010151600091825260016020526040909120805467ffffffffffffffff68010000000000000000808304821694909403169092027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b600101612d00565b5061172e85858585613582565b6000828152600160205260409020805467ffffffffffffffff80821691612dee91859170010000000000000000000000000000000090041661444f565b1115612e66578054612e1f908390700100000000000000000000000000000000900467ffffffffffffffff1661444f565b81546040517f60a2a42c000000000000000000000000000000000000000000000000000000008152600481019290925267ffffffffffffffff166024820152604401610f33565b805470010000000000000000000000000000000067ffffffffffffffff68010000000000000000808404821686018216027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff84168117839004821686019091169091027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff9091167fffffffffffffffff00000000000000000000000000000000ffffffffffffffff9092169190911717905573ffffffffffffffffffffffffffffffffffffffff9092166000908152600260209081526040808320805486019055600382528083209383529290522080549091019055565b612f6c600085858585613086565b8151835114612f8357633b800a466000526004601cfd5b8360601b80612f9a5763ea553b346000526004601cfd5b80679a31110384e0b0c917602052835160051b60005b818114612ff35760208101905080850151818701516000526040600020805482810181811015612fe8576301336cea6000526004601cfd5b90915550612fb09050565b505060405160408152845160051b602001604082018181838960045afa503d60400160208401523d81019050855160051b60200191508181838860045afa50823d8201039150508260601c6000337f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8486a4505050613070600090565b50833b15612c7f57612c7f6000858585856131fe565b73ffffffffffffffffffffffffffffffffffffffff8516158015906130c0575073ffffffffffffffffffffffffffffffffffffffff841615155b1561172e5760005473ffffffffffffffffffffffffffffffffffffffff168015611dcb5760005b84518110156131f5578173ffffffffffffffffffffffffffffffffffffffff16631854b2413389898986815181106131215761312161410e565b602002602001015189878151811061313b5761313b61410e565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015293851660248501529390911660448301526064820152608481019190915260a401600060405180830381600087803b1580156131ca57600080fd5b505af11580156131de573d6000803e3d6000fd5b5050505080806131ed90614462565b9150506130e7565b50505050505050565b60405163bc197c8181523360208201528560601b60601c604082015260a06060820152835160051b60200160c082018181838860045afa503d60a0018060808501523d82019150855160051b60200192508282848860045afa503d0160a0840152835160200191503d018181818660045afa50601c83013d82010391505060208282601c850160008a5af16132a2573d1561329d573d6000803e3d6000fd5b600082525b5080517fbc197c810000000000000000000000000000000000000000000000000000000014611dcb57639c05499b6000526004601cfd5b6000547501000000000000000000000000000000000000000000900460ff16613384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610f33565b6004613390838261449a565b50600561339d828261449a565b5050600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff939093169290921790915550565b60405163f23a6e6181523360208201528560601b60601c604082015283606082015282608082015260a08082015281518060c08301528015613434578060e08301826020860160045afa505b6020828260c401601c850160008a5af161345d573d15613458573d6000803e3d6000fd5b600082525b5080517ff23a6e610000000000000000000000000000000000000000000000000000000014611dcb57639c05499b6000526004601cfd5b6134e18360006134b7856040805180820190915260018152602081019190915290565b60408051808201909152600181526020810186905260405180602001604052806000815250613086565b8260601b80679a31110384e0b0c917602052808560601b148560601b151761351f57846000526034600c205461351f57634b6e7f186000526004601cfd5b8260005260406000208054808411156135405763f4d678b86000526004601cfd5b83810382555050826000528160205260008160601c337fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260406000a450612c7f565b61359f836000848460405180602001604052806000815250613086565b80518251146135b657633b800a466000526004601cfd5b8260601b80679a31110384e0b0c9176020528460601b8181148115176135f257856000526034600c20546135f257634b6e7f186000526004601cfd5b50825160051b60005b81811461363b57602081019050808401518186015160005260406000208054808311156136305763f4d678b86000526004601cfd5b9190910390556135fb565b505060405160408152835160051b602001604082018181838860045afa503d60400160208401523d81019050845160051b60200191508181838760045afa50823d82010391505060008360601c337f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8486a45050506136b8600090565b15612c7f57604080516020810190915260009052612c7f565b82805482825590600052602060002090810192821561374b579160200282015b8281111561374b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906136f1565b5061375792915061375b565b5090565b5b80821115613757576000815560010161375c565b6000808585111561378057600080fd5b8386111561378d57600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156137da5780818660140360031b1b83161692505b505092915050565b8183823760009101908152919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461211657600080fd5b6000806040838503121561382757600080fd5b8235613832816137f2565b946020939093013593505050565b60006020828403121561385257600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461218c57600080fd5b6000806040838503121561389557600080fd5b82356138a0816137f2565b915060208301356bffffffffffffffffffffffff811681146138c157600080fd5b809150509250929050565b600060208083528351808285015260005b818110156138f9578581018301518582016040015282016138dd565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60006020828403121561394a57600080fd5b5035919050565b6000806040838503121561396457600080fd5b50508035926020909101359150565b60008083601f84011261398557600080fd5b50813567ffffffffffffffff81111561399d57600080fd5b6020830191508360208260051b85010111156139b857600080fd5b9250929050565b60008083601f8401126139d157600080fd5b50813567ffffffffffffffff8111156139e957600080fd5b6020830191508360208285010111156139b857600080fd5b60008060008060008060008060a0898b031215613a1d57600080fd5b8835613a28816137f2565b97506020890135613a38816137f2565b9650604089013567ffffffffffffffff80821115613a5557600080fd5b613a618c838d01613973565b909850965060608b0135915080821115613a7a57600080fd5b613a868c838d01613973565b909650945060808b0135915080821115613a9f57600080fd5b50613aac8b828c016139bf565b999c989b5096995094979396929594505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613b1257613b12613ac0565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613b5f57613b5f613ac0565b604052919050565b600067ffffffffffffffff831115613b8157613b81613ac0565b613bb260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601613b18565b9050828152838383011115613bc657600080fd5b828260208301376000602084830101529392505050565b600082601f830112613bee57600080fd5b61218c83833560208501613b67565b600080600080600060a08688031215613c1557600080fd5b8535613c20816137f2565b94506020860135613c30816137f2565b9350604086013567ffffffffffffffff80821115613c4d57600080fd5b613c5989838a01613bdd565b94506060880135915080821115613c6f57600080fd5b50613c7c88828901613bdd565b9250506080860135613c8d816137f2565b809150509295509295909350565b60008060008060408587031215613cb157600080fd5b843567ffffffffffffffff80821115613cc957600080fd5b613cd588838901613973565b90965094506020870135915080821115613cee57600080fd5b50613cfb87828801613973565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b81811015613d3f57835183529284019291840191600101613d23565b50909695505050505050565b60008060208385031215613d5e57600080fd5b823567ffffffffffffffff811115613d7557600080fd5b613d81858286016139bf565b90969095509350505050565b60008060408385031215613da057600080fd5b8235613dab816137f2565b9150602083013580151581146138c157600080fd5b600060208284031215613dd257600080fd5b813561218c816137f2565b60008060408385031215613df057600080fd5b8235613dfb816137f2565b915060208301356138c1816137f2565b60008060008060008060a08789031215613e2457600080fd5b8635613e2f816137f2565b95506020870135613e3f816137f2565b94506040870135935060608701359250608087013567ffffffffffffffff811115613e6957600080fd5b613e7589828a016139bf565b979a9699509497509295939492505050565b600080600060608486031215613e9c57600080fd5b8335613ea7816137f2565b95602085013595506040909401359392505050565b600080600080600060608688031215613ed457600080fd5b8535613edf816137f2565b9450602086013567ffffffffffffffff80821115613efc57600080fd5b613f0889838a01613973565b90965094506040880135915080821115613f2157600080fd5b50613f2e88828901613973565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561158c5761158c613f3f565b600067ffffffffffffffff821115613f9b57613f9b613ac0565b5060051b60200190565b600082601f830112613fb657600080fd5b81356020613fcb613fc683613f81565b613b18565b82815260079290921b84018101918181019086841115613fea57600080fd5b8286015b8481101561405457608081890312156140075760008081fd5b61400f613aef565b81356006811061401f5760008081fd5b81528185013561402e816137f2565b818601526040828101359082015260608083013590820152835291830191608001613fee565b509695505050505050565b6000806000806080858703121561407557600080fd5b8435614080816137f2565b9350602085013567ffffffffffffffff8082111561409d57600080fd5b6140a988838901613fa5565b945060408701359150808211156140bf57600080fd5b6140cb88838901613fa5565b935060608701359150808211156140e157600080fd5b508501601f810187136140f357600080fd5b61410287823560208401613b67565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f83011261414e57600080fd5b8135602061415e613fc683613f81565b82815260059290921b8401810191818101908684111561417d57600080fd5b8286015b848110156140545780358352918301918301614181565b6000806000606084860312156141ad57600080fd5b83356141b8816137f2565b9250602084013567ffffffffffffffff808211156141d557600080fd5b6141e18783880161413d565b935060408601359150808211156141f757600080fd5b506142048682870161413d565b9150509250925092565b600181811c9082168061422257607f821691505b60208210810361425b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156122f857600081815260208120601f850160051c810160208610156142885750805b601f850160051c820191505b81811015611dcb57828155600101614294565b67ffffffffffffffff8311156142bf576142bf613ac0565b6142d3836142cd835461420e565b83614261565b6000601f84116001811461432557600085156142ef5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835561172e565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156143745786850135825560209485019460019092019101614354565b50868210156143af577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b6020810160068310614449577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b8082018082111561158c5761158c613f3f565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361449357614493613f3f565b5060010190565b815167ffffffffffffffff8111156144b4576144b4613ac0565b6144c8816144c2845461420e565b84614261565b602080601f83116001811461451b57600084156144e55750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611dcb565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561456857888601518255948401946001909101908401614549565b50858210156145a457878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea164736f6c6343000813000a