Skip to content

Instantly share code, notes, and snippets.

@MoMannn
Created November 13, 2019 10:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MoMannn/a4271093c3e1683389a5d9b8eee58a71 to your computer and use it in GitHub Desktop.
Save MoMannn/a4271093c3e1683389a5d9b8eee58a71 to your computer and use it in GitHub Desktop.
0xcert framework 2.0 xcert-mock.json
{
"XcertMock": {
"abi": [
{
"constant": true,
"inputs": [
{
"internalType": "bytes4",
"name": "_interfaceID",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "schemaId",
"outputs": [
{
"internalType": "bytes32",
"name": "_schemaId",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "getApproved",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_approved",
"type": "address"
},
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "approve",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "grantAbilities",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "setAbilities",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "revoke",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "claimPerformed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "tokenOfOwnerByIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "safeTransferFrom",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "addressToAbility",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "tokenByIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"internalType": "bool",
"name": "_approved",
"type": "bool"
},
{
"internalType": "address",
"name": "_feeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "_feeValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_seed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_expiration",
"type": "uint256"
},
{
"components": [
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "enum XcertToken.SignatureKind",
"name": "kind",
"type": "uint8"
}
],
"internalType": "struct XcertToken.SignatureData",
"name": "_signature",
"type": "tuple"
}
],
"name": "setApprovalForAllWithSignature",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "uriPrefix",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "ownerOf",
"outputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "tokenImprint",
"outputs": [
{
"internalType": "bytes32",
"name": "imprint",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"internalType": "bool",
"name": "_approved",
"type": "bool"
},
{
"internalType": "address",
"name": "_feeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "_feeValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_seed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_expiration",
"type": "uint256"
}
],
"name": "generateClaim",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "string",
"name": "_uriPrefix",
"type": "string"
},
{
"internalType": "string",
"name": "_uriPostfix",
"type": "string"
}
],
"name": "setUri",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_signer",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_claim",
"type": "bytes32"
},
{
"components": [
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "enum XcertToken.SignatureKind",
"name": "kind",
"type": "uint8"
}
],
"internalType": "struct XcertToken.SignatureData",
"name": "_signature",
"type": "tuple"
}
],
"name": "isValidSignature",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "_symbol",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "destroy",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"internalType": "bool",
"name": "_approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_id",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "_imprint",
"type": "bytes32"
}
],
"name": "create",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isPaused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"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": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "isAble",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "_imprint",
"type": "bytes32"
}
],
"name": "updateTokenImprint",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "bool",
"name": "_isPaused",
"type": "bool"
}
],
"name": "setPause",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "uriPostfix",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "tokenURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "revokeAbilities",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
},
{
"internalType": "string",
"name": "_uriPrefix",
"type": "string"
},
{
"internalType": "string",
"name": "_uriPostfix",
"type": "string"
},
{
"internalType": "bytes32",
"name": "_schemaId",
"type": "bytes32"
},
{
"internalType": "bytes4[]",
"name": "_capabilities",
"type": "bytes4[]"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bool",
"name": "isPaused",
"type": "bool"
}
],
"name": "IsPaused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "_imprint",
"type": "bytes32"
}
],
"name": "TokenImprintUpdate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "SetAbilities",
"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"
},
{
"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"
}
],
"devdoc": {
"details": "This is an example implementation of the Xcert smart contract.",
"methods": {
"approve(address,uint256)": {
"details": "Set or reaffirm the approved address for an NFT.",
"params": {
"_approved": "Address to be approved for the given NFT ID.",
"_tokenId": "ID of the token to be approved."
}
},
"balanceOf(address)": {
"details": "Returns the number of NFTs owned by `_owner`. NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.",
"params": {
"_owner": "Address for whom to query the balance."
},
"return": "Balance of _owner."
},
"constructor": {
"details": "Contract constructor.",
"params": {
"_capabilities": "Array of bytes4 representing supported interfaces which activate the corresponding capabilities.",
"_name": "A descriptive name for a collection of NFTs.",
"_schemaId": "A bytes32 of keccak256 of json schema representing 0xcert Protocol convention.",
"_symbol": "An abbreviated name for NFT.",
"_uriPostfix": "Postfix of URI for token metadata URIs.",
"_uriPrefix": "Prefix of URI for token metadata URIs."
}
},
"create(address,uint256,bytes32)": {
"details": "Creates a new Xcert.",
"params": {
"_id": "The Xcert to be created by the msg.sender.",
"_imprint": "Cryptographic asset imprint.",
"_to": "The address that will own the created Xcert."
}
},
"destroy(uint256)": {
"details": "Destroys a specified Xcert. Reverts if not called from Xcert owner or operator.",
"params": {
"_tokenId": "Id of the Xcert we want to destroy."
}
},
"generateClaim(address,address,bool,address,uint256,uint256,uint256)": {
"details": "Generates hash of the set approval for.",
"params": {
"_approved": "True if the operators is approved, false to revoke approval.",
"_expiration": "Timestamp of when the claim expires.",
"_feeToken": "The token then will be tranfered to the executor of this method.",
"_feeValue": "The amount of token then will be tranfered to the executor of this method.",
"_operator": "Address to add to the set of authorized operators.",
"_owner": "Address to the owner who is approving.",
"_seed": "Arbitrary number to facilitate uniqueness of the order's hash. Usually timestamp."
}
},
"getApproved(uint256)": {
"details": "Get the approved address for a single NFT.",
"params": {
"_tokenId": "ID of the NFT to query the approval of."
},
"return": "Address that _tokenId is approved for. "
},
"grantAbilities(address,uint256)": {
"details": "Grants specific abilities to specified address.",
"params": {
"_abilities": "Number representing bitfield of abilities we are granting.",
"_target": "Address to grant abilities to."
}
},
"isAble(address,uint256)": {
"details": "Check if an address has a specific ability. Throws if checking for 0.",
"params": {
"_abilities": "Number representing bitfield of abilities we are checking.",
"_target": "Address for which we want to check if it has a specific abilities."
}
},
"isApprovedForAll(address,address)": {
"details": "Checks if `_operator` is an approved operator for `_owner`.",
"params": {
"_operator": "The address that acts on behalf of the owner.",
"_owner": "The address that owns the NFTs."
},
"return": "True if approved for all, false otherwise."
},
"isValidSignature(address,bytes32,(bytes32,bytes32,uint8,uint8))": {
"details": "Verifies if claim signature is valid.",
"params": {
"_claim": "Signed Keccak-256 hash.",
"_signature": "Signature data.",
"_signer": "address of signer."
}
},
"name()": {
"details": "Returns a descriptive name for a collection of NFTs.",
"return": "Representing name. "
},
"ownerOf(uint256)": {
"details": "Returns the address of the owner of the NFT. NFTs assigned to zero address are considered invalid, and queries about them do throw.",
"params": {
"_tokenId": "The identifier for an NFT."
},
"return": "Address of _tokenId owner."
},
"revoke(uint256)": {
"details": "Revokes(destroys) a specified Xcert. Reverts if not called from contract owner or authorized address.",
"params": {
"_tokenId": "Id of the Xcert we want to destroy."
}
},
"revokeAbilities(address,uint256)": {
"details": "Unassigns specific abilities from specified address.",
"params": {
"_abilities": "Number representing bitfield of abilities we are revoking.",
"_target": "Address of which we revoke abilites."
}
},
"safeTransferFrom(address,address,uint256)": {
"details": "Transfers the ownership of an NFT from one address to another address.",
"params": {
"_from": "The current owner of the NFT.",
"_to": "The new owner.",
"_tokenId": "The NFT to transfer."
}
},
"safeTransferFrom(address,address,uint256,bytes)": {
"details": "Transfers the ownership of an NFT from one address to another address.",
"params": {
"_data": "Additional data with no specified format, sent in call to `_to`.",
"_from": "The current owner of the NFT.",
"_to": "The new owner.",
"_tokenId": "The NFT to transfer."
}
},
"schemaId()": {
"details": "Returns a bytes32 of sha256 of json schema representing 0xcert Protocol convention.",
"return": "Schema id."
},
"setAbilities(address,uint256)": {
"details": "Sets specific abilities to specified address.",
"params": {
"_abilities": "Number representing bitfield of abilities we are setting.",
"_target": "Address to which we are setting abilitites."
}
},
"setApprovalForAll(address,bool)": {
"details": "Enables or disables approval for a third party (\"operator\") to manage all of `msg.sender`'s assets. It also emits the ApprovalForAll event.",
"params": {
"_approved": "True if the operators is approved, false to revoke approval.",
"_operator": "Address to add to the set of authorized operators."
}
},
"setApprovalForAllWithSignature(address,address,bool,address,uint256,uint256,uint256,(bytes32,bytes32,uint8,uint8))": {
"details": "Enables or disables approval for a third party (\"operator\") to manage all of `msg.sender`'s assets. It also emits the ApprovalForAll event.",
"params": {
"_approved": "True if the operators is approved, false to revoke approval.",
"_expiration": "Timestamp of when the claim expires.",
"_feeToken": "The token then will be tranfered to the executor of this method.",
"_feeValue": "The amount of token then will be tranfered to the executor of this method.",
"_operator": "Address to add to the set of authorized operators.",
"_owner": "Address to the owner who is approving.",
"_seed": "Arbitrary number to facilitate uniqueness of the order's hash. Usually timestamp.",
"_signature": "Data from the signature."
}
},
"setPause(bool)": {
"details": "Sets if Xcerts transfers are paused (can be performed) or not.",
"params": {
"_isPaused": "Pause status."
}
},
"setUri(string,string)": {
"details": "Change URI.",
"params": {
"_uriPostfix": "New URI postfix.",
"_uriPrefix": "New URI prefix."
}
},
"supportsInterface(bytes4)": {
"details": "Function to check which interfaces are suported by this contract.",
"params": {
"_interfaceID": "Id of the interface."
}
},
"symbol()": {
"details": "Returns an abbreviated name for NFTs.",
"return": "Representing symbol. "
},
"tokenByIndex(uint256)": {
"details": "Returns NFT ID by its index.",
"params": {
"_index": "A counter less than `totalSupply()`."
},
"return": "Token id."
},
"tokenImprint(uint256)": {
"details": "Returns imprint for Xcert.",
"params": {
"_tokenId": "Id of the Xcert."
},
"return": "Token imprint."
},
"tokenOfOwnerByIndex(address,uint256)": {
"details": "returns the n-th NFT ID from a list of owner's tokens.",
"params": {
"_index": "Index number representing n-th token in owner's list of tokens.",
"_owner": "Token owner's address."
},
"return": "Token id."
},
"tokenURI(uint256)": {
"details": "Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \"ERC721 Metadata JSON Schema\".",
"params": {
"_tokenId": "Id for which we want URI."
},
"return": "URI of _tokenId."
},
"totalSupply()": {
"details": "Returns the count of all existing NFTs.",
"return": "Total supply of NFTs."
},
"transferFrom(address,address,uint256)": {
"details": "Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.",
"params": {
"_from": "The current owner of the NFT.",
"_to": "The new owner.",
"_tokenId": "The NFT to transfer."
}
},
"updateTokenImprint(uint256,bytes32)": {
"details": "Updates Xcert imprint.",
"params": {
"_imprint": "New imprint.",
"_tokenId": "Id of the Xcert."
}
}
}
},
"evm": {
"assembly": " /* \"./src/contracts/mocks/xcert-mock.sol\":162:1263 contract XcertMock is XcertToken {... */\n mstore(0x40, 0x80)\n /* \"./src/contracts/mocks/xcert-mock.sol\":716:1260 constructor(... */\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_1\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x00\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\ntag_1:\n /* \"./src/contracts/mocks/xcert-mock.sol\":716:1260 constructor(... */\n pop\n mload(0x40)\n sub(codesize, bytecodeSize)\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n add\n 0x40\n dup2\n swap1\n mstore\n tag_2\n swap2\n jump(tag_3)\ntag_2:\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/supports-interface.sol\":416:447 */\n 0x67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/supports-interface.sol\":416:454 */\n dup1\n sload\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/supports-interface.sol\":450:454 */\n 0x01\n not(0xff)\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/supports-interface.sol\":416:454 */\n swap2\n dup3\n and\n dup2\n or\n swap1\n swap3\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":4469:4500 */\n 0xf7815fccbf112960a73756e185887fedcb9fc64ca0a16cc5923b7960ed780800\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":4469:4507 */\n dup1\n sload\n dup3\n and\n dup4\n or\n swap1\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":4523:4554 */\n 0x9562381dfbc2d8b8b66e765249f330164b73e329e5f01670660643571d1974df\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":4523:4561 */\n dup1\n sload\n dup3\n and\n dup4\n or\n swap1\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":4585:4616 */\n 0x77b7bbe0e49b76487c9476b5db3354cf5270619d0037ccb899c2a4c4a75b4318\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":4585:4623 */\n dup1\n sload\n dup3\n and\n dup4\n or\n swap1\n sstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2758:2768 */\n caller\n 0x00\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2741:2769 */\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2741:2757 */\n 0x0c\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/supports-interface.sol\":416:447 */\n 0x20\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2741:2769 */\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/supports-interface.sol\":416:447 */\n 0x40\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2741:2769 */\n dup3\n keccak256\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":1950:1952 */\n 0x0f\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2741:2793 */\n swap1\n sstore\n /* \"./src/contracts/xcert.sol\":4260:4291 supportedInterfaces[0x4ecc17d1] */\n 0x4ecc17d100000000000000000000000000000000000000000000000000000000\n dup3\n mstore\n swap1\n dup2\n mstore\n 0xb779c54ae4c108ce5b4b652d22d801adf25f71e5a1e8a47e47311c80e3cfd790\n /* \"./src/contracts/xcert.sol\":4260:4298 supportedInterfaces[0x4ecc17d1] = true */\n dup1\n sload\n swap1\n swap3\n and\n dup4\n or\n swap1\n swap2\n sstore\n /* \"./src/contracts/mocks/xcert-mock.sol\":922:937 nftName = _name */\n dup8\n mload\n tag_14\n swap3\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/supports-interface.sol\":450:454 */\n swap2\n /* \"./src/contracts/mocks/xcert-mock.sol\":922:937 nftName = _name */\n dup10\n add\n swap1\n tag_15\n jump\t// in\ntag_14:\n pop\n /* \"./src/contracts/mocks/xcert-mock.sol\":943:962 nftSymbol = _symbol */\n dup5\n mload\n tag_16\n swap1\n /* \"./src/contracts/mocks/xcert-mock.sol\":943:952 nftSymbol */\n 0x02\n swap1\n /* \"./src/contracts/mocks/xcert-mock.sol\":943:962 nftSymbol = _symbol */\n 0x20\n dup9\n add\n swap1\n tag_15\n jump\t// in\ntag_16:\n pop\n /* \"./src/contracts/mocks/xcert-mock.sol\":968:990 uriPrefix = _uriPrefix */\n dup4\n mload\n tag_17\n swap1\n /* \"./src/contracts/mocks/xcert-mock.sol\":968:977 uriPrefix */\n 0x03\n swap1\n /* \"./src/contracts/mocks/xcert-mock.sol\":968:990 uriPrefix = _uriPrefix */\n 0x20\n dup8\n add\n swap1\n tag_15\n jump\t// in\ntag_17:\n pop\n /* \"./src/contracts/mocks/xcert-mock.sol\":996:1020 uriPostfix = _uriPostfix */\n dup3\n mload\n tag_18\n swap1\n /* \"./src/contracts/mocks/xcert-mock.sol\":996:1006 uriPostfix */\n 0x04\n swap1\n /* \"./src/contracts/mocks/xcert-mock.sol\":996:1020 uriPostfix = _uriPostfix */\n 0x20\n dup7\n add\n swap1\n tag_15\n jump\t// in\ntag_18:\n pop\n /* \"./src/contracts/mocks/xcert-mock.sol\":1026:1037 nftSchemaId */\n 0x0e\n /* \"./src/contracts/mocks/xcert-mock.sol\":1026:1049 nftSchemaId = _schemaId */\n dup3\n swap1\n sstore\n /* \"./src/contracts/mocks/xcert-mock.sol\":1059:1068 uint256 i */\n 0x00\n /* \"./src/contracts/mocks/xcert-mock.sol\":1055:1168 for(uint256 i = 0; i < _capabilities.length; i++)... */\ntag_19:\n /* \"./src/contracts/mocks/xcert-mock.sol\":1078:1091 _capabilities */\n dup2\n /* \"./src/contracts/mocks/xcert-mock.sol\":1078:1098 _capabilities.length */\n mload\n /* \"./src/contracts/mocks/xcert-mock.sol\":1074:1075 i */\n dup2\n /* \"./src/contracts/mocks/xcert-mock.sol\":1074:1098 i < _capabilities.length */\n lt\n /* \"./src/contracts/mocks/xcert-mock.sol\":1055:1168 for(uint256 i = 0; i < _capabilities.length; i++)... */\n iszero\n tag_20\n jumpi\n /* \"./src/contracts/mocks/xcert-mock.sol\":1157:1161 true */\n 0x01\n /* \"./src/contracts/mocks/xcert-mock.sol\":1117:1136 supportedInterfaces */\n 0x00\n /* \"./src/contracts/mocks/xcert-mock.sol\":1117:1154 supportedInterfaces[_capabilities[i]] */\n dup1\n /* \"./src/contracts/mocks/xcert-mock.sol\":1137:1150 _capabilities */\n dup5\n /* \"./src/contracts/mocks/xcert-mock.sol\":1151:1152 i */\n dup5\n /* \"./src/contracts/mocks/xcert-mock.sol\":1137:1153 _capabilities[i] */\n dup2\n mload\n dup2\n lt\n tag_22\n jumpi\n invalid\ntag_22:\n 0x20\n swap1\n dup2\n mul\n swap2\n swap1\n swap2\n add\n dup2\n add\n mload\n /* \"./src/contracts/mocks/xcert-mock.sol\":1117:1154 supportedInterfaces[_capabilities[i]] */\n 0xffffffff00000000000000000000000000000000000000000000000000000000\n and\n dup3\n mstore\n dup2\n add\n swap2\n swap1\n swap2\n mstore\n 0x40\n add\n 0x00\n keccak256\n /* \"./src/contracts/mocks/xcert-mock.sol\":1117:1161 supportedInterfaces[_capabilities[i]] = true */\n dup1\n sload\n not(0xff)\n and\n swap2\n iszero\n iszero\n swap2\n swap1\n swap2\n or\n swap1\n sstore\n 0x01\n /* \"./src/contracts/mocks/xcert-mock.sol\":1100:1103 i++ */\n add\n /* \"./src/contracts/mocks/xcert-mock.sol\":1055:1168 for(uint256 i = 0; i < _capabilities.length; i++)... */\n jump(tag_19)\ntag_20:\n pop\n pop\n /* \"./src/contracts/mocks/xcert-mock.sol\":1190:1200 msg.sender */\n caller\n /* \"./src/contracts/mocks/xcert-mock.sol\":1173:1201 addressToAbility[msg.sender] */\n 0x00\n swap1\n dup2\n mstore\n /* \"./src/contracts/mocks/xcert-mock.sol\":1173:1189 addressToAbility */\n 0x0c\n /* \"./src/contracts/mocks/xcert-mock.sol\":1173:1201 addressToAbility[msg.sender] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"./src/contracts/mocks/xcert-mock.sol\":1204:1208 2047 */\n 0x07ff\n /* \"./src/contracts/mocks/xcert-mock.sol\":1173:1208 addressToAbility[msg.sender] = 2047 */\n swap1\n sstore\n pop\n /* \"./src/contracts/mocks/xcert-mock.sol\":162:1263 contract XcertMock is XcertToken {... */\n tag_33\n swap4\n pop\n pop\n pop\n pop\n jump\ntag_15:\n dup3\n dup1\n sload\n 0x01\n dup2\n 0x01\n and\n iszero\n 0x0100\n mul\n sub\n and\n 0x02\n swap1\n div\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n 0x1f\n add\n 0x20\n swap1\n div\n dup2\n add\n swap3\n dup3\n 0x1f\n lt\n tag_25\n jumpi\n dup1\n mload\n not(0xff)\n and\n dup4\n dup1\n add\n or\n dup6\n sstore\n jump(tag_27)\ntag_25:\n dup3\n dup1\n add\n 0x01\n add\n dup6\n sstore\n dup3\n iszero\n tag_27\n jumpi\n swap2\n dup3\n add\ntag_26:\n dup3\n dup2\n gt\n iszero\n tag_27\n jumpi\n dup3\n mload\n dup3\n sstore\n swap2\n 0x20\n add\n swap2\n swap1\n 0x01\n add\n swap1\n jump(tag_26)\ntag_27:\n pop\n tag_28\n swap3\n swap2\n pop\n tag_29\n jump\t// in\ntag_28:\n pop\n swap1\n jump\t// out\ntag_29:\n tag_30\n swap2\n swap1\ntag_31:\n dup1\n dup3\n gt\n iszero\n tag_28\n jumpi\n 0x00\n dup2\n sstore\n 0x01\n add\n jump(tag_31)\ntag_30:\n swap1\n jump\t// out\n /* \"--CODEGEN--\":22:741 */\ntag_34:\n 0x00\n /* \"--CODEGEN--\":149:152 */\n dup3\n /* \"--CODEGEN--\":142:146 */\n 0x1f\n /* \"--CODEGEN--\":134:140 */\n dup4\n /* \"--CODEGEN--\":130:147 */\n add\n /* \"--CODEGEN--\":126:153 */\n slt\n /* \"--CODEGEN--\":116:118 */\n tag_35\n jumpi\n /* \"--CODEGEN--\":167:168 */\n 0x00\n /* \"--CODEGEN--\":164:165 */\n dup1\n /* \"--CODEGEN--\":157:169 */\n revert\n /* \"--CODEGEN--\":116:118 */\ntag_35:\n /* \"--CODEGEN--\":197:203 */\n dup2\n /* \"--CODEGEN--\":191:204 */\n mload\n /* \"--CODEGEN--\":219:298 */\n tag_36\n /* \"--CODEGEN--\":234:297 */\n tag_37\n /* \"--CODEGEN--\":290:296 */\n dup3\n /* \"--CODEGEN--\":234:297 */\n jump(tag_38)\ntag_37:\n /* \"--CODEGEN--\":219:298 */\n jump(tag_39)\ntag_36:\n /* \"--CODEGEN--\":210:298 */\n swap2\n pop\n /* \"--CODEGEN--\":315:320 */\n dup2\n /* \"--CODEGEN--\":340:346 */\n dup2\n /* \"--CODEGEN--\":333:338 */\n dup4\n /* \"--CODEGEN--\":326:347 */\n mstore\n /* \"--CODEGEN--\":370:374 */\n 0x20\n /* \"--CODEGEN--\":362:368 */\n dup5\n /* \"--CODEGEN--\":358:375 */\n add\n /* \"--CODEGEN--\":348:375 */\n swap4\n pop\n /* \"--CODEGEN--\":392:396 */\n 0x20\n /* \"--CODEGEN--\":387:390 */\n dup2\n /* \"--CODEGEN--\":383:397 */\n add\n /* \"--CODEGEN--\":376:397 */\n swap1\n pop\n /* \"--CODEGEN--\":445:451 */\n dup4\n /* \"--CODEGEN--\":492:495 */\n dup6\n /* \"--CODEGEN--\":484:488 */\n 0x20\n /* \"--CODEGEN--\":476:482 */\n dup5\n /* \"--CODEGEN--\":472:489 */\n mul\n /* \"--CODEGEN--\":467:470 */\n dup3\n /* \"--CODEGEN--\":463:490 */\n add\n /* \"--CODEGEN--\":460:496 */\n gt\n /* \"--CODEGEN--\":457:459 */\n iszero\n tag_40\n jumpi\n /* \"--CODEGEN--\":509:510 */\n 0x00\n /* \"--CODEGEN--\":506:507 */\n dup1\n /* \"--CODEGEN--\":499:511 */\n revert\n /* \"--CODEGEN--\":457:459 */\ntag_40:\n /* \"--CODEGEN--\":534:535 */\n 0x00\n /* \"--CODEGEN--\":519:735 */\ntag_41:\n /* \"--CODEGEN--\":544:550 */\n dup4\n /* \"--CODEGEN--\":541:542 */\n dup2\n /* \"--CODEGEN--\":538:551 */\n lt\n /* \"--CODEGEN--\":519:735 */\n iszero\n tag_43\n jumpi\n /* \"--CODEGEN--\":602:605 */\n dup2\n /* \"--CODEGEN--\":624:671 */\n tag_44\n /* \"--CODEGEN--\":667:670 */\n dup9\n /* \"--CODEGEN--\":655:665 */\n dup3\n /* \"--CODEGEN--\":624:671 */\n jump(tag_45)\ntag_44:\n /* \"--CODEGEN--\":612:672 */\n dup5\n mstore\n pop\n /* \"--CODEGEN--\":695:699 */\n 0x20\n /* \"--CODEGEN--\":686:700 */\n swap3\n dup4\n add\n swap3\n /* \"--CODEGEN--\":714:728 */\n swap2\n swap1\n swap2\n add\n swap1\n /* \"--CODEGEN--\":566:567 */\n 0x01\n /* \"--CODEGEN--\":559:568 */\n add\n /* \"--CODEGEN--\":519:735 */\n jump(tag_41)\ntag_43:\n /* \"--CODEGEN--\":523:537 */\n pop\n /* \"--CODEGEN--\":109:741 */\n pop\n pop\n pop\n swap3\n swap2\n pop\n pop\n jump\n /* \"--CODEGEN--\":749:883 */\ntag_46:\n /* \"--CODEGEN--\":827:840 */\n dup1\n mload\n /* \"--CODEGEN--\":845:878 */\n tag_47\n /* \"--CODEGEN--\":827:840 */\n dup2\n /* \"--CODEGEN--\":845:878 */\n jump(tag_48)\ntag_47:\n /* \"--CODEGEN--\":812:883 */\n swap3\n swap2\n pop\n pop\n jump\n /* \"--CODEGEN--\":890:1022 */\ntag_45:\n /* \"--CODEGEN--\":967:980 */\n dup1\n mload\n /* \"--CODEGEN--\":985:1017 */\n tag_47\n /* \"--CODEGEN--\":967:980 */\n dup2\n /* \"--CODEGEN--\":985:1017 */\n jump(tag_50)\n /* \"--CODEGEN--\":1030:1474 */\ntag_51:\n 0x00\n /* \"--CODEGEN--\":1143:1146 */\n dup3\n /* \"--CODEGEN--\":1136:1140 */\n 0x1f\n /* \"--CODEGEN--\":1128:1134 */\n dup4\n /* \"--CODEGEN--\":1124:1141 */\n add\n /* \"--CODEGEN--\":1120:1147 */\n slt\n /* \"--CODEGEN--\":1110:1112 */\n tag_52\n jumpi\n /* \"--CODEGEN--\":1161:1162 */\n 0x00\n /* \"--CODEGEN--\":1158:1159 */\n dup1\n /* \"--CODEGEN--\":1151:1163 */\n revert\n /* \"--CODEGEN--\":1110:1112 */\ntag_52:\n /* \"--CODEGEN--\":1191:1197 */\n dup2\n /* \"--CODEGEN--\":1185:1198 */\n mload\n /* \"--CODEGEN--\":1213:1278 */\n tag_53\n /* \"--CODEGEN--\":1228:1277 */\n tag_37\n /* \"--CODEGEN--\":1270:1276 */\n dup3\n /* \"--CODEGEN--\":1228:1277 */\n jump(tag_55)\n /* \"--CODEGEN--\":1213:1278 */\ntag_53:\n /* \"--CODEGEN--\":1204:1278 */\n swap2\n pop\n /* \"--CODEGEN--\":1298:1304 */\n dup1\n /* \"--CODEGEN--\":1291:1296 */\n dup3\n /* \"--CODEGEN--\":1284:1305 */\n mstore\n /* \"--CODEGEN--\":1334:1338 */\n 0x20\n /* \"--CODEGEN--\":1326:1332 */\n dup4\n /* \"--CODEGEN--\":1322:1339 */\n add\n /* \"--CODEGEN--\":1367:1371 */\n 0x20\n /* \"--CODEGEN--\":1360:1365 */\n dup4\n /* \"--CODEGEN--\":1356:1372 */\n add\n /* \"--CODEGEN--\":1402:1405 */\n dup6\n /* \"--CODEGEN--\":1393:1399 */\n dup4\n /* \"--CODEGEN--\":1388:1391 */\n dup4\n /* \"--CODEGEN--\":1384:1400 */\n add\n /* \"--CODEGEN--\":1381:1406 */\n gt\n /* \"--CODEGEN--\":1378:1380 */\n iszero\n tag_56\n jumpi\n /* \"--CODEGEN--\":1419:1420 */\n 0x00\n /* \"--CODEGEN--\":1416:1417 */\n dup1\n /* \"--CODEGEN--\":1409:1421 */\n revert\n /* \"--CODEGEN--\":1378:1380 */\ntag_56:\n /* \"--CODEGEN--\":1429:1468 */\n tag_57\n /* \"--CODEGEN--\":1461:1467 */\n dup4\n /* \"--CODEGEN--\":1456:1459 */\n dup3\n /* \"--CODEGEN--\":1451:1454 */\n dup5\n /* \"--CODEGEN--\":1429:1468 */\n jump(tag_58)\ntag_57:\n /* \"--CODEGEN--\":1103:1474 */\n pop\n pop\n pop\n swap3\n swap2\n pop\n pop\n jump\n /* \"--CODEGEN--\":1482:2951 */\ntag_3:\n 0x00\n dup1\n 0x00\n dup1\n 0x00\n dup1\n /* \"--CODEGEN--\":1746:1749 */\n 0xc0\n /* \"--CODEGEN--\":1734:1743 */\n dup8\n /* \"--CODEGEN--\":1725:1732 */\n dup10\n /* \"--CODEGEN--\":1721:1744 */\n sub\n /* \"--CODEGEN--\":1717:1750 */\n slt\n /* \"--CODEGEN--\":1714:1716 */\n iszero\n tag_59\n jumpi\n /* \"--CODEGEN--\":1763:1764 */\n 0x00\n /* \"--CODEGEN--\":1760:1761 */\n dup1\n /* \"--CODEGEN--\":1753:1765 */\n revert\n /* \"--CODEGEN--\":1714:1716 */\ntag_59:\n /* \"--CODEGEN--\":1798:1822 */\n dup7\n mload\n sub(shl(0x40, 0x01), 0x01)\n /* \"--CODEGEN--\":1831:1861 */\n dup2\n gt\n /* \"--CODEGEN--\":1828:1830 */\n iszero\n tag_60\n jumpi\n /* \"--CODEGEN--\":1874:1875 */\n 0x00\n /* \"--CODEGEN--\":1871:1872 */\n dup1\n /* \"--CODEGEN--\":1864:1876 */\n revert\n /* \"--CODEGEN--\":1828:1830 */\ntag_60:\n /* \"--CODEGEN--\":1894:1968 */\n tag_61\n /* \"--CODEGEN--\":1960:1967 */\n dup10\n /* \"--CODEGEN--\":1951:1957 */\n dup3\n /* \"--CODEGEN--\":1940:1949 */\n dup11\n /* \"--CODEGEN--\":1936:1958 */\n add\n /* \"--CODEGEN--\":1894:1968 */\n jump(tag_51)\ntag_61:\n /* \"--CODEGEN--\":1884:1968 */\n swap7\n pop\n /* \"--CODEGEN--\":1777:1974 */\n pop\n /* \"--CODEGEN--\":2026:2028 */\n 0x20\n /* \"--CODEGEN--\":2015:2024 */\n dup8\n /* \"--CODEGEN--\":2011:2029 */\n add\n /* \"--CODEGEN--\":2005:2030 */\n mload\n sub(shl(0x40, 0x01), 0x01)\n /* \"--CODEGEN--\":2042:2048 */\n dup2\n /* \"--CODEGEN--\":2039:2069 */\n gt\n /* \"--CODEGEN--\":2036:2038 */\n iszero\n tag_62\n jumpi\n /* \"--CODEGEN--\":2082:2083 */\n 0x00\n /* \"--CODEGEN--\":2079:2080 */\n dup1\n /* \"--CODEGEN--\":2072:2084 */\n revert\n /* \"--CODEGEN--\":2036:2038 */\ntag_62:\n /* \"--CODEGEN--\":2102:2176 */\n tag_63\n /* \"--CODEGEN--\":2168:2175 */\n dup10\n /* \"--CODEGEN--\":2159:2165 */\n dup3\n /* \"--CODEGEN--\":2148:2157 */\n dup11\n /* \"--CODEGEN--\":2144:2166 */\n add\n /* \"--CODEGEN--\":2102:2176 */\n jump(tag_51)\ntag_63:\n /* \"--CODEGEN--\":2092:2176 */\n swap6\n pop\n /* \"--CODEGEN--\":1984:2182 */\n pop\n /* \"--CODEGEN--\":2234:2236 */\n 0x40\n /* \"--CODEGEN--\":2223:2232 */\n dup8\n /* \"--CODEGEN--\":2219:2237 */\n add\n /* \"--CODEGEN--\":2213:2238 */\n mload\n sub(shl(0x40, 0x01), 0x01)\n /* \"--CODEGEN--\":2250:2256 */\n dup2\n /* \"--CODEGEN--\":2247:2277 */\n gt\n /* \"--CODEGEN--\":2244:2246 */\n iszero\n tag_64\n jumpi\n /* \"--CODEGEN--\":2290:2291 */\n 0x00\n /* \"--CODEGEN--\":2287:2288 */\n dup1\n /* \"--CODEGEN--\":2280:2292 */\n revert\n /* \"--CODEGEN--\":2244:2246 */\ntag_64:\n /* \"--CODEGEN--\":2310:2384 */\n tag_65\n /* \"--CODEGEN--\":2376:2383 */\n dup10\n /* \"--CODEGEN--\":2367:2373 */\n dup3\n /* \"--CODEGEN--\":2356:2365 */\n dup11\n /* \"--CODEGEN--\":2352:2374 */\n add\n /* \"--CODEGEN--\":2310:2384 */\n jump(tag_51)\ntag_65:\n /* \"--CODEGEN--\":2300:2384 */\n swap5\n pop\n /* \"--CODEGEN--\":2192:2390 */\n pop\n /* \"--CODEGEN--\":2442:2444 */\n 0x60\n /* \"--CODEGEN--\":2431:2440 */\n dup8\n /* \"--CODEGEN--\":2427:2445 */\n add\n /* \"--CODEGEN--\":2421:2446 */\n mload\n sub(shl(0x40, 0x01), 0x01)\n /* \"--CODEGEN--\":2458:2464 */\n dup2\n /* \"--CODEGEN--\":2455:2485 */\n gt\n /* \"--CODEGEN--\":2452:2454 */\n iszero\n tag_66\n jumpi\n /* \"--CODEGEN--\":2498:2499 */\n 0x00\n /* \"--CODEGEN--\":2495:2496 */\n dup1\n /* \"--CODEGEN--\":2488:2500 */\n revert\n /* \"--CODEGEN--\":2452:2454 */\ntag_66:\n /* \"--CODEGEN--\":2518:2592 */\n tag_67\n /* \"--CODEGEN--\":2584:2591 */\n dup10\n /* \"--CODEGEN--\":2575:2581 */\n dup3\n /* \"--CODEGEN--\":2564:2573 */\n dup11\n /* \"--CODEGEN--\":2560:2582 */\n add\n /* \"--CODEGEN--\":2518:2592 */\n jump(tag_51)\ntag_67:\n /* \"--CODEGEN--\":2508:2592 */\n swap4\n pop\n /* \"--CODEGEN--\":2400:2598 */\n pop\n /* \"--CODEGEN--\":2629:2632 */\n 0x80\n /* \"--CODEGEN--\":2648:2712 */\n tag_68\n /* \"--CODEGEN--\":2704:2711 */\n dup10\n /* \"--CODEGEN--\":2695:2701 */\n dup3\n /* \"--CODEGEN--\":2684:2693 */\n dup11\n /* \"--CODEGEN--\":2680:2702 */\n add\n /* \"--CODEGEN--\":2648:2712 */\n jump(tag_46)\ntag_68:\n /* \"--CODEGEN--\":2638:2712 */\n swap3\n pop\n /* \"--CODEGEN--\":2608:2718 */\n pop\n /* \"--CODEGEN--\":2770:2773 */\n 0xa0\n /* \"--CODEGEN--\":2759:2768 */\n dup8\n /* \"--CODEGEN--\":2755:2774 */\n add\n /* \"--CODEGEN--\":2749:2775 */\n mload\n sub(shl(0x40, 0x01), 0x01)\n /* \"--CODEGEN--\":2787:2793 */\n dup2\n /* \"--CODEGEN--\":2784:2814 */\n gt\n /* \"--CODEGEN--\":2781:2783 */\n iszero\n tag_69\n jumpi\n /* \"--CODEGEN--\":2827:2828 */\n 0x00\n /* \"--CODEGEN--\":2824:2825 */\n dup1\n /* \"--CODEGEN--\":2817:2829 */\n revert\n /* \"--CODEGEN--\":2781:2783 */\ntag_69:\n /* \"--CODEGEN--\":2847:2935 */\n tag_70\n /* \"--CODEGEN--\":2927:2934 */\n dup10\n /* \"--CODEGEN--\":2918:2924 */\n dup3\n /* \"--CODEGEN--\":2907:2916 */\n dup11\n /* \"--CODEGEN--\":2903:2925 */\n add\n /* \"--CODEGEN--\":2847:2935 */\n jump(tag_34)\ntag_70:\n /* \"--CODEGEN--\":2837:2935 */\n swap2\n pop\n /* \"--CODEGEN--\":2728:2941 */\n pop\n /* \"--CODEGEN--\":1708:2951 */\n swap3\n swap6\n pop\n swap3\n swap6\n pop\n swap3\n swap6\n jump\n /* \"--CODEGEN--\":2958:3214 */\ntag_39:\n /* \"--CODEGEN--\":3020:3022 */\n 0x40\n /* \"--CODEGEN--\":3014:3023 */\n mload\n /* \"--CODEGEN--\":3046:3063 */\n dup2\n dup2\n add\n sub(shl(0x40, 0x01), 0x01)\n /* \"--CODEGEN--\":3106:3140 */\n dup2\n gt\n /* \"--CODEGEN--\":3142:3164 */\n dup3\n dup3\n lt\n /* \"--CODEGEN--\":3103:3165 */\n or\n /* \"--CODEGEN--\":3100:3102 */\n iszero\n tag_71\n jumpi\n /* \"--CODEGEN--\":3178:3179 */\n 0x00\n /* \"--CODEGEN--\":3175:3176 */\n dup1\n /* \"--CODEGEN--\":3168:3180 */\n revert\n /* \"--CODEGEN--\":3100:3102 */\ntag_71:\n /* \"--CODEGEN--\":3194:3196 */\n 0x40\n /* \"--CODEGEN--\":3187:3209 */\n mstore\n /* \"--CODEGEN--\":2998:3214 */\n swap2\n swap1\n pop\n jump\n /* \"--CODEGEN--\":3221:3524 */\ntag_38:\n 0x00\n sub(shl(0x40, 0x01), 0x01)\n /* \"--CODEGEN--\":3371:3377 */\n dup3\n /* \"--CODEGEN--\":3368:3398 */\n gt\n /* \"--CODEGEN--\":3365:3367 */\n iszero\n tag_72\n jumpi\n /* \"--CODEGEN--\":3411:3412 */\n 0x00\n /* \"--CODEGEN--\":3408:3409 */\n dup1\n /* \"--CODEGEN--\":3401:3413 */\n revert\n /* \"--CODEGEN--\":3365:3367 */\ntag_72:\n pop\n /* \"--CODEGEN--\":3446:3450 */\n 0x20\n /* \"--CODEGEN--\":3434:3451 */\n swap1\n dup2\n mul\n /* \"--CODEGEN--\":3499:3514 */\n add\n swap1\n /* \"--CODEGEN--\":3302:3524 */\n jump\n /* \"--CODEGEN--\":3531:3853 */\ntag_55:\n 0x00\n sub(shl(0x40, 0x01), 0x01)\n /* \"--CODEGEN--\":3667:3673 */\n dup3\n /* \"--CODEGEN--\":3664:3694 */\n gt\n /* \"--CODEGEN--\":3661:3663 */\n iszero\n tag_73\n jumpi\n /* \"--CODEGEN--\":3707:3708 */\n 0x00\n /* \"--CODEGEN--\":3704:3705 */\n dup1\n /* \"--CODEGEN--\":3697:3709 */\n revert\n /* \"--CODEGEN--\":3661:3663 */\ntag_73:\n pop\n /* \"--CODEGEN--\":3838:3842 */\n 0x20\n /* \"--CODEGEN--\":3774:3778 */\n 0x1f\n /* \"--CODEGEN--\":3751:3768 */\n swap2\n swap1\n swap2\n add\n not(0x1f)\n /* \"--CODEGEN--\":3747:3780 */\n and\n /* \"--CODEGEN--\":3828:3843 */\n add\n swap1\n /* \"--CODEGEN--\":3598:3853 */\n jump\n /* \"--CODEGEN--\":3939:4083 */\ntag_75:\n /* \"--CODEGEN--\":4011:4077 */\n 0xffffffff00000000000000000000000000000000000000000000000000000000\n /* \"--CODEGEN--\":4000:4078 */\n and\n swap1\n /* \"--CODEGEN--\":3983:4083 */\n jump\n /* \"--CODEGEN--\":4091:4359 */\ntag_58:\n /* \"--CODEGEN--\":4156:4157 */\n 0x00\n /* \"--CODEGEN--\":4163:4264 */\ntag_76:\n /* \"--CODEGEN--\":4177:4183 */\n dup4\n /* \"--CODEGEN--\":4174:4175 */\n dup2\n /* \"--CODEGEN--\":4171:4184 */\n lt\n /* \"--CODEGEN--\":4163:4264 */\n iszero\n tag_78\n jumpi\n /* \"--CODEGEN--\":4244:4255 */\n dup2\n dup2\n add\n /* \"--CODEGEN--\":4238:4256 */\n mload\n /* \"--CODEGEN--\":4225:4236 */\n dup4\n dup3\n add\n /* \"--CODEGEN--\":4218:4257 */\n mstore\n /* \"--CODEGEN--\":4199:4201 */\n 0x20\n /* \"--CODEGEN--\":4192:4202 */\n add\n /* \"--CODEGEN--\":4163:4264 */\n jump(tag_76)\ntag_78:\n /* \"--CODEGEN--\":4279:4285 */\n dup4\n /* \"--CODEGEN--\":4276:4277 */\n dup2\n /* \"--CODEGEN--\":4273:4286 */\n gt\n /* \"--CODEGEN--\":4270:4272 */\n iszero\n tag_79\n jumpi\n /* \"--CODEGEN--\":4344:4345 */\n 0x00\n /* \"--CODEGEN--\":4335:4341 */\n dup5\n /* \"--CODEGEN--\":4330:4333 */\n dup5\n /* \"--CODEGEN--\":4326:4342 */\n add\n /* \"--CODEGEN--\":4319:4346 */\n mstore\n /* \"--CODEGEN--\":4270:4272 */\ntag_79:\n /* \"--CODEGEN--\":4140:4359 */\n pop\n pop\n pop\n pop\n jump\n /* \"--CODEGEN--\":4367:4484 */\ntag_48:\n /* \"--CODEGEN--\":4436:4460 */\n tag_80\n /* \"--CODEGEN--\":4454:4459 */\n dup2\n /* \"--CODEGEN--\":4436:4460 */\n jump(tag_30)\ntag_80:\n /* \"--CODEGEN--\":4429:4434 */\n dup2\n /* \"--CODEGEN--\":4426:4461 */\n eq\n /* \"--CODEGEN--\":4416:4418 */\n tag_81\n jumpi\n /* \"--CODEGEN--\":4475:4476 */\n 0x00\n /* \"--CODEGEN--\":4472:4473 */\n dup1\n /* \"--CODEGEN--\":4465:4477 */\n revert\n /* \"--CODEGEN--\":4416:4418 */\ntag_81:\n /* \"--CODEGEN--\":4410:4484 */\n pop\n jump\n /* \"--CODEGEN--\":4491:4606 */\ntag_50:\n /* \"--CODEGEN--\":4559:4582 */\n tag_80\n /* \"--CODEGEN--\":4576:4581 */\n dup2\n /* \"--CODEGEN--\":4559:4582 */\n jump(tag_75)\n /* \"--CODEGEN--\":4533:4606 */\ntag_33:\n /* \"./src/contracts/mocks/xcert-mock.sol\":162:1263 contract XcertMock is XcertToken {... */\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"./src/contracts/mocks/xcert-mock.sol\":162:1263 contract XcertMock is XcertToken {... */\n mstore(0x40, 0x80)\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_1\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x00\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_1:\n /* \"./src/contracts/mocks/xcert-mock.sol\":162:1263 contract XcertMock is XcertToken {... */\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x70a08231\n gt\n tag_39\n jumpi\n dup1\n 0xb187bd26\n gt\n tag_40\n jumpi\n dup1\n 0xbedb86fb\n gt\n tag_41\n jumpi\n dup1\n 0xbedb86fb\n eq\n tag_34\n jumpi\n dup1\n 0xc298bba5\n eq\n tag_35\n jumpi\n dup1\n 0xc87b56dd\n eq\n tag_36\n jumpi\n dup1\n 0xe985e9c5\n eq\n tag_37\n jumpi\n dup1\n 0xf394b6df\n eq\n tag_38\n jumpi\n jump(tag_2)\n tag_41:\n dup1\n 0xb187bd26\n eq\n tag_30\n jumpi\n dup1\n 0xb88d4fde\n eq\n tag_31\n jumpi\n dup1\n 0xba00a330\n eq\n tag_32\n jumpi\n dup1\n 0xbda0e852\n eq\n tag_33\n jumpi\n jump(tag_2)\n tag_40:\n dup1\n 0x8fa76d8d\n gt\n tag_42\n jumpi\n dup1\n 0x8fa76d8d\n eq\n tag_25\n jumpi\n dup1\n 0x95d89b41\n eq\n tag_26\n jumpi\n dup1\n 0x9d118770\n eq\n tag_27\n jumpi\n dup1\n 0xa22cb465\n eq\n tag_28\n jumpi\n dup1\n 0xb0e329e4\n eq\n tag_29\n jumpi\n jump(tag_2)\n tag_42:\n dup1\n 0x70a08231\n eq\n tag_21\n jumpi\n dup1\n 0x70c31afc\n eq\n tag_22\n jumpi\n dup1\n 0x8933c670\n eq\n tag_23\n jumpi\n dup1\n 0x89b73ec0\n eq\n tag_24\n jumpi\n jump(tag_2)\n tag_39:\n dup1\n 0x23b872dd\n gt\n tag_43\n jumpi\n dup1\n 0x45a32c86\n gt\n tag_44\n jumpi\n dup1\n 0x45a32c86\n eq\n tag_16\n jumpi\n dup1\n 0x4f6ccce7\n eq\n tag_17\n jumpi\n dup1\n 0x568f5b48\n eq\n tag_18\n jumpi\n dup1\n 0x62b99ad4\n eq\n tag_19\n jumpi\n dup1\n 0x6352211e\n eq\n tag_20\n jumpi\n jump(tag_2)\n tag_44:\n dup1\n 0x23b872dd\n eq\n tag_12\n jumpi\n dup1\n 0x23bf3396\n eq\n tag_13\n jumpi\n dup1\n 0x2f745c59\n eq\n tag_14\n jumpi\n dup1\n 0x42842e0e\n eq\n tag_15\n jumpi\n jump(tag_2)\n tag_43:\n dup1\n 0x095ea7b3\n gt\n tag_45\n jumpi\n dup1\n 0x095ea7b3\n eq\n tag_7\n jumpi\n dup1\n 0x0ab319e8\n eq\n tag_8\n jumpi\n dup1\n 0x15ec3b8b\n eq\n tag_9\n jumpi\n dup1\n 0x18160ddd\n eq\n tag_10\n jumpi\n dup1\n 0x20c5429b\n eq\n tag_11\n jumpi\n jump(tag_2)\n tag_45:\n dup1\n 0x01ffc9a7\n eq\n tag_3\n jumpi\n dup1\n 0x06fdde03\n eq\n tag_4\n jumpi\n dup1\n 0x075b1a09\n eq\n tag_5\n jumpi\n dup1\n 0x081812fc\n eq\n tag_6\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/supports-interface.sol\":607:757 */\n tag_3:\n tag_46\n tag_47\n calldatasize\n 0x04\n jump(tag_48)\n tag_47:\n tag_49\n jump\t// in\n tag_46:\n mload(0x40)\n tag_50\n swap2\n swap1\n jump(tag_51)\n tag_50:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11033:11133 */\n tag_4:\n tag_52\n tag_53\n jump\t// in\n tag_52:\n mload(0x40)\n tag_50\n swap2\n swap1\n jump(tag_115)\n /* \"./src/contracts/xcert.sol\":10910:11020 function schemaId()... */\n tag_5:\n tag_56\n tag_57\n jump\t// in\n tag_56:\n mload(0x40)\n tag_50\n swap2\n swap1\n jump(tag_59)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9328:9524 */\n tag_6:\n tag_60\n tag_61\n calldatasize\n 0x04\n jump(tag_89)\n tag_61:\n tag_63\n jump\t// in\n tag_60:\n mload(0x40)\n tag_50\n swap2\n swap1\n jump(tag_65)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7208:7576 */\n tag_7:\n tag_66\n tag_67\n calldatasize\n 0x04\n jump(tag_68)\n tag_67:\n tag_69\n jump\t// in\n tag_66:\n stop\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3005:3234 */\n tag_8:\n tag_66\n tag_71\n calldatasize\n 0x04\n jump(tag_68)\n tag_71:\n tag_72\n jump\t// in\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3900:4111 */\n tag_9:\n tag_66\n tag_74\n calldatasize\n 0x04\n jump(tag_68)\n tag_74:\n tag_75\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10055:10155 */\n tag_10:\n tag_56\n tag_77\n jump\t// in\n /* \"./src/contracts/xcert.sol\":5220:5456 function revoke(... */\n tag_11:\n tag_66\n tag_81\n calldatasize\n 0x04\n jump(tag_89)\n tag_81:\n tag_82\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6692:6837 */\n tag_12:\n tag_66\n tag_84\n calldatasize\n 0x04\n jump(tag_85)\n tag_84:\n tag_86\n jump\t// in\n /* \"./src/contracts/xcert.sol\":3502:3548 mapping(bytes32 => bool) public claimPerformed */\n tag_13:\n tag_46\n tag_88\n calldatasize\n 0x04\n jump(tag_89)\n tag_88:\n tag_90\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10694:10921 */\n tag_14:\n tag_56\n tag_93\n calldatasize\n 0x04\n jump(tag_68)\n tag_93:\n tag_94\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6010:6167 */\n tag_15:\n tag_66\n tag_97\n calldatasize\n 0x04\n jump(tag_85)\n tag_97:\n tag_98\n jump\t// in\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2008:2059 */\n tag_16:\n tag_56\n tag_100\n calldatasize\n 0x04\n jump(tag_101)\n tag_100:\n tag_102\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10289:10465 */\n tag_17:\n tag_56\n tag_105\n calldatasize\n 0x04\n jump(tag_89)\n tag_105:\n tag_106\n jump\t// in\n /* \"./src/contracts/xcert.sol\":7680:8528 function setApprovalForAllWithSignature(... */\n tag_18:\n tag_66\n tag_109\n calldatasize\n 0x04\n jump(tag_110)\n tag_109:\n tag_111\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":1554:1577 */\n tag_19:\n tag_52\n tag_113\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8906:9091 */\n tag_20:\n tag_60\n tag_117\n calldatasize\n 0x04\n jump(tag_89)\n tag_117:\n tag_118\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8474:8655 */\n tag_21:\n tag_56\n tag_121\n calldatasize\n 0x04\n jump(tag_101)\n tag_121:\n tag_122\n jump\t// in\n /* \"./src/contracts/xcert.sol\":11139:11282 function tokenImprint(... */\n tag_22:\n tag_56\n tag_125\n calldatasize\n 0x04\n jump(tag_89)\n tag_125:\n tag_126\n jump\t// in\n /* \"./src/contracts/xcert.sol\":9152:9591 function generateClaim(... */\n tag_23:\n tag_56\n tag_129\n calldatasize\n 0x04\n jump(tag_130)\n tag_129:\n tag_131\n jump\t// in\n /* \"./src/contracts/xcert.sol\":4844:5030 function setUri(... */\n tag_24:\n tag_66\n tag_134\n calldatasize\n 0x04\n jump(tag_135)\n tag_134:\n tag_136\n jump\t// in\n /* \"./src/contracts/xcert.sol\":9776:10776 function isValidSignature(... */\n tag_25:\n tag_46\n tag_138\n calldatasize\n 0x04\n jump(tag_139)\n tag_138:\n tag_140\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11232:11340 */\n tag_26:\n tag_52\n tag_143\n jump\t// in\n /* \"./src/contracts/xcert.sol\":6460:6827 function destroy(... */\n tag_27:\n tag_66\n tag_146\n calldatasize\n 0x04\n jump(tag_89)\n tag_146:\n tag_147\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7978:8188 */\n tag_28:\n tag_66\n tag_149\n calldatasize\n 0x04\n jump(tag_150)\n tag_149:\n tag_151\n jump\t// in\n /* \"./src/contracts/xcert.sol\":4529:4726 function create(... */\n tag_29:\n tag_66\n tag_153\n calldatasize\n 0x04\n jump(tag_154)\n tag_153:\n tag_155\n jump\t// in\n /* \"./src/contracts/xcert.sol\":4041:4061 bool public isPaused */\n tag_30:\n tag_46\n tag_157\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":5470:5656 */\n tag_31:\n tag_66\n tag_160\n calldatasize\n 0x04\n jump(tag_161)\n tag_160:\n tag_162\n jump\t// in\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4376:4600 */\n tag_32:\n tag_46\n tag_164\n calldatasize\n 0x04\n jump(tag_68)\n tag_164:\n tag_165\n jump\t// in\n /* \"./src/contracts/xcert.sol\":5933:6297 function updateTokenImprint(... */\n tag_33:\n tag_66\n tag_168\n calldatasize\n 0x04\n jump(tag_169)\n tag_168:\n tag_170\n jump\t// in\n /* \"./src/contracts/xcert.sol\":5581:5812 function setPause(... */\n tag_34:\n tag_66\n tag_172\n calldatasize\n 0x04\n jump(tag_173)\n tag_172:\n tag_174\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":1682:1706 */\n tag_35:\n tag_52\n tag_176\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11683:12123 */\n tag_36:\n tag_52\n tag_179\n calldatasize\n 0x04\n jump(tag_89)\n tag_179:\n tag_180\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9785:9954 */\n tag_37:\n tag_46\n tag_183\n calldatasize\n 0x04\n jump(tag_184)\n tag_183:\n tag_185\n jump\t// in\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3452:3683 */\n tag_38:\n tag_66\n tag_188\n calldatasize\n 0x04\n jump(tag_68)\n tag_188:\n tag_189\n jump\t// in\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/supports-interface.sol\":607:757 */\n tag_49:\n not(sub(shl(0xe0, 0x01), 0x01))\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/supports-interface.sol\":719:752 */\n dup2\n and\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/supports-interface.sol\":698:702 */\n 0x00\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/supports-interface.sol\":719:752 */\n swap1\n dup2\n mstore\n 0x20\n dup2\n swap1\n mstore\n 0x40\n swap1\n keccak256\n sload\n 0xff\n and\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/supports-interface.sol\":607:757 */\n tag_190:\n swap2\n swap1\n pop\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11033:11133 */\n tag_53:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11121:11128 */\n 0x01\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11113:11128 */\n dup1\n sload\n 0x40\n dup1\n mload\n 0x20\n 0x1f\n 0x02\n not(0x00)\n 0x0100\n dup8\n dup10\n and\n iszero\n mul\n add\n swap1\n swap6\n and\n swap5\n swap1\n swap5\n div\n swap4\n dup5\n add\n dup2\n swap1\n div\n dup2\n mul\n dup3\n add\n dup2\n add\n swap1\n swap3\n mstore\n dup3\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11084:11103 */\n 0x60\n swap4\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11113:11128 */\n swap1\n swap3\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11121:11128 */\n swap1\n swap2\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11113:11128 */\n dup4\n add\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11121:11128 */\n dup3\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11113:11128 */\n dup3\n dup1\n iszero\n tag_192\n jumpi\n dup1\n 0x1f\n lt\n tag_193\n jumpi\n 0x0100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_192)\n tag_193:\n dup3\n add\n swap2\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n tag_194:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x01\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_194\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_192:\n pop\n pop\n pop\n pop\n pop\n swap1\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11033:11133 */\n swap1\n jump\t// out\n /* \"./src/contracts/xcert.sol\":10910:11020 function schemaId()... */\n tag_57:\n /* \"./src/contracts/xcert.sol\":11004:11015 nftSchemaId */\n sload(0x0e)\n swap1\n /* \"./src/contracts/xcert.sol\":10910:11020 function schemaId()... */\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9328:9524 */\n tag_63:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9410:9417 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9435:9454 */\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9435:9444 */\n 0x09\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9435:9454 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9470:9483 */\n dup2\n mload\n dup1\n dup4\n add\n swap1\n swap3\n mstore\n 0x06\n dup3\n mstore\n shl(0xd1, 0x18181b181819)\n swap3\n dup3\n add\n swap3\n swap1\n swap3\n mstore\n swap1\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9435:9454 */\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9427:9484 */\n tag_197\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_198:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_197:\n pop\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9497:9519 */\n 0x00\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9497:9509 */\n 0x0a\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9497:9519 */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n sub(shl(0xa0, 0x01), 0x01)\n and\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9328:9524 */\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7208:7576 */\n tag_69:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7314:7332 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7335:7354 */\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7335:7344 */\n 0x09\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7335:7354 */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n sub(shl(0xa0, 0x01), 0x01)\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7389:7399 */\n caller\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7375:7399 */\n dup2\n eq\n dup1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7375:7443 */\n tag_200\n jumpi\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7403:7431 */\n dup2\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7403:7419 */\n 0x0b\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7403:7431 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7432:7442 */\n caller\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7403:7443 */\n dup5\n mstore\n swap1\n swap2\n mstore\n swap1\n keccak256\n sload\n 0xff\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7375:7443 */\n tag_200:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7451:7472 */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x06\n dup2\n mstore\n 0x20\n add\n shl(0xd0, 0x303036303033)\n dup2\n mstore\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7360:7478 */\n swap1\n tag_201\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_201:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7485:7507 */\n 0x00\n dup3\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7485:7497 */\n 0x0a\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7485:7507 */\n 0x20\n mstore\n 0x40\n dup1\n dup3\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7485:7519 */\n dup1\n sload\n not(sub(shl(0xa0, 0x01), 0x01))\n and\n sub(shl(0xa0, 0x01), 0x01)\n dup8\n dup2\n and\n swap2\n dup3\n or\n swap1\n swap3\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7530:7571 */\n swap2\n mload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7485:7507 */\n dup6\n swap4\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7530:7571 */\n swap2\n dup6\n and\n swap2\n 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\n swap2\n log4\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7208:7576 */\n pop\n pop\n pop\n jump\t// out\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3005:3234 */\n tag_72:\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2475:2488 */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n dup3\n mstore\n 0x06\n dup1\n dup3\n mstore\n shl(0xd1, 0x18189b981819)\n 0x20\n swap3\n dup4\n add\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2527:2537 */\n caller\n 0x00\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2526 */\n 0x0c\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n dup4\n mstore\n dup4\n swap1\n keccak256\n sload\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2573:2587 */\n dup4\n mload\n dup1\n dup6\n add\n swap1\n swap5\n mstore\n swap1\n dup4\n mstore\n shl(0xd0, 0x303137303031)\n swap2\n dup4\n add\n swap2\n swap1\n swap2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":1190:1191 */\n 0x01\n swap2\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2573:2587 */\n swap1\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2551 */\n dup3\n and\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2565 */\n dup3\n eq\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2495:2593 */\n tag_206\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_206:\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3131:3156 */\n dup4\n and\n 0x00\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3131:3147 */\n 0x0c\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3131:3156 */\n 0x20\n mstore\n 0x40\n dup1\n dup3\n keccak256\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3131:3170 */\n dup1\n sload\n dup7\n or\n swap1\n dup2\n swap1\n sstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3181:3229 */\n swap1\n mload\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3131:3170 */\n swap1\n swap3\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3131:3156 */\n swap2\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3181:3229 */\n 0xd1d59d2d212a435434e7a4a4676427610dfe2b6268b01e541d280d65bf3d6b90\n swap2\n log3\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3005:3234 */\n pop\n pop\n pop\n jump\t// out\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3900:4111 */\n tag_75:\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2475:2488 */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n dup3\n mstore\n 0x06\n dup1\n dup3\n mstore\n shl(0xd1, 0x18189b981819)\n 0x20\n swap3\n dup4\n add\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2527:2537 */\n caller\n 0x00\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2526 */\n 0x0c\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n dup4\n mstore\n dup4\n swap1\n keccak256\n sload\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2573:2587 */\n dup4\n mload\n dup1\n dup6\n add\n swap1\n swap5\n mstore\n swap1\n dup4\n mstore\n shl(0xd0, 0x303137303031)\n swap2\n dup4\n add\n swap2\n swap1\n swap2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":1190:1191 */\n 0x01\n swap2\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2573:2587 */\n swap1\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2551 */\n dup3\n and\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2565 */\n dup3\n eq\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2495:2593 */\n tag_212\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_212:\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4024:4049 */\n dup4\n and\n 0x00\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4024:4040 */\n 0x0c\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4024:4049 */\n 0x20\n mstore\n 0x40\n dup1\n dup3\n keccak256\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4024:4062 */\n dup6\n swap1\n sstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4073:4106 */\n mload\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4052:4062 */\n dup5\n swap3\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4024:4049 */\n swap2\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4073:4106 */\n 0xd1d59d2d212a435434e7a4a4676427610dfe2b6268b01e541d280d65bf3d6b90\n swap2\n log3\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3900:4111 */\n pop\n pop\n pop\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10055:10155 */\n tag_77:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10137:10143 */\n 0x05\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10137:10150 */\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10055:10155 */\n tag_215:\n swap1\n jump\t// out\n /* \"./src/contracts/xcert.sol\":5220:5456 function revoke(... */\n tag_82:\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2475:2488 */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n dup3\n mstore\n 0x06\n dup1\n dup3\n mstore\n shl(0xd1, 0x18189b981819)\n /* \"./src/contracts/xcert.sol\":791:793 32 */\n 0x20\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2475:2488 */\n swap3\n dup4\n add\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2527:2537 */\n caller\n 0x00\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2526 */\n 0x0c\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n dup4\n mstore\n dup4\n swap1\n keccak256\n sload\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2573:2587 */\n dup4\n mload\n dup1\n dup6\n add\n swap1\n swap5\n mstore\n swap1\n dup4\n mstore\n shl(0xd0, 0x303137303031)\n dup4\n dup4\n add\n mstore\n /* \"./src/contracts/xcert.sol\":791:793 32 */\n swap1\n swap2\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2573:2587 */\n swap1\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2551 */\n dup3\n and\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2565 */\n dup3\n eq\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2495:2593 */\n tag_219\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_219:\n pop\n shl(0xe0, 0x20c5429b)\n /* \"./src/contracts/xcert.sol\":5330:5349 supportedInterfaces */\n 0x00\n /* \"./src/contracts/xcert.sol\":5330:5360 supportedInterfaces[REVOKABLE] */\n swap1\n dup2\n mstore\n 0x20\n swap1\n dup2\n mstore\n sload(0xa475e1e33e639aa8527a4f5c4f611c4588486a1a8e7684839ad95dc8b4e841a4)\n 0x40\n /* \"./src/contracts/xcert.sol\":5362:5386 CAPABILITY_NOT_SUPPORTED */\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x06\n dup2\n mstore\n shl(0xd0, 0x303037303031)\n swap3\n dup2\n add\n swap3\n swap1\n swap3\n mstore\n /* \"./src/contracts/xcert.sol\":5330:5360 supportedInterfaces[REVOKABLE] */\n 0xff\n and\n /* \"./src/contracts/xcert.sol\":5322:5387 require(supportedInterfaces[REVOKABLE], CAPABILITY_NOT_SUPPORTED) */\n tag_222\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_222:\n pop\n /* \"./src/contracts/xcert.sol\":5393:5417 super._destroy(_tokenId) */\n tag_224\n /* \"./src/contracts/xcert.sol\":5408:5416 _tokenId */\n dup3\n /* \"./src/contracts/xcert.sol\":5393:5407 super._destroy */\n tag_225\n /* \"./src/contracts/xcert.sol\":5393:5417 super._destroy(_tokenId) */\n jump\t// in\n tag_224:\n pop\n /* \"./src/contracts/xcert.sol\":5430:5451 idToImprint[_tokenId] */\n 0x00\n swap1\n dup2\n mstore\n /* \"./src/contracts/xcert.sol\":5430:5441 idToImprint */\n 0x0f\n /* \"./src/contracts/xcert.sol\":5430:5451 idToImprint[_tokenId] */\n 0x20\n mstore\n 0x40\n dup2\n keccak256\n /* \"./src/contracts/xcert.sol\":5423:5451 delete idToImprint[_tokenId] */\n sstore\n /* \"./src/contracts/xcert.sol\":5220:5456 function revoke(... */\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6692:6837 */\n tag_86:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6797:6832 */\n tag_227\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6811:6816 */\n dup4\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6818:6821 */\n dup4\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6823:6831 */\n dup4\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6797:6810 */\n tag_228\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6797:6832 */\n jump\t// in\n tag_227:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6692:6837 */\n pop\n pop\n pop\n jump\t// out\n /* \"./src/contracts/xcert.sol\":3502:3548 mapping(bytes32 => bool) public claimPerformed */\n tag_90:\n mstore(0x20, 0x0d)\n 0x00\n swap1\n dup2\n mstore\n 0x40\n swap1\n keccak256\n sload\n 0xff\n and\n dup2\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10694:10921 */\n tag_94:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10836:10854 */\n dup3\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10802:10809 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10836:10854 */\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10836:10846 */\n 0x07\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10836:10854 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10836:10861 */\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10863:10876 */\n dup2\n mload\n dup1\n dup4\n add\n swap1\n swap3\n mstore\n 0x06\n dup3\n mstore\n shl(0xd0, 0x303036303037)\n swap3\n dup3\n add\n swap3\n swap1\n swap3\n mstore\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10827:10861 */\n dup4\n lt\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10819:10877 */\n tag_230\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_230:\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10890:10908 */\n dup4\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10890:10900 */\n 0x07\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10890:10908 */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10890:10916 */\n dup1\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10909:10915 */\n dup4\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10890:10916 */\n dup2\n lt\n tag_232\n jumpi\n invalid\n tag_232:\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10883:10916 */\n swap1\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10694:10921 */\n tag_229:\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6010:6167 */\n tag_98:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6119:6162 */\n tag_227\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6137:6142 */\n dup4\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6144:6147 */\n dup4\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6149:6157 */\n dup4\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6119:6162 */\n mload(0x40)\n dup1\n 0x20\n add\n 0x40\n mstore\n dup1\n 0x00\n dup2\n mstore\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6119:6136 */\n tag_236\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":6119:6162 */\n jump\t// in\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2008:2059 */\n tag_102:\n mstore(0x20, 0x0c)\n 0x00\n swap1\n dup2\n mstore\n 0x40\n swap1\n keccak256\n sload\n dup2\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10289:10465 */\n tag_106:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10404:10410 */\n 0x05\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10404:10417 */\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10419:10432 */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x06\n dup2\n mstore\n shl(0xd0, 0x303036303037)\n 0x20\n dup3\n add\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10370:10377 */\n 0x00\n swap2\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10395:10417 */\n dup4\n lt\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10387:10433 */\n tag_238\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_238:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10446:10452 */\n 0x05\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10453:10459 */\n dup3\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10446:10460 */\n dup2\n sload\n dup2\n lt\n tag_240\n jumpi\n invalid\n tag_240:\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10439:10460 */\n swap1\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":10289:10465 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"./src/contracts/xcert.sol\":7680:8528 function setApprovalForAllWithSignature(... */\n tag_111:\n /* \"./src/contracts/xcert.sol\":7937:7950 bytes32 claim */\n 0x00\n /* \"./src/contracts/xcert.sol\":7953:8086 generateClaim(... */\n tag_243\n /* \"./src/contracts/xcert.sol\":7974:7980 _owner */\n dup10\n /* \"./src/contracts/xcert.sol\":7988:7997 _operator */\n dup10\n /* \"./src/contracts/xcert.sol\":8005:8014 _approved */\n dup10\n /* \"./src/contracts/xcert.sol\":8022:8031 _feeToken */\n dup10\n /* \"./src/contracts/xcert.sol\":8039:8048 _feeValue */\n dup10\n /* \"./src/contracts/xcert.sol\":8056:8061 _seed */\n dup10\n /* \"./src/contracts/xcert.sol\":8069:8080 _expiration */\n dup10\n /* \"./src/contracts/xcert.sol\":7953:7966 generateClaim */\n tag_131\n /* \"./src/contracts/xcert.sol\":7953:8086 generateClaim(... */\n jump\t// in\n tag_243:\n /* \"./src/contracts/xcert.sol\":7937:8086 bytes32 claim = generateClaim(... */\n swap1\n pop\n /* \"./src/contracts/xcert.sol\":8107:8182 isValidSignature(... */\n tag_244\n /* \"./src/contracts/xcert.sol\":8133:8139 _owner */\n dup10\n /* \"./src/contracts/xcert.sol\":7937:8086 bytes32 claim = generateClaim(... */\n dup3\n /* \"./src/contracts/xcert.sol\":8107:8182 isValidSignature(... */\n tag_138\n calldatasize\n dup7\n swap1\n sub\n dup7\n add\n /* \"./src/contracts/xcert.sol\":8164:8174 _signature */\n dup7\n /* \"./src/contracts/xcert.sol\":8107:8182 isValidSignature(... */\n jump(tag_246)\n tag_244:\n /* \"./src/contracts/xcert.sol\":8190:8207 INVALID_SIGNATURE */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x06\n dup2\n mstore\n 0x20\n add\n shl(0xd0, 0x303037303035)\n dup2\n mstore\n pop\n /* \"./src/contracts/xcert.sol\":8092:8213 require(... */\n swap1\n tag_247\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_247:\n pop\n /* \"./src/contracts/xcert.sol\":8228:8249 claimPerformed[claim] */\n 0x00\n dup2\n dup2\n mstore\n /* \"./src/contracts/xcert.sol\":8228:8242 claimPerformed */\n 0x0d\n /* \"./src/contracts/xcert.sol\":8228:8249 claimPerformed[claim] */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n swap2\n dup3\n swap1\n keccak256\n sload\n /* \"./src/contracts/xcert.sol\":8251:8266 CLAIM_PERFORMED */\n dup3\n mload\n dup1\n dup5\n add\n swap1\n swap4\n mstore\n 0x06\n dup4\n mstore\n shl(0xd0, 0x303037303037)\n swap2\n dup4\n add\n swap2\n swap1\n swap2\n mstore\n /* \"./src/contracts/xcert.sol\":8228:8249 claimPerformed[claim] */\n 0xff\n and\n /* \"./src/contracts/xcert.sol\":8227:8249 !claimPerformed[claim] */\n iszero\n /* \"./src/contracts/xcert.sol\":8219:8267 require(!claimPerformed[claim], CLAIM_PERFORMED) */\n tag_249\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_249:\n pop\n /* \"./src/contracts/xcert.sol\":8301:8314 CLAIM_EXPIRED */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x06\n dup2\n mstore\n shl(0xd3, 0x060606e60607)\n 0x20\n dup3\n add\n mstore\n /* \"./src/contracts/xcert.sol\":8296:8299 now */\n timestamp\n /* \"./src/contracts/xcert.sol\":8281:8299 _expiration >= now */\n dup5\n lt\n iszero\n /* \"./src/contracts/xcert.sol\":8273:8315 require(_expiration >= now, CLAIM_EXPIRED) */\n tag_251\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_251:\n pop\n /* \"./src/contracts/xcert.sol\":8321:8342 claimPerformed[claim] */\n 0x00\n dup2\n dup2\n mstore\n /* \"./src/contracts/xcert.sol\":8321:8335 claimPerformed */\n 0x0d\n /* \"./src/contracts/xcert.sol\":8321:8342 claimPerformed[claim] */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"./src/contracts/xcert.sol\":8321:8349 claimPerformed[claim] = true */\n dup1\n sload\n /* \"./src/contracts/xcert.sol\":8345:8349 true */\n 0x01\n not(0xff)\n /* \"./src/contracts/xcert.sol\":8321:8349 claimPerformed[claim] = true */\n swap2\n dup3\n and\n or\n swap1\n swap2\n sstore\n sub(shl(0xa0, 0x01), 0x01)\n /* \"./src/contracts/xcert.sol\":8355:8379 ownerToOperators[_owner] */\n dup14\n dup2\n and\n dup6\n mstore\n /* \"./src/contracts/xcert.sol\":8355:8371 ownerToOperators */\n 0x0b\n /* \"./src/contracts/xcert.sol\":8355:8379 ownerToOperators[_owner] */\n dup5\n mstore\n dup3\n dup6\n keccak256\n /* \"./src/contracts/xcert.sol\":8355:8390 ownerToOperators[_owner][_operator] */\n dup14\n dup3\n and\n dup7\n mstore\n swap1\n swap4\n mstore\n swap3\n dup2\n swap1\n keccak256\n /* \"./src/contracts/xcert.sol\":8355:8402 ownerToOperators[_owner][_operator] = _approved */\n dup1\n sload\n swap1\n swap4\n and\n dup11\n iszero\n iszero\n or\n swap1\n swap3\n sstore\n /* \"./src/contracts/xcert.sol\":8408:8468 ERC20(_feeToken).transferFrom(_owner, msg.sender, _feeValue) */\n swap1\n mload\n shl(0xe0, 0x23b872dd)\n dup2\n mstore\n /* \"./src/contracts/xcert.sol\":8408:8437 ERC20(_feeToken).transferFrom */\n swap1\n dup8\n and\n swap1\n 0x23b872dd\n swap1\n /* \"./src/contracts/xcert.sol\":8408:8468 ERC20(_feeToken).transferFrom(_owner, msg.sender, _feeValue) */\n tag_253\n swap1\n /* \"./src/contracts/xcert.sol\":8355:8379 ownerToOperators[_owner] */\n dup13\n swap1\n /* \"./src/contracts/xcert.sol\":8446:8456 msg.sender */\n caller\n swap1\n /* \"./src/contracts/xcert.sol\":8458:8467 _feeValue */\n dup11\n swap1\n /* \"./src/contracts/xcert.sol\":8408:8468 ERC20(_feeToken).transferFrom(_owner, msg.sender, _feeValue) */\n 0x04\n add\n jump(tag_254)\n tag_253:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_255\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x00\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_255:\n /* \"./src/contracts/xcert.sol\":8408:8468 ERC20(_feeToken).transferFrom(_owner, msg.sender, _feeValue) */\n pop\n gas\n call\n iszero\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_256\n jumpi\n /* \"--CODEGEN--\":45:61 */\n returndatasize\n /* \"--CODEGEN--\":42:43 */\n 0x00\n /* \"--CODEGEN--\":39:40 */\n dup1\n /* \"--CODEGEN--\":24:62 */\n returndatacopy\n /* \"--CODEGEN--\":77:93 */\n returndatasize\n /* \"--CODEGEN--\":74:75 */\n 0x00\n /* \"--CODEGEN--\":67:94 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_256:\n /* \"./src/contracts/xcert.sol\":8408:8468 ERC20(_feeToken).transferFrom(_owner, msg.sender, _feeValue) */\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n /* \"--CODEGEN--\":101:105 */\n 0x1f\n /* \"--CODEGEN--\":97:106 */\n not\n /* \"--CODEGEN--\":90:94 */\n 0x1f\n /* \"--CODEGEN--\":84:88 */\n dup3\n /* \"--CODEGEN--\":80:95 */\n add\n /* \"--CODEGEN--\":76:107 */\n and\n /* \"--CODEGEN--\":69:74 */\n dup3\n /* \"--CODEGEN--\":65:108 */\n add\n /* \"--CODEGEN--\":126:132 */\n dup1\n /* \"--CODEGEN--\":120:124 */\n 0x40\n /* \"--CODEGEN--\":113:133 */\n mstore\n /* \"--CODEGEN--\":0:138 */\n pop\n /* \"./src/contracts/xcert.sol\":8408:8468 ERC20(_feeToken).transferFrom(_owner, msg.sender, _feeValue) */\n tag_257\n swap2\n swap1\n dup2\n add\n swap1\n jump(tag_258)\n tag_257:\n pop\n /* \"./src/contracts/xcert.sol\":8502:8511 _operator */\n dup8\n sub(shl(0xa0, 0x01), 0x01)\n /* \"./src/contracts/xcert.sol\":8479:8523 ApprovalForAll(_owner, _operator, _approved) */\n and\n /* \"./src/contracts/xcert.sol\":8494:8500 _owner */\n dup10\n sub(shl(0xa0, 0x01), 0x01)\n /* \"./src/contracts/xcert.sol\":8479:8523 ApprovalForAll(_owner, _operator, _approved) */\n and\n 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31\n /* \"./src/contracts/xcert.sol\":8513:8522 _approved */\n dup10\n /* \"./src/contracts/xcert.sol\":8479:8523 ApprovalForAll(_owner, _operator, _approved) */\n mload(0x40)\n tag_259\n swap2\n swap1\n jump(tag_51)\n tag_259:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"./src/contracts/xcert.sol\":7680:8528 function setApprovalForAllWithSignature(... */\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":1554:1577 */\n tag_113:\n 0x03\n dup1\n sload\n 0x40\n dup1\n mload\n 0x20\n 0x02\n 0x01\n dup6\n and\n iszero\n 0x0100\n mul\n not(0x00)\n add\n swap1\n swap5\n and\n swap4\n swap1\n swap4\n div\n 0x1f\n dup2\n add\n dup5\n swap1\n div\n dup5\n mul\n dup3\n add\n dup5\n add\n swap1\n swap3\n mstore\n dup2\n dup2\n mstore\n swap3\n swap2\n dup4\n add\n dup3\n dup3\n dup1\n iszero\n tag_260\n jumpi\n dup1\n 0x1f\n lt\n tag_261\n jumpi\n 0x0100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_260)\n tag_261:\n dup3\n add\n swap2\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n tag_262:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x01\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_262\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_260:\n pop\n pop\n pop\n pop\n pop\n dup2\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8906:9091 */\n tag_118:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8984:8998 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9017:9036 */\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9017:9026 */\n 0x09\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9017:9036 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n swap2\n dup3\n swap1\n keccak256\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9072:9085 */\n dup3\n mload\n dup1\n dup5\n add\n swap1\n swap4\n mstore\n 0x06\n dup4\n mstore\n shl(0xd1, 0x18181b181819)\n swap2\n dup4\n add\n swap2\n swap1\n swap2\n mstore\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9017:9036 */\n and\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9050:9070 */\n dup2\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9042:9086 */\n tag_264\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_264:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8906:9091 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8474:8655 */\n tag_122:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8599:8611 */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x06\n dup2\n mstore\n shl(0xd0, 0x303036303031)\n 0x20\n dup3\n add\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8552:8559 */\n 0x00\n swap1\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8577:8597 */\n dup4\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8569:8612 */\n tag_267\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_267:\n pop\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8625:8643 */\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8625:8635 */\n 0x07\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8625:8643 */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8625:8650 */\n sload\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8474:8655 */\n jump\t// out\n /* \"./src/contracts/xcert.sol\":11139:11282 function tokenImprint(... */\n tag_126:\n /* \"./src/contracts/xcert.sol\":11221:11236 bytes32 imprint */\n 0x00\n /* \"./src/contracts/xcert.sol\":11256:11277 idToImprint[_tokenId] */\n swap1\n dup2\n mstore\n /* \"./src/contracts/xcert.sol\":11256:11267 idToImprint */\n 0x0f\n /* \"./src/contracts/xcert.sol\":11256:11277 idToImprint[_tokenId] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n swap1\n /* \"./src/contracts/xcert.sol\":11139:11282 function tokenImprint(... */\n jump\t// out\n /* \"./src/contracts/xcert.sol\":9152:9591 function generateClaim(... */\n tag_131:\n /* \"./src/contracts/xcert.sol\":9364:9371 bytes32 */\n 0x00\n /* \"./src/contracts/xcert.sol\":9439:9443 this */\n address\n /* \"./src/contracts/xcert.sol\":9454:9460 _owner */\n dup9\n /* \"./src/contracts/xcert.sol\":9470:9479 _operator */\n dup9\n /* \"./src/contracts/xcert.sol\":9489:9498 _approved */\n dup9\n /* \"./src/contracts/xcert.sol\":9508:9517 _feeToken */\n dup9\n /* \"./src/contracts/xcert.sol\":9527:9536 _feeValue */\n dup9\n /* \"./src/contracts/xcert.sol\":9546:9551 _seed */\n dup9\n /* \"./src/contracts/xcert.sol\":9561:9572 _expiration */\n dup9\n /* \"./src/contracts/xcert.sol\":9405:9580 abi.encodePacked(... */\n add(0x20, mload(0x40))\n tag_271\n swap9\n swap8\n swap7\n swap6\n swap5\n swap4\n swap3\n swap2\n swap1\n jump(tag_272)\n tag_271:\n mload(0x40)\n /* \"--CODEGEN--\":49:53 */\n 0x20\n /* \"--CODEGEN--\":39:46 */\n dup2\n /* \"--CODEGEN--\":30:37 */\n dup4\n /* \"--CODEGEN--\":26:47 */\n sub\n /* \"--CODEGEN--\":22:54 */\n sub\n /* \"--CODEGEN--\":13:20 */\n dup2\n /* \"--CODEGEN--\":6:55 */\n mstore\n /* \"./src/contracts/xcert.sol\":9405:9580 abi.encodePacked(... */\n swap1\n 0x40\n mstore\n /* \"./src/contracts/xcert.sol\":9388:9586 keccak256(... */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"./src/contracts/xcert.sol\":9381:9586 return keccak256(... */\n swap1\n pop\n /* \"./src/contracts/xcert.sol\":9152:9591 function generateClaim(... */\n swap8\n swap7\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"./src/contracts/xcert.sol\":4844:5030 function setUri(... */\n tag_136:\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2475:2488 */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n dup3\n mstore\n 0x06\n dup1\n dup3\n mstore\n shl(0xd1, 0x18189b981819)\n 0x20\n swap3\n dup4\n add\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2527:2537 */\n caller\n 0x00\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2526 */\n 0x0c\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n dup4\n mstore\n dup4\n swap1\n keccak256\n sload\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2573:2587 */\n dup4\n mload\n dup1\n dup6\n add\n swap1\n swap5\n mstore\n swap1\n dup4\n mstore\n shl(0xd0, 0x303137303031)\n swap2\n dup4\n add\n swap2\n swap1\n swap2\n mstore\n /* \"./src/contracts/xcert.sol\":935:938 256 */\n 0x0100\n swap2\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2573:2587 */\n swap1\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2551 */\n dup3\n and\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2565 */\n dup3\n eq\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2495:2593 */\n tag_276\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_276:\n pop\n /* \"./src/contracts/xcert.sol\":4987:5025 super._setUri(_uriPrefix, _uriPostfix) */\n tag_279\n /* \"./src/contracts/xcert.sol\":5001:5011 _uriPrefix */\n dup6\n dup6\n /* \"./src/contracts/xcert.sol\":4987:5025 super._setUri(_uriPrefix, _uriPostfix) */\n dup1\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap4\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup4\n dup4\n /* \"--CODEGEN--\":30:33 */\n dup1\n /* \"--CODEGEN--\":22:28 */\n dup3\n /* \"--CODEGEN--\":14:20 */\n dup5\n /* \"--CODEGEN--\":1:34 */\n calldatacopy\n /* \"--CODEGEN--\":99:100 */\n 0x00\n /* \"--CODEGEN--\":81:97 */\n swap3\n add\n /* \"--CODEGEN--\":74:101 */\n swap2\n swap1\n swap2\n mstore\n pop\n pop\n /* \"./src/contracts/xcert.sol\":4987:5025 super._setUri(_uriPrefix, _uriPostfix) */\n 0x40\n dup1\n mload\n 0x20\n /* \"--CODEGEN--\":137:141 */\n 0x1f\n /* \"./src/contracts/xcert.sol\":4987:5025 super._setUri(_uriPrefix, _uriPostfix) */\n dup10\n add\n dup2\n swap1\n div\n dup2\n mul\n dup3\n add\n dup2\n add\n swap1\n swap3\n mstore\n dup8\n dup2\n mstore\n swap3\n pop\n /* \"./src/contracts/xcert.sol\":5013:5024 _uriPostfix */\n dup8\n swap2\n pop\n dup7\n swap1\n dup2\n swap1\n /* \"./src/contracts/xcert.sol\":4987:5025 super._setUri(_uriPrefix, _uriPostfix) */\n dup5\n add\n /* \"./src/contracts/xcert.sol\":5013:5024 _uriPostfix */\n dup4\n dup3\n dup1\n dup3\n /* \"./src/contracts/xcert.sol\":4987:5025 super._setUri(_uriPrefix, _uriPostfix) */\n dup5\n /* \"--CODEGEN--\":1:34 */\n calldatacopy\n /* \"--CODEGEN--\":99:100 */\n 0x00\n /* \"--CODEGEN--\":81:97 */\n swap3\n add\n /* \"--CODEGEN--\":74:101 */\n swap2\n swap1\n swap2\n mstore\n pop\n /* \"./src/contracts/xcert.sol\":4987:5000 super._setUri */\n tag_280\n swap3\n pop\n pop\n pop\n /* \"./src/contracts/xcert.sol\":4987:5025 super._setUri(_uriPrefix, _uriPostfix) */\n jump\t// in\n tag_279:\n /* \"./src/contracts/xcert.sol\":4844:5030 function setUri(... */\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"./src/contracts/xcert.sol\":9776:10776 function isValidSignature(... */\n tag_140:\n /* \"./src/contracts/xcert.sol\":9917:9921 bool */\n 0x00\n dup1\n /* \"./src/contracts/xcert.sol\":9935:9945 _signature */\n dup3\n /* \"./src/contracts/xcert.sol\":9935:9950 _signature.kind */\n 0x60\n add\n mload\n /* \"./src/contracts/xcert.sol\":9935:9976 _signature.kind == SignatureKind.eth_sign */\n 0x02\n dup2\n gt\n iszero\n tag_283\n jumpi\n invalid\n tag_283:\n eq\n /* \"./src/contracts/xcert.sol\":9931:10735 if (_signature.kind == SignatureKind.eth_sign)... */\n iszero\n tag_284\n jumpi\n /* \"./src/contracts/xcert.sol\":10008:10228 ecrecover(... */\n 0x01\n /* \"./src/contracts/xcert.sol\":10126:10132 _claim */\n dup4\n /* \"./src/contracts/xcert.sol\":10048:10144 abi.encodePacked(... */\n add(0x20, mload(0x40))\n tag_285\n swap2\n swap1\n jump(tag_286)\n tag_285:\n mload(0x40)\n /* \"--CODEGEN--\":49:53 */\n 0x20\n /* \"--CODEGEN--\":39:46 */\n dup2\n /* \"--CODEGEN--\":30:37 */\n dup4\n /* \"--CODEGEN--\":26:47 */\n sub\n /* \"--CODEGEN--\":22:54 */\n sub\n /* \"--CODEGEN--\":13:20 */\n dup2\n /* \"--CODEGEN--\":6:55 */\n mstore\n /* \"./src/contracts/xcert.sol\":10048:10144 abi.encodePacked(... */\n swap1\n 0x40\n mstore\n /* \"./src/contracts/xcert.sol\":10027:10154 keccak256(... */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"./src/contracts/xcert.sol\":10164:10174 _signature */\n dup4\n /* \"./src/contracts/xcert.sol\":10164:10176 _signature.v */\n 0x40\n add\n mload\n /* \"./src/contracts/xcert.sol\":10186:10196 _signature */\n dup5\n /* \"./src/contracts/xcert.sol\":10186:10198 _signature.r */\n 0x00\n add\n mload\n /* \"./src/contracts/xcert.sol\":10208:10218 _signature */\n dup6\n /* \"./src/contracts/xcert.sol\":10208:10220 _signature.s */\n 0x20\n add\n mload\n /* \"./src/contracts/xcert.sol\":10008:10228 ecrecover(... */\n mload(0x40)\n 0x00\n dup2\n mstore\n 0x20\n add\n 0x40\n mstore\n mload(0x40)\n tag_287\n swap5\n swap4\n swap3\n swap2\n swap1\n jump(tag_288)\n tag_287:\n 0x20\n mload(0x40)\n 0x20\n dup2\n sub\n swap1\n dup1\n dup5\n sub\n swap1\n dup6\n gas\n staticcall\n iszero\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_289\n jumpi\n /* \"--CODEGEN--\":45:61 */\n returndatasize\n /* \"--CODEGEN--\":42:43 */\n 0x00\n /* \"--CODEGEN--\":39:40 */\n dup1\n /* \"--CODEGEN--\":24:62 */\n returndatacopy\n /* \"--CODEGEN--\":77:93 */\n returndatasize\n /* \"--CODEGEN--\":74:75 */\n 0x00\n /* \"--CODEGEN--\":67:94 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_289:\n /* \"./src/contracts/xcert.sol\":10008:10228 ecrecover(... */\n pop\n pop\n pop\n mload(sub(mload(0x40), 0x20))\n sub(shl(0xa0, 0x01), 0x01)\n /* \"./src/contracts/xcert.sol\":9997:10228 _signer == ecrecover(... */\n and\n /* \"./src/contracts/xcert.sol\":9997:10004 _signer */\n dup5\n sub(shl(0xa0, 0x01), 0x01)\n /* \"./src/contracts/xcert.sol\":9997:10228 _signer == ecrecover(... */\n and\n eq\n /* \"./src/contracts/xcert.sol\":9990:10228 return _signer == ecrecover(... */\n swap1\n pop\n jump(tag_281)\n /* \"./src/contracts/xcert.sol\":9931:10735 if (_signature.kind == SignatureKind.eth_sign)... */\n tag_284:\n /* \"./src/contracts/xcert.sol\":10264:10284 SignatureKind.trezor */\n 0x01\n /* \"./src/contracts/xcert.sol\":10245:10255 _signature */\n dup3\n /* \"./src/contracts/xcert.sol\":10245:10260 _signature.kind */\n 0x60\n add\n mload\n /* \"./src/contracts/xcert.sol\":10245:10284 _signature.kind == SignatureKind.trezor */\n 0x02\n dup2\n gt\n iszero\n tag_292\n jumpi\n invalid\n tag_292:\n eq\n /* \"./src/contracts/xcert.sol\":10241:10735 if (_signature.kind == SignatureKind.trezor)... */\n iszero\n tag_293\n jumpi\n /* \"./src/contracts/xcert.sol\":10316:10538 ecrecover(... */\n 0x01\n /* \"./src/contracts/xcert.sol\":10436:10442 _claim */\n dup4\n /* \"./src/contracts/xcert.sol\":10356:10454 abi.encodePacked(... */\n add(0x20, mload(0x40))\n tag_285\n swap2\n swap1\n jump(tag_295)\n /* \"./src/contracts/xcert.sol\":10241:10735 if (_signature.kind == SignatureKind.trezor)... */\n tag_293:\n /* \"./src/contracts/xcert.sol\":10574:10597 SignatureKind.no_prefix */\n 0x02\n /* \"./src/contracts/xcert.sol\":10555:10565 _signature */\n dup3\n /* \"./src/contracts/xcert.sol\":10555:10570 _signature.kind */\n 0x60\n add\n mload\n /* \"./src/contracts/xcert.sol\":10555:10597 _signature.kind == SignatureKind.no_prefix */\n 0x02\n dup2\n gt\n iszero\n tag_300\n jumpi\n invalid\n tag_300:\n eq\n /* \"./src/contracts/xcert.sol\":10551:10735 if (_signature.kind == SignatureKind.no_prefix)... */\n iszero\n tag_301\n jumpi\n /* \"./src/contracts/xcert.sol\":10629:10728 ecrecover(... */\n 0x01\n /* \"./src/contracts/xcert.sol\":10648:10654 _claim */\n dup4\n /* \"./src/contracts/xcert.sol\":10664:10674 _signature */\n dup4\n /* \"./src/contracts/xcert.sol\":10664:10676 _signature.v */\n 0x40\n add\n mload\n /* \"./src/contracts/xcert.sol\":10686:10696 _signature */\n dup5\n /* \"./src/contracts/xcert.sol\":10686:10698 _signature.r */\n 0x00\n add\n mload\n /* \"./src/contracts/xcert.sol\":10708:10718 _signature */\n dup6\n /* \"./src/contracts/xcert.sol\":10708:10720 _signature.s */\n 0x20\n add\n mload\n /* \"./src/contracts/xcert.sol\":10629:10728 ecrecover(... */\n mload(0x40)\n 0x00\n dup2\n mstore\n 0x20\n add\n 0x40\n mstore\n mload(0x40)\n tag_287\n swap5\n swap4\n swap3\n swap2\n swap1\n jump(tag_288)\n /* \"./src/contracts/xcert.sol\":10551:10735 if (_signature.kind == SignatureKind.no_prefix)... */\n tag_301:\n /* \"./src/contracts/xcert.sol\":10748:10770 INVALID_SIGNATURE_KIND */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n dup3\n mstore\n 0x06\n dup2\n mstore\n shl(0xd1, 0x18181b98181b)\n 0x20\n dup3\n add\n mstore\n /* \"./src/contracts/xcert.sol\":10741:10771 revert(INVALID_SIGNATURE_KIND) */\n swap1\n mload\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n tag_198\n swap2\n /* \"./src/contracts/xcert.sol\":10748:10770 INVALID_SIGNATURE_KIND */\n swap1\n /* \"./src/contracts/xcert.sol\":10741:10771 revert(INVALID_SIGNATURE_KIND) */\n 0x04\n add\n jump(tag_115)\n /* \"./src/contracts/xcert.sol\":9776:10776 function isValidSignature(... */\n tag_281:\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11232:11340 */\n tag_143:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11326:11335 */\n 0x02\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11316:11335 */\n dup1\n sload\n 0x40\n dup1\n mload\n 0x20\n 0x1f\n not(0x00)\n 0x0100\n 0x01\n dup8\n and\n iszero\n mul\n add\n swap1\n swap5\n and\n dup6\n swap1\n div\n swap4\n dup5\n add\n dup2\n swap1\n div\n dup2\n mul\n dup3\n add\n dup2\n add\n swap1\n swap3\n mstore\n dup3\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11285:11306 */\n 0x60\n swap4\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11316:11335 */\n swap1\n swap3\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11326:11335 */\n swap1\n swap2\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11316:11335 */\n dup4\n add\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11326:11335 */\n dup3\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11316:11335 */\n dup3\n dup1\n iszero\n tag_192\n jumpi\n dup1\n 0x1f\n lt\n tag_193\n jumpi\n 0x0100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_192)\n /* \"./src/contracts/xcert.sol\":6460:6827 function destroy(... */\n tag_147:\n shl(0xe4, 0x09d11877)\n /* \"./src/contracts/xcert.sol\":6532:6551 supportedInterfaces */\n 0x00\n /* \"./src/contracts/xcert.sol\":6532:6561 supportedInterfaces[BURNABLE] */\n swap1\n dup2\n mstore\n 0x20\n swap1\n dup2\n mstore\n sload(0xce9a4990a518db4a5651f73127cf155573e9e5e84e0b58e7d17581df388a54e1)\n 0x40\n /* \"./src/contracts/xcert.sol\":6563:6587 CAPABILITY_NOT_SUPPORTED */\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x06\n dup2\n mstore\n shl(0xd0, 0x303037303031)\n swap3\n dup2\n add\n swap3\n swap1\n swap3\n mstore\n /* \"./src/contracts/xcert.sol\":6532:6561 supportedInterfaces[BURNABLE] */\n 0xff\n and\n /* \"./src/contracts/xcert.sol\":6524:6588 require(supportedInterfaces[BURNABLE], CAPABILITY_NOT_SUPPORTED) */\n tag_310\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_310:\n pop\n /* \"./src/contracts/xcert.sol\":6594:6612 address tokenOwner */\n 0x00\n /* \"./src/contracts/xcert.sol\":6615:6634 idToOwner[_tokenId] */\n dup2\n dup2\n mstore\n /* \"./src/contracts/xcert.sol\":6615:6624 idToOwner */\n 0x09\n /* \"./src/contracts/xcert.sol\":6615:6634 idToOwner[_tokenId] */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n sub(shl(0xa0, 0x01), 0x01)\n and\n /* \"./src/contracts/xcert.sol\":6640:6664 super._destroy(_tokenId) */\n tag_312\n /* \"./src/contracts/xcert.sol\":6625:6633 _tokenId */\n dup3\n /* \"./src/contracts/xcert.sol\":6640:6654 super._destroy */\n tag_225\n /* \"./src/contracts/xcert.sol\":6640:6664 super._destroy(_tokenId) */\n jump\t// in\n tag_312:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"./src/contracts/xcert.sol\":6685:6709 tokenOwner == msg.sender */\n dup2\n and\n /* \"./src/contracts/xcert.sol\":6699:6709 msg.sender */\n caller\n /* \"./src/contracts/xcert.sol\":6685:6709 tokenOwner == msg.sender */\n eq\n dup1\n /* \"./src/contracts/xcert.sol\":6685:6753 tokenOwner == msg.sender || ownerToOperators[tokenOwner][msg.sender] */\n tag_313\n jumpi\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"./src/contracts/xcert.sol\":6713:6741 ownerToOperators[tokenOwner] */\n dup2\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"./src/contracts/xcert.sol\":6713:6729 ownerToOperators */\n 0x0b\n /* \"./src/contracts/xcert.sol\":6713:6741 ownerToOperators[tokenOwner] */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"./src/contracts/xcert.sol\":6742:6752 msg.sender */\n caller\n /* \"./src/contracts/xcert.sol\":6713:6753 ownerToOperators[tokenOwner][msg.sender] */\n dup5\n mstore\n swap1\n swap2\n mstore\n swap1\n keccak256\n sload\n 0xff\n and\n /* \"./src/contracts/xcert.sol\":6685:6753 tokenOwner == msg.sender || ownerToOperators[tokenOwner][msg.sender] */\n tag_313:\n /* \"./src/contracts/xcert.sol\":6761:6782 NOT_OWNER_OR_OPERATOR */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x06\n dup2\n mstore\n 0x20\n add\n shl(0xd2, 0x0c0c0dcc0c0d)\n dup2\n mstore\n pop\n /* \"./src/contracts/xcert.sol\":6670:6788 require(... */\n swap1\n tag_314\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_314:\n pop\n pop\n /* \"./src/contracts/xcert.sol\":6801:6822 idToImprint[_tokenId] */\n 0x00\n swap1\n dup2\n mstore\n /* \"./src/contracts/xcert.sol\":6801:6812 idToImprint */\n 0x0f\n /* \"./src/contracts/xcert.sol\":6801:6822 idToImprint[_tokenId] */\n 0x20\n mstore\n 0x40\n dup2\n keccak256\n /* \"./src/contracts/xcert.sol\":6794:6822 delete idToImprint[_tokenId] */\n sstore\n /* \"./src/contracts/xcert.sol\":6460:6827 function destroy(... */\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7978:8188 */\n tag_151:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8090:8100 */\n caller\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8073:8101 */\n 0x00\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8073:8089 */\n 0x0b\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8073:8101 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8073:8112 */\n dup8\n and\n dup1\n dup6\n mstore\n swap3\n mstore\n swap2\n dup3\n swap1\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8073:8124 */\n dup1\n sload\n not(0xff)\n and\n dup6\n iszero\n iszero\n or\n swap1\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8135:8183 */\n swap1\n mload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8073:8112 */\n swap1\n swap2\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8090:8100 */\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8135:8183 */\n 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31\n swap1\n tag_317\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8073:8124 */\n dup6\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":8135:8183 */\n jump(tag_51)\n tag_317:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":7978:8188 */\n pop\n pop\n jump\t// out\n /* \"./src/contracts/xcert.sol\":4529:4726 function create(... */\n tag_155:\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2475:2488 */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n dup3\n mstore\n 0x06\n dup1\n dup3\n mstore\n shl(0xd1, 0x18189b981819)\n 0x20\n swap3\n dup4\n add\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2527:2537 */\n caller\n 0x00\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2526 */\n 0x0c\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n dup4\n mstore\n dup4\n swap1\n keccak256\n sload\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2573:2587 */\n dup4\n mload\n dup1\n dup6\n add\n swap1\n swap5\n mstore\n swap1\n dup4\n mstore\n shl(0xd0, 0x303137303031)\n swap2\n dup4\n add\n swap2\n swap1\n swap2\n mstore\n /* \"./src/contracts/xcert.sol\":747:749 16 */\n 0x10\n swap2\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2573:2587 */\n swap1\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2551 */\n dup3\n and\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2565 */\n dup3\n eq\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2495:2593 */\n tag_321\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_321:\n pop\n /* \"./src/contracts/xcert.sol\":4665:4688 super._create(_to, _id) */\n tag_324\n /* \"./src/contracts/xcert.sol\":4679:4682 _to */\n dup5\n /* \"./src/contracts/xcert.sol\":4684:4687 _id */\n dup5\n /* \"./src/contracts/xcert.sol\":4665:4678 super._create */\n tag_325\n /* \"./src/contracts/xcert.sol\":4665:4688 super._create(_to, _id) */\n jump\t// in\n tag_324:\n pop\n /* \"./src/contracts/xcert.sol\":4694:4710 idToImprint[_id] */\n 0x00\n swap2\n dup3\n mstore\n /* \"./src/contracts/xcert.sol\":4694:4705 idToImprint */\n 0x0f\n /* \"./src/contracts/xcert.sol\":4694:4710 idToImprint[_id] */\n 0x20\n mstore\n 0x40\n swap1\n swap2\n keccak256\n /* \"./src/contracts/xcert.sol\":4694:4721 idToImprint[_id] = _imprint */\n sstore\n pop\n /* \"./src/contracts/xcert.sol\":4529:4726 function create(... */\n jump\t// out\n /* \"./src/contracts/xcert.sol\":4041:4061 bool public isPaused */\n tag_157:\n and(0xff, sload(0x11))\n dup2\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":5470:5656 */\n tag_162:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":5605:5651 */\n tag_279\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":5623:5628 */\n dup6\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":5630:5633 */\n dup6\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":5635:5643 */\n dup6\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":5645:5650 */\n dup6\n dup6\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":5605:5651 */\n dup1\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap4\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup4\n dup4\n /* \"--CODEGEN--\":30:33 */\n dup1\n /* \"--CODEGEN--\":22:28 */\n dup3\n /* \"--CODEGEN--\":14:20 */\n dup5\n /* \"--CODEGEN--\":1:34 */\n calldatacopy\n /* \"--CODEGEN--\":99:100 */\n 0x00\n /* \"--CODEGEN--\":81:97 */\n swap3\n add\n /* \"--CODEGEN--\":74:101 */\n swap2\n swap1\n swap2\n mstore\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":5605:5622 */\n tag_236\n swap3\n pop\n pop\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":5605:5651 */\n jump\t// in\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4376:4600 */\n tag_165:\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4476:4480 */\n 0x00\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4511:4512 */\n dup1\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4498:4508 */\n dup3\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4498:4512 */\n gt\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4514:4527 */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x06\n dup2\n mstore\n 0x20\n add\n shl(0xd1, 0x18189b981819)\n dup2\n mstore\n pop\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4490:4528 */\n swap1\n tag_329\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_329:\n pop\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4542:4567 */\n swap2\n swap1\n swap2\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4542:4558 */\n 0x0c\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4542:4567 */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4542:4580 */\n dup2\n and\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4541:4595 */\n eq\n swap1\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":4376:4600 */\n jump\t// out\n /* \"./src/contracts/xcert.sol\":5933:6297 function updateTokenImprint(... */\n tag_170:\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2475:2488 */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n dup3\n mstore\n 0x06\n dup1\n dup3\n mstore\n shl(0xd1, 0x18189b981819)\n 0x20\n swap3\n dup4\n add\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2527:2537 */\n caller\n 0x00\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2526 */\n 0x0c\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n dup4\n mstore\n dup4\n swap1\n keccak256\n sload\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2573:2587 */\n dup4\n mload\n dup1\n dup6\n add\n swap1\n swap5\n mstore\n swap1\n dup4\n mstore\n shl(0xd0, 0x303137303031)\n swap2\n dup4\n add\n swap2\n swap1\n swap2\n mstore\n /* \"./src/contracts/xcert.sol\":891:894 128 */\n 0x80\n swap2\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2573:2587 */\n swap1\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2551 */\n dup3\n and\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2565 */\n dup3\n eq\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2495:2593 */\n tag_334\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_334:\n pop\n shl(0xe1, 0x5ed07429)\n /* \"./src/contracts/xcert.sol\":6085:6104 supportedInterfaces */\n 0x00\n /* \"./src/contracts/xcert.sol\":6085:6113 supportedInterfaces[MUTABLE] */\n swap1\n dup2\n mstore\n 0x20\n swap1\n dup2\n mstore\n sload(0xe688ff95abb2e9195893e3ac8827bcb2762ff8ab6e1829afcc7af86b6b3bd239)\n 0x40\n /* \"./src/contracts/xcert.sol\":6115:6139 CAPABILITY_NOT_SUPPORTED */\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x06\n dup2\n mstore\n shl(0xd0, 0x303037303031)\n swap3\n dup2\n add\n swap3\n swap1\n swap3\n mstore\n /* \"./src/contracts/xcert.sol\":6085:6113 supportedInterfaces[MUTABLE] */\n 0xff\n and\n /* \"./src/contracts/xcert.sol\":6077:6140 require(supportedInterfaces[MUTABLE], CAPABILITY_NOT_SUPPORTED) */\n tag_337\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_337:\n pop\n /* \"./src/contracts/xcert.sol\":6185:6186 0 */\n 0x00\n /* \"./src/contracts/xcert.sol\":6154:6173 idToOwner[_tokenId] */\n dup4\n dup2\n mstore\n /* \"./src/contracts/xcert.sol\":6154:6163 idToOwner */\n 0x09\n /* \"./src/contracts/xcert.sol\":6154:6173 idToOwner[_tokenId] */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n swap2\n dup3\n swap1\n keccak256\n sload\n /* \"./src/contracts/xcert.sol\":6189:6204 NOT_VALID_XCERT */\n dup3\n mload\n dup1\n dup5\n add\n swap1\n swap4\n mstore\n 0x06\n dup4\n mstore\n shl(0xd0, 0x303037303033)\n swap2\n dup4\n add\n swap2\n swap1\n swap2\n mstore\n sub(shl(0xa0, 0x01), 0x01)\n /* \"./src/contracts/xcert.sol\":6154:6173 idToOwner[_tokenId] */\n and\n /* \"./src/contracts/xcert.sol\":6146:6205 require(idToOwner[_tokenId] != address(0), NOT_VALID_XCERT) */\n tag_339\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_339:\n pop\n /* \"./src/contracts/xcert.sol\":6211:6232 idToImprint[_tokenId] */\n 0x00\n dup4\n dup2\n mstore\n /* \"./src/contracts/xcert.sol\":6211:6222 idToImprint */\n 0x0f\n /* \"./src/contracts/xcert.sol\":6211:6232 idToImprint[_tokenId] */\n 0x20\n mstore\n 0x40\n swap1\n dup2\n swap1\n keccak256\n /* \"./src/contracts/xcert.sol\":6211:6243 idToImprint[_tokenId] = _imprint */\n dup4\n swap1\n sstore\n /* \"./src/contracts/xcert.sol\":6254:6292 TokenImprintUpdate(_tokenId, _imprint) */\n mload\n /* \"./src/contracts/xcert.sol\":6223:6231 _tokenId */\n dup4\n swap1\n /* \"./src/contracts/xcert.sol\":6254:6292 TokenImprintUpdate(_tokenId, _imprint) */\n 0xba32aa36aaa193aeb79242c133083dec069f5b402cafe1740c9fae59a1a4cedb\n swap1\n tag_341\n swap1\n /* \"./src/contracts/xcert.sol\":6235:6243 _imprint */\n dup6\n swap1\n /* \"./src/contracts/xcert.sol\":6254:6292 TokenImprintUpdate(_tokenId, _imprint) */\n jump(tag_59)\n tag_341:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"./src/contracts/xcert.sol\":5933:6297 function updateTokenImprint(... */\n pop\n pop\n pop\n jump\t// out\n /* \"./src/contracts/xcert.sol\":5581:5812 function setPause(... */\n tag_174:\n /* \"./src/contracts/xcert.sol\":839:841 64 */\n 0x40\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2475:2488 */\n dup1\n mload\n dup1\n dup3\n add\n dup3\n mstore\n 0x06\n dup1\n dup3\n mstore\n shl(0xd1, 0x18189b981819)\n 0x20\n swap3\n dup4\n add\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2527:2537 */\n caller\n 0x00\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2526 */\n 0x0c\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n dup4\n mstore\n dup4\n swap1\n keccak256\n sload\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2573:2587 */\n dup4\n mload\n dup1\n dup6\n add\n dup6\n mstore\n swap2\n dup3\n mstore\n shl(0xd0, 0x303137303031)\n swap3\n dup3\n add\n swap3\n swap1\n swap3\n mstore\n swap1\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2551 */\n dup3\n and\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2565 */\n dup3\n eq\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2495:2593 */\n tag_345\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_345:\n pop\n shl(0xe0, 0xbedb86fb)\n /* \"./src/contracts/xcert.sol\":5695:5714 supportedInterfaces */\n 0x00\n /* \"./src/contracts/xcert.sol\":5695:5724 supportedInterfaces[PAUSABLE] */\n swap1\n dup2\n mstore\n 0x20\n swap1\n dup2\n mstore\n sload(0x7ce77c7e88ab598a61cf35ed6b2db755d687a852164358790f2ba8d2b1dc952d)\n 0x40\n /* \"./src/contracts/xcert.sol\":5726:5750 CAPABILITY_NOT_SUPPORTED */\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x06\n dup2\n mstore\n shl(0xd0, 0x303037303031)\n swap3\n dup2\n add\n swap3\n swap1\n swap3\n mstore\n /* \"./src/contracts/xcert.sol\":5695:5724 supportedInterfaces[PAUSABLE] */\n 0xff\n and\n /* \"./src/contracts/xcert.sol\":5687:5751 require(supportedInterfaces[PAUSABLE], CAPABILITY_NOT_SUPPORTED) */\n tag_348\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_348:\n pop\n /* \"./src/contracts/xcert.sol\":5757:5765 isPaused */\n 0x11\n /* \"./src/contracts/xcert.sol\":5757:5777 isPaused = _isPaused */\n dup1\n sload\n not(0xff)\n and\n dup4\n iszero\n iszero\n or\n swap1\n sstore\n /* \"./src/contracts/xcert.sol\":5788:5807 IsPaused(_isPaused) */\n mload(0x40)\n 0xff4a5dbbab6b1963d10f5edd139f33a7987ecb3c4f65969be77ddba28d946594\n swap1\n tag_350\n swap1\n /* \"./src/contracts/xcert.sol\":5757:5777 isPaused = _isPaused */\n dup5\n swap1\n /* \"./src/contracts/xcert.sol\":5788:5807 IsPaused(_isPaused) */\n jump(tag_51)\n tag_350:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"./src/contracts/xcert.sol\":5581:5812 function setPause(... */\n pop\n pop\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":1682:1706 */\n tag_176:\n 0x04\n dup1\n sload\n 0x40\n dup1\n mload\n 0x20\n 0x02\n 0x01\n dup6\n and\n iszero\n 0x0100\n mul\n not(0x00)\n add\n swap1\n swap5\n and\n swap4\n swap1\n swap4\n div\n 0x1f\n dup2\n add\n dup5\n swap1\n div\n dup5\n mul\n dup3\n add\n dup5\n add\n swap1\n swap3\n mstore\n dup2\n dup2\n mstore\n swap3\n swap2\n dup4\n add\n dup3\n dup3\n dup1\n iszero\n tag_260\n jumpi\n dup1\n 0x1f\n lt\n tag_261\n jumpi\n 0x0100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_260)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11683:12123 */\n tag_180:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11824:11825 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11793:11812 */\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11793:11802 */\n 0x09\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11793:11812 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n swap2\n dup3\n swap1\n keccak256\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11828:11841 */\n dup3\n mload\n dup1\n dup5\n add\n swap1\n swap4\n mstore\n 0x06\n dup4\n mstore\n shl(0xd1, 0x18181b181819)\n swap2\n dup4\n add\n swap2\n swap1\n swap2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11762:11775 */\n 0x60\n swap2\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11828:11841 */\n swap1\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11793:11812 */\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11785:11842 */\n tag_355\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_355:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11848:11870 */\n 0x40\n dup1\n mload\n 0x20\n dup2\n add\n swap1\n swap2\n mstore\n 0x00\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11886:11895 */\n 0x03\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11880:11903 */\n sload\n 0x02\n not(0x00)\n 0x0100\n 0x01\n dup5\n and\n iszero\n mul\n add\n swap1\n swap2\n and\n div\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11880:11907 */\n iszero\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11876:12103 */\n tag_229\n jumpi\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11951:11960 */\n 0x03\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11962:11981 */\n tag_358\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11972:11980 */\n dup5\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11962:11971 */\n tag_359\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11962:11981 */\n jump\t// in\n tag_358:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11934:11982 */\n add(0x20, mload(0x40))\n tag_360\n swap3\n swap2\n swap1\n jump(tag_361)\n tag_360:\n 0x40\n dup1\n mload\n not(0x1f)\n /* \"--CODEGEN--\":26:47 */\n dup2\n dup5\n sub\n /* \"--CODEGEN--\":22:54 */\n add\n /* \"--CODEGEN--\":6:55 */\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11934:11982 */\n swap2\n swap1\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":12001:12011 */\n 0x04\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11995:12019 */\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11934:11982 */\n swap1\n swap2\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11995:12019 */\n 0x02\n not(0x00)\n 0x0100\n 0x01\n dup5\n and\n iszero\n mul\n add\n swap1\n swap2\n and\n div\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11995:12023 */\n iszero\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11991:12097 */\n tag_229\n jumpi\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":12071:12074 */\n dup1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":12076:12086 */\n 0x04\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":12054:12087 */\n add(0x20, mload(0x40))\n tag_363\n swap3\n swap2\n swap1\n jump(tag_364)\n tag_363:\n mload(0x40)\n /* \"--CODEGEN--\":49:53 */\n 0x20\n /* \"--CODEGEN--\":39:46 */\n dup2\n /* \"--CODEGEN--\":30:37 */\n dup4\n /* \"--CODEGEN--\":26:47 */\n sub\n /* \"--CODEGEN--\":22:54 */\n sub\n /* \"--CODEGEN--\":13:20 */\n dup2\n /* \"--CODEGEN--\":6:55 */\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":12054:12087 */\n swap1\n 0x40\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":12041:12088 */\n swap1\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":12115:12118 */\n swap3\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":11683:12123 */\n swap2\n pop\n pop\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9785:9954 */\n tag_185:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9914:9938 */\n swap2\n dup3\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9893:9897 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9914:9938 */\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9914:9930 */\n 0x0b\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9914:9938 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9914:9949 */\n swap4\n swap1\n swap5\n and\n dup3\n mstore\n swap2\n swap1\n swap2\n mstore\n keccak256\n sload\n 0xff\n and\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":9785:9954 */\n jump\t// out\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3452:3683 */\n tag_189:\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2475:2488 */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n dup3\n mstore\n 0x06\n dup1\n dup3\n mstore\n shl(0xd1, 0x18189b981819)\n 0x20\n swap3\n dup4\n add\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2527:2537 */\n caller\n 0x00\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2526 */\n 0x0c\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2538 */\n dup4\n mstore\n dup4\n swap1\n keccak256\n sload\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2573:2587 */\n dup4\n mload\n dup1\n dup6\n add\n swap1\n swap5\n mstore\n swap1\n dup4\n mstore\n shl(0xd0, 0x303137303031)\n swap2\n dup4\n add\n swap2\n swap1\n swap2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":1190:1191 */\n 0x01\n swap2\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2573:2587 */\n swap1\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2551 */\n dup3\n and\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2510:2565 */\n dup3\n eq\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":2495:2593 */\n tag_369\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_369:\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3579:3604 */\n dup4\n and\n 0x00\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3579:3595 */\n 0x0c\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3579:3604 */\n 0x20\n mstore\n 0x40\n dup1\n dup3\n keccak256\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3579:3619 */\n dup1\n sload\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3608:3619 */\n dup7\n not\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3579:3619 */\n and\n swap1\n dup2\n swap1\n sstore\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3630:3678 */\n swap1\n mload\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3579:3619 */\n swap1\n swap3\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3579:3604 */\n swap2\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3630:3678 */\n 0xd1d59d2d212a435434e7a4a4676427610dfe2b6268b01e541d280d65bf3d6b90\n swap2\n log3\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol\":3452:3683 */\n pop\n pop\n pop\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13856:15131 */\n tag_225:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13938:13952 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13955:13974 */\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13955:13964 */\n 0x09\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13955:13974 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n swap2\n dup3\n swap1\n keccak256\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14010:14023 */\n dup3\n mload\n dup1\n dup5\n add\n swap1\n swap4\n mstore\n 0x06\n dup4\n mstore\n shl(0xd1, 0x18181b181819)\n swap2\n dup4\n add\n swap2\n swap1\n swap2\n mstore\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13955:13974 */\n and\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13988:14008 */\n dup2\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13980:14024 */\n tag_373\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_373:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14091:14092 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14057:14079 */\n dup3\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14057:14069 */\n 0x0a\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14057:14079 */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n sub(shl(0xa0, 0x01), 0x01)\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14057:14093 */\n iszero\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14053:14143 */\n tag_375\n jumpi\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14114:14136 */\n 0x00\n dup3\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14114:14126 */\n 0x0a\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14114:14136 */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14107:14136 */\n dup1\n sload\n not(sub(shl(0xa0, 0x01), 0x01))\n and\n swap1\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14053:14143 */\n tag_375:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14174:14192 */\n dup2\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14202:14203 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14174:14192 */\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14174:14184 */\n 0x07\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14174:14192 */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14174:14199 */\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14167:14204 */\n tag_376\n jumpi\n invalid\n tag_376:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14211:14237 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14240:14264 */\n dup3\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14240:14254 */\n 0x08\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14240:14264 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n sload\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14295:14313 */\n dup6\n and\n dup5\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14295:14305 */\n 0x07\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14295:14313 */\n swap1\n swap3\n mstore\n dup3\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14295:14320 */\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14240:14264 */\n swap1\n swap2\n not(0x00)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14295:14324 */\n swap1\n swap2\n add\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14357:14393 */\n dup2\n dup4\n eq\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14353:14572 */\n tag_377\n jumpi\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14419:14437 */\n dup5\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14419:14429 */\n 0x07\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14419:14437 */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14419:14453 */\n dup1\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14438:14452 */\n dup4\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14419:14453 */\n dup2\n lt\n tag_378\n jumpi\n invalid\n tag_378:\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14407:14453 */\n swap1\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14502:14511 */\n dup1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14461:14471 */\n 0x07\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14461:14479 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14472:14478 */\n dup7\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14461:14479 */\n and\n sub(shl(0xa0, 0x01), 0x01)\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14480:14498 */\n dup5\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14461:14499 */\n dup2\n sload\n dup2\n lt\n tag_380\n jumpi\n invalid\n tag_380:\n 0x00\n swap2\n dup3\n mstore\n 0x20\n dup1\n dup4\n keccak256\n swap1\n swap2\n add\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14461:14511 */\n swap3\n swap1\n swap3\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14519:14544 */\n dup3\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14519:14533 */\n 0x08\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14519:14544 */\n swap1\n swap2\n mstore\n 0x40\n swap1\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14519:14565 */\n dup4\n swap1\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14353:14572 */\n tag_377:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14585:14604 */\n 0x00\n dup6\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14585:14594 */\n 0x09\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14585:14604 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14578:14604 */\n dup1\n sload\n not(sub(shl(0xa0, 0x01), 0x01))\n and\n swap1\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14617:14631 */\n 0x08\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14617:14641 */\n dup3\n mstore\n dup1\n dup4\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14610:14641 */\n dup4\n swap1\n sstore\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14647:14665 */\n dup8\n and\n dup4\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14647:14657 */\n 0x07\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14647:14665 */\n swap1\n swap2\n mstore\n swap1\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14647:14674 */\n dup1\n sload\n swap1\n tag_382\n swap1\n not(0x00)\n dup4\n add\n tag_383\n jump\t// in\n tag_382:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14720:14726 */\n 0x05\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14720:14733 */\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14713:14738 */\n tag_384\n jumpi\n invalid\n tag_384:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14745:14763 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14766:14785 */\n dup6\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14766:14775 */\n 0x06\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14766:14785 */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14808:14814 */\n 0x05\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14808:14821 */\n dup1\n sload\n not(0x00)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14808:14825 */\n dup2\n add\n swap5\n pop\n dup5\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14843:14865 */\n dup2\n lt\n tag_385\n jumpi\n invalid\n tag_385:\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14831:14865 */\n swap2\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14893:14902 */\n dup2\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14872:14878 */\n 0x05\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14879:14889 */\n dup3\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14872:14890 */\n dup2\n sload\n dup2\n lt\n tag_387\n jumpi\n invalid\n tag_387:\n 0x00\n swap2\n dup3\n mstore\n 0x20\n swap1\n swap2\n keccak256\n add\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14872:14902 */\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14909:14915 */\n 0x05\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":14909:14924 */\n dup1\n sload\n swap1\n tag_389\n swap1\n not(0x00)\n dup4\n add\n tag_383\n jump\t// in\n tag_389:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15014:15034 */\n 0x00\n dup3\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15014:15023 */\n 0x06\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15014:15034 */\n 0x20\n mstore\n 0x40\n dup1\n dup3\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15014:15047 */\n dup4\n swap1\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15053:15072 */\n dup8\n dup3\n mstore\n dup1\n dup3\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15053:15076 */\n dup3\n swap1\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15088:15126 */\n mload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15063:15071 */\n dup8\n swap2\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15014:15034 */\n swap1\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15088:15126 */\n dup9\n and\n swap1\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15014:15034 */\n dup4\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15088:15126 */\n log4\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13856:15131 */\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"./src/contracts/xcert.sol\":11477:12138 function _transferFrom(... */\n tag_228:\n /* \"./src/contracts/xcert.sol\":12057:12065 isPaused */\n sload(0x11)\n /* \"./src/contracts/xcert.sol\":12067:12085 TRANSFERS_DISABLED */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x06\n dup2\n mstore\n shl(0xd1, 0x18181b981819)\n 0x20\n dup3\n add\n mstore\n swap1\n /* \"./src/contracts/xcert.sol\":12057:12065 isPaused */\n 0xff\n and\n /* \"./src/contracts/xcert.sol\":12056:12065 !isPaused */\n iszero\n /* \"./src/contracts/xcert.sol\":12048:12086 require(!isPaused, TRANSFERS_DISABLED) */\n tag_391\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_391:\n pop\n /* \"./src/contracts/xcert.sol\":12092:12133 super._transferFrom(_from, _to, _tokenId) */\n tag_227\n /* \"./src/contracts/xcert.sol\":12112:12117 _from */\n dup4\n /* \"./src/contracts/xcert.sol\":12119:12122 _to */\n dup4\n /* \"./src/contracts/xcert.sol\":12124:12132 _tokenId */\n dup4\n /* \"./src/contracts/xcert.sol\":12092:12111 super._transferFrom */\n tag_394\n /* \"./src/contracts/xcert.sol\":12092:12133 super._transferFrom(_from, _to, _tokenId) */\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16826:17221 */\n tag_236:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16964:16980 */\n tag_396\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16964:16967 */\n dup4\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16964:16978 */\n and\n tag_397\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16964:16980 */\n jump\t// in\n tag_396:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16960:17175 */\n iszero\n tag_398\n jumpi\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17011:17099 */\n mload(0x40)\n shl(0xe1, 0x0a85bd01)\n dup1\n dup3\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17103:17127 */\n swap1\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17011:17063 */\n dup6\n and\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":1263:1273 */\n 0x150b7a02\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17011:17099 */\n tag_399\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17064:17074 */\n caller\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17076:17081 */\n dup10\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17083:17091 */\n dup9\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17093:17098 */\n dup9\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17011:17099 */\n 0x04\n add\n jump(tag_400)\n tag_399:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_401\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x00\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_401:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17011:17099 */\n pop\n gas\n call\n iszero\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_402\n jumpi\n /* \"--CODEGEN--\":45:61 */\n returndatasize\n /* \"--CODEGEN--\":42:43 */\n 0x00\n /* \"--CODEGEN--\":39:40 */\n dup1\n /* \"--CODEGEN--\":24:62 */\n returndatacopy\n /* \"--CODEGEN--\":77:93 */\n returndatasize\n /* \"--CODEGEN--\":74:75 */\n 0x00\n /* \"--CODEGEN--\":67:94 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_402:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17011:17099 */\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n /* \"--CODEGEN--\":101:105 */\n 0x1f\n /* \"--CODEGEN--\":97:106 */\n not\n /* \"--CODEGEN--\":90:94 */\n 0x1f\n /* \"--CODEGEN--\":84:88 */\n dup3\n /* \"--CODEGEN--\":80:95 */\n add\n /* \"--CODEGEN--\":76:107 */\n and\n /* \"--CODEGEN--\":69:74 */\n dup3\n /* \"--CODEGEN--\":65:108 */\n add\n /* \"--CODEGEN--\":126:132 */\n dup1\n /* \"--CODEGEN--\":120:124 */\n 0x40\n /* \"--CODEGEN--\":113:133 */\n mstore\n /* \"--CODEGEN--\":0:138 */\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17011:17099 */\n tag_403\n swap2\n swap1\n dup2\n add\n swap1\n jump(tag_404)\n tag_403:\n sub(shl(0xe0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17011:17127 */\n not\n and\n eq\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17137:17160 */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x06\n dup2\n mstore\n 0x20\n add\n shl(0xd0, 0x303036303035)\n dup2\n mstore\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16994:17168 */\n swap1\n tag_405\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_405:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16960:17175 */\n tag_398:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17181:17216 */\n tag_407\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17195:17200 */\n dup5\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17202:17205 */\n dup5\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17207:17215 */\n dup5\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17181:17194 */\n tag_228\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17181:17216 */\n jump\t// in\n tag_407:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16826:17221 */\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":12532:12680 */\n tag_280:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":12629:12648 */\n dup2\n mload\n tag_409\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":12629:12638 */\n 0x03\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":12629:12648 */\n 0x20\n dup6\n add\n swap1\n tag_410\n jump\t// in\n tag_409:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":12654:12675 */\n dup1\n mload\n tag_227\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":12654:12664 */\n 0x04\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":12654:12675 */\n 0x20\n dup5\n add\n swap1\n tag_410\n jump\t// in\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13058:13545 */\n tag_325:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13166:13178 */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x06\n dup2\n mstore\n shl(0xd0, 0x303036303031)\n 0x20\n dup3\n add\n mstore\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13147:13164 */\n dup4\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13139:13179 */\n tag_413\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_413:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13224:13225 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13193:13212 */\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13193:13202 */\n 0x09\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13193:13212 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n swap2\n dup3\n swap1\n keccak256\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13228:13246 */\n dup3\n mload\n dup1\n dup5\n add\n swap1\n swap4\n mstore\n 0x06\n dup4\n mstore\n shl(0xd1, 0x18181b18181b)\n swap2\n dup4\n add\n swap2\n swap1\n swap2\n mstore\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13193:13212 */\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13193:13226 */\n iszero\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13185:13247 */\n tag_415\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_415:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13269:13288 */\n 0x00\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13269:13278 */\n 0x09\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13269:13288 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13269:13294 */\n dup1\n sload\n not(sub(shl(0xa0, 0x01), 0x01))\n and\n sub(shl(0xa0, 0x01), 0x01)\n dup8\n and\n swap1\n dup2\n or\n swap1\n swap2\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13318:13333 */\n dup1\n dup5\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13318:13328 */\n 0x07\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13318:13333 */\n dup4\n mstore\n dup2\n dup5\n keccak256\n /* \"--CODEGEN--\":27:37 */\n dup1\n sload\n 0x01\n /* \"--CODEGEN--\":23:41 */\n dup2\n dup2\n add\n /* \"--CODEGEN--\":45:68 */\n dup4\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13318:13348 */\n swap2\n dup7\n mstore\n dup5\n dup7\n keccak256\n dup2\n add\n dup8\n swap1\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13354:13378 */\n dup7\n dup7\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13354:13368 */\n 0x08\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13354:13378 */\n dup6\n mstore\n dup4\n dup7\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13354:13391 */\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13434:13440 */\n 0x05\n /* \"--CODEGEN--\":27:37 */\n dup1\n sload\n /* \"--CODEGEN--\":23:41 */\n swap2\n dup3\n add\n /* \"--CODEGEN--\":45:68 */\n swap1\n dup2\n swap1\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13434:13455 */\n 0x036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0\n dup3\n add\n dup8\n swap1\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13461:13470 */\n 0x06\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13461:13480 */\n swap1\n swap5\n mstore\n dup3\n dup6\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13461:13493 */\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13505:13540 */\n swap1\n mload\n /* \"--CODEGEN--\":23:41 */\n swap2\n swap3\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13269:13288 */\n dup5\n swap3\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13505:13540 */\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13269:13288 */\n dup3\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13505:13540 */\n log4\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":13058:13545 */\n pop\n pop\n pop\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17343:17790 */\n tag_359:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17418:17435 */\n 0x60\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17449:17456 */\n dup2\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17445:17487 */\n tag_420\n jumpi\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17470:17480 */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x01\n dup2\n mstore\n shl(0xfc, 0x03)\n 0x20\n dup3\n add\n mstore\n jump(tag_190)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17445:17487 */\n tag_420:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17504:17506 */\n dup2\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17492:17501 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17532:17589 */\n tag_421:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17539:17545 */\n dup2\n iszero\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17532:17589 */\n tag_422\n jumpi\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17559:17567 */\n 0x01\n add\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17580:17582 */\n 0x0a\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17575:17582 */\n dup3\n div\n swap2\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17532:17589 */\n jump(tag_421)\n tag_422:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17594:17611 */\n 0x60\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17624:17630 */\n dup2\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17614:17631 */\n mload(0x40)\n swap1\n dup1\n dup3\n mstore\n dup1\n 0x1f\n add\n not(0x1f)\n and\n 0x20\n add\n dup3\n add\n 0x40\n mstore\n dup1\n iszero\n tag_424\n jumpi\n 0x20\n dup3\n add\n /* \"--CODEGEN--\":21:27 */\n dup2\n dup1\n /* \"--CODEGEN--\":104:114 */\n codesize\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17614:17631 */\n dup4\n /* \"--CODEGEN--\":87:121 */\n codecopy\n /* \"--CODEGEN--\":135:152 */\n add\n swap1\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17614:17631 */\n tag_424:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17669:17671 */\n dup6\n swap4\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17594:17631 */\n swap1\n pop\n not(0x00)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17649:17659 */\n dup3\n add\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17677:17762 */\n tag_425:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17684:17690 */\n dup4\n iszero\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17677:17762 */\n tag_426\n jumpi\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17736:17738 */\n 0x0a\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17732:17733 */\n dup5\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17732:17738 */\n mod\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17727:17729 */\n 0x30\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17727:17738 */\n add\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17716:17740 */\n 0xf8\n shl\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17704:17708 */\n dup3\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17709:17712 */\n dup3\n dup1\n 0x01\n swap1\n sub\n swap4\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17704:17713 */\n dup2\n mload\n dup2\n lt\n tag_428\n jumpi\n invalid\n tag_428:\n 0x20\n add\n add\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17704:17740 */\n swap1\n not(sub(shl(0xf8, 0x01), 0x01))\n and\n swap1\n dup2\n 0x00\n byte\n swap1\n mstore8\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17753:17755 */\n 0x0a\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17748:17755 */\n dup5\n div\n swap4\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17677:17762 */\n jump(tag_425)\n tag_426:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17780:17784 */\n swap5\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":17343:17790 */\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15326:16543 */\n tag_394:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15478:15490 */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x06\n dup2\n mstore\n shl(0xd0, 0x303036303031)\n 0x20\n dup3\n add\n mstore\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15457:15476 */\n dup5\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15449:15491 */\n tag_431\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_431:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15505:15524 */\n 0x00\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15505:15514 */\n 0x09\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15505:15524 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n swap2\n dup3\n swap1\n keccak256\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15535:15548 */\n dup3\n mload\n dup1\n dup5\n add\n swap1\n swap4\n mstore\n 0x06\n dup4\n mstore\n shl(0xd1, 0x18181b181819)\n swap2\n dup4\n add\n swap2\n swap1\n swap2\n mstore\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15505:15533 */\n dup6\n dup2\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15505:15524 */\n swap2\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15505:15533 */\n eq\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15497:15549 */\n tag_433\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_433:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15582:15594 */\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x06\n dup2\n mstore\n shl(0xd0, 0x303036303031)\n 0x20\n dup3\n add\n mstore\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15563:15580 */\n dup4\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15555:15595 */\n tag_435\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_435:\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15637:15656 */\n dup4\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15646:15656 */\n caller\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15637:15656 */\n eq\n dup1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15637:15702 */\n tag_437\n jumpi\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15666:15688 */\n 0x00\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15666:15678 */\n 0x0a\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15666:15688 */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n sub(shl(0xa0, 0x01), 0x01)\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15692:15702 */\n caller\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15666:15702 */\n eq\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15637:15702 */\n tag_437:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15637:15747 */\n dup1\n tag_438\n jumpi\n pop\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15712:15735 */\n dup4\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15712:15728 */\n 0x0b\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15712:15735 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15736:15746 */\n caller\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15712:15747 */\n dup5\n mstore\n swap1\n swap2\n mstore\n swap1\n keccak256\n sload\n 0xff\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15637:15747 */\n tag_438:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15755:15785 */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x06\n dup2\n mstore\n 0x20\n add\n shl(0xd2, 0x0c0c0d8c0c0d)\n dup2\n mstore\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15622:15791 */\n swap1\n tag_439\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n 0x04\n add\n tag_198\n swap2\n swap1\n jump(tag_115)\n tag_439:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15858:15859 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15824:15846 */\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15824:15836 */\n 0x0a\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15824:15846 */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n sload\n sub(shl(0xa0, 0x01), 0x01)\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15824:15860 */\n iszero\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15820:15910 */\n tag_441\n jumpi\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15881:15903 */\n 0x00\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15881:15893 */\n 0x0a\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15881:15903 */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15874:15903 */\n dup1\n sload\n not(sub(shl(0xa0, 0x01), 0x01))\n and\n swap1\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15820:15910 */\n tag_441:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15941:15958 */\n dup4\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15968:15969 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15941:15958 */\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15941:15951 */\n 0x07\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15941:15958 */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15941:15965 */\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15934:15970 */\n tag_442\n jumpi\n invalid\n tag_442:\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15977:16003 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16006:16030 */\n dup2\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16006:16020 */\n 0x08\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16006:16030 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n sload\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16061:16078 */\n dup8\n and\n dup5\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16061:16071 */\n 0x07\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16061:16078 */\n swap1\n swap3\n mstore\n swap1\n swap2\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16061:16085 */\n sload\n not(0x00)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16061:16089 */\n add\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16100:16136 */\n dup1\n dup3\n eq\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16096:16321 */\n tag_443\n jumpi\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16170:16187 */\n dup6\n and\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16150:16167 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16170:16187 */\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16170:16180 */\n 0x07\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16170:16187 */\n 0x20\n mstore\n 0x40\n dup2\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16170:16203 */\n dup1\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16188:16202 */\n dup4\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16170:16203 */\n dup2\n lt\n tag_444\n jumpi\n invalid\n tag_444:\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n sload\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16150:16203 */\n swap1\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16251:16260 */\n dup1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16211:16221 */\n 0x07\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16211:16228 */\n 0x00\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16222:16227 */\n dup9\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16211:16228 */\n and\n sub(shl(0xa0, 0x01), 0x01)\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16229:16247 */\n dup5\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16211:16248 */\n dup2\n sload\n dup2\n lt\n tag_446\n jumpi\n invalid\n tag_446:\n 0x00\n swap2\n dup3\n mstore\n 0x20\n dup1\n dup4\n keccak256\n swap1\n swap2\n add\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16211:16260 */\n swap3\n swap1\n swap3\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16268:16293 */\n swap2\n dup3\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16268:16282 */\n 0x08\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16268:16293 */\n swap1\n mstore\n 0x40\n swap1\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16268:16314 */\n dup3\n swap1\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16096:16321 */\n tag_443:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16327:16344 */\n dup6\n and\n 0x00\n swap1\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16327:16337 */\n 0x07\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16327:16344 */\n 0x20\n mstore\n 0x40\n swap1\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16327:16353 */\n dup1\n sload\n swap1\n tag_448\n swap1\n not(0x00)\n dup4\n add\n tag_383\n jump\t// in\n tag_448:\n pop\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16375:16394 */\n 0x00\n dup4\n dup2\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16375:16384 */\n 0x09\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16375:16394 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16375:16400 */\n dup1\n sload\n not(sub(shl(0xa0, 0x01), 0x01))\n and\n sub(shl(0xa0, 0x01), 0x01)\n dup10\n dup2\n and\n swap2\n dup3\n or\n swap1\n swap3\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16423:16438 */\n dup1\n dup6\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16423:16433 */\n 0x07\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16423:16438 */\n dup5\n mstore\n dup3\n dup6\n keccak256\n /* \"--CODEGEN--\":27:37 */\n dup1\n sload\n 0x01\n /* \"--CODEGEN--\":23:41 */\n dup2\n add\n /* \"--CODEGEN--\":45:68 */\n dup1\n dup4\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16423:16453 */\n swap2\n dup8\n mstore\n dup6\n dup8\n keccak256\n dup2\n add\n dup11\n swap1\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16459:16483 */\n dup10\n dup8\n mstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16459:16473 */\n 0x08\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16459:16483 */\n swap1\n swap6\n mstore\n dup4\n dup7\n keccak256\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16459:16496 */\n swap5\n swap1\n swap5\n sstore\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16508:16538 */\n swap2\n mload\n /* \"--CODEGEN--\":23:41 */\n swap3\n swap4\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16375:16394 */\n dup8\n swap4\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16508:16538 */\n swap2\n dup11\n and\n swap2\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n swap2\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16375:16394 */\n swap1\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":16508:16538 */\n log4\n /* \"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol\":15326:16543 */\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/address-utils.sol\":422:1203 */\n tag_397:\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/address-utils.sol\":500:517 */\n 0x00\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/address-utils.sol\":1071:1089 */\n dup2\n extcodehash\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/address-utils.sol\":976:1042 */\n 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/address-utils.sol\":1155:1170 */\n dup2\n iszero\n dup1\n iszero\n swap1\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/address-utils.sol\":1155:1197 */\n tag_451\n jumpi\n pop\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/address-utils.sol\":1186:1197 */\n dup1\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/address-utils.sol\":1174:1182 */\n dup3\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/address-utils.sol\":1174:1197 */\n eq\n iszero\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/address-utils.sol\":1155:1197 */\n tag_451:\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/address-utils.sol\":1139:1198 */\n swap5\n /* \"@0xcert/ethereum-utils-contracts/src/contracts/utils/address-utils.sol\":422:1203 */\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"./src/contracts/mocks/xcert-mock.sol\":162:1263 contract XcertMock is XcertToken {... */\n tag_383:\n dup2\n sload\n dup2\n dup4\n sstore\n dup2\n dup2\n gt\n iszero\n tag_227\n jumpi\n 0x00\n dup4\n dup2\n mstore\n 0x20\n swap1\n keccak256\n tag_227\n swap2\n dup2\n add\n swap1\n dup4\n add\n tag_454\n jump\t// in\n tag_410:\n dup3\n dup1\n sload\n 0x01\n dup2\n 0x01\n and\n iszero\n 0x0100\n mul\n sub\n and\n 0x02\n swap1\n div\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n 0x1f\n add\n 0x20\n swap1\n div\n dup2\n add\n swap3\n dup3\n 0x1f\n lt\n tag_456\n jumpi\n dup1\n mload\n not(0xff)\n and\n dup4\n dup1\n add\n or\n dup6\n sstore\n jump(tag_458)\n tag_456:\n dup3\n dup1\n add\n 0x01\n add\n dup6\n sstore\n dup3\n iszero\n tag_458\n jumpi\n swap2\n dup3\n add\n tag_457:\n dup3\n dup2\n gt\n iszero\n tag_458\n jumpi\n dup3\n mload\n dup3\n sstore\n swap2\n 0x20\n add\n swap2\n swap1\n 0x01\n add\n swap1\n jump(tag_457)\n tag_458:\n pop\n tag_459\n swap3\n swap2\n pop\n tag_454\n jump\t// in\n tag_459:\n pop\n swap1\n jump\t// out\n tag_454:\n tag_215\n swap2\n swap1\n tag_461:\n dup1\n dup3\n gt\n iszero\n tag_459\n jumpi\n 0x00\n dup2\n sstore\n 0x01\n add\n jump(tag_461)\n /* \"--CODEGEN--\":5:135 */\n tag_464:\n /* \"--CODEGEN--\":72:92 */\n dup1\n calldataload\n /* \"--CODEGEN--\":97:130 */\n tag_229\n /* \"--CODEGEN--\":72:92 */\n dup2\n /* \"--CODEGEN--\":97:130 */\n jump(tag_466)\n /* \"--CODEGEN--\":142:266 */\n tag_467:\n /* \"--CODEGEN--\":206:226 */\n dup1\n calldataload\n /* \"--CODEGEN--\":231:261 */\n tag_229\n /* \"--CODEGEN--\":206:226 */\n dup2\n /* \"--CODEGEN--\":231:261 */\n jump(tag_469)\n /* \"--CODEGEN--\":273:401 */\n tag_470:\n /* \"--CODEGEN--\":348:361 */\n dup1\n mload\n /* \"--CODEGEN--\":366:396 */\n tag_229\n /* \"--CODEGEN--\":348:361 */\n dup2\n /* \"--CODEGEN--\":366:396 */\n jump(tag_469)\n /* \"--CODEGEN--\":408:538 */\n tag_472:\n /* \"--CODEGEN--\":475:495 */\n dup1\n calldataload\n /* \"--CODEGEN--\":500:533 */\n tag_229\n /* \"--CODEGEN--\":475:495 */\n dup2\n /* \"--CODEGEN--\":500:533 */\n jump(tag_474)\n /* \"--CODEGEN--\":545:673 */\n tag_475:\n /* \"--CODEGEN--\":611:631 */\n dup1\n calldataload\n /* \"--CODEGEN--\":636:668 */\n tag_229\n /* \"--CODEGEN--\":611:631 */\n dup2\n /* \"--CODEGEN--\":636:668 */\n jump(tag_477)\n /* \"--CODEGEN--\":680:812 */\n tag_478:\n /* \"--CODEGEN--\":757:770 */\n dup1\n mload\n /* \"--CODEGEN--\":775:807 */\n tag_229\n /* \"--CODEGEN--\":757:770 */\n dup2\n /* \"--CODEGEN--\":775:807 */\n jump(tag_477)\n /* \"--CODEGEN--\":833:1168 */\n tag_480:\n 0x00\n dup1\n /* \"--CODEGEN--\":947:950 */\n dup4\n /* \"--CODEGEN--\":940:944 */\n 0x1f\n /* \"--CODEGEN--\":932:938 */\n dup5\n /* \"--CODEGEN--\":928:945 */\n add\n /* \"--CODEGEN--\":924:951 */\n slt\n /* \"--CODEGEN--\":914:916 */\n tag_481\n jumpi\n /* \"--CODEGEN--\":965:966 */\n 0x00\n /* \"--CODEGEN--\":962:963 */\n dup1\n /* \"--CODEGEN--\":955:967 */\n revert\n /* \"--CODEGEN--\":914:916 */\n tag_481:\n pop\n /* \"--CODEGEN--\":985:1005 */\n dup2\n calldataload\n /* \"--CODEGEN--\":1025:1043 */\n 0xffffffffffffffff\n /* \"--CODEGEN--\":1014:1044 */\n dup2\n gt\n /* \"--CODEGEN--\":1011:1013 */\n iszero\n tag_482\n jumpi\n /* \"--CODEGEN--\":1057:1058 */\n 0x00\n /* \"--CODEGEN--\":1054:1055 */\n dup1\n /* \"--CODEGEN--\":1047:1059 */\n revert\n /* \"--CODEGEN--\":1011:1013 */\n tag_482:\n /* \"--CODEGEN--\":1091:1095 */\n 0x20\n /* \"--CODEGEN--\":1083:1089 */\n dup4\n /* \"--CODEGEN--\":1079:1096 */\n add\n /* \"--CODEGEN--\":1067:1096 */\n swap2\n pop\n /* \"--CODEGEN--\":1141:1144 */\n dup4\n /* \"--CODEGEN--\":1134:1137 */\n 0x01\n /* \"--CODEGEN--\":1126:1132 */\n dup3\n /* \"--CODEGEN--\":1122:1138 */\n mul\n /* \"--CODEGEN--\":1112:1120 */\n dup4\n /* \"--CODEGEN--\":1108:1139 */\n add\n /* \"--CODEGEN--\":1105:1145 */\n gt\n /* \"--CODEGEN--\":1102:1104 */\n iszero\n tag_483\n jumpi\n /* \"--CODEGEN--\":1158:1159 */\n 0x00\n /* \"--CODEGEN--\":1155:1156 */\n dup1\n /* \"--CODEGEN--\":1148:1160 */\n revert\n /* \"--CODEGEN--\":1102:1104 */\n tag_483:\n /* \"--CODEGEN--\":907:1168 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\n /* \"--CODEGEN--\":1176:1340 */\n tag_484:\n /* \"--CODEGEN--\":1260:1280 */\n dup1\n calldataload\n /* \"--CODEGEN--\":1285:1335 */\n tag_229\n /* \"--CODEGEN--\":1260:1280 */\n dup2\n /* \"--CODEGEN--\":1285:1335 */\n jump(tag_486)\n /* \"--CODEGEN--\":1746:1910 */\n tag_491:\n 0x00\n /* \"--CODEGEN--\":1862:1865 */\n 0x80\n /* \"--CODEGEN--\":1853:1859 */\n dup3\n /* \"--CODEGEN--\":1848:1851 */\n dup5\n /* \"--CODEGEN--\":1844:1860 */\n sub\n /* \"--CODEGEN--\":1840:1866 */\n slt\n /* \"--CODEGEN--\":1837:1839 */\n iszero\n tag_264\n jumpi\n /* \"--CODEGEN--\":1879:1880 */\n 0x00\n /* \"--CODEGEN--\":1876:1877 */\n dup1\n /* \"--CODEGEN--\":1869:1881 */\n revert\n /* \"--CODEGEN--\":1955:2720 */\n tag_493:\n 0x00\n /* \"--CODEGEN--\":2074:2078 */\n 0x80\n /* \"--CODEGEN--\":2062:2071 */\n dup3\n /* \"--CODEGEN--\":2057:2060 */\n dup5\n /* \"--CODEGEN--\":2053:2072 */\n sub\n /* \"--CODEGEN--\":2049:2079 */\n slt\n /* \"--CODEGEN--\":2046:2048 */\n iszero\n tag_494\n jumpi\n /* \"--CODEGEN--\":2092:2093 */\n 0x00\n /* \"--CODEGEN--\":2089:2090 */\n dup1\n /* \"--CODEGEN--\":2082:2094 */\n revert\n /* \"--CODEGEN--\":2046:2048 */\n tag_494:\n /* \"--CODEGEN--\":2110:2130 */\n tag_495\n /* \"--CODEGEN--\":2125:2129 */\n 0x80\n /* \"--CODEGEN--\":2110:2130 */\n jump(tag_496)\n tag_495:\n /* \"--CODEGEN--\":2101:2130 */\n swap1\n pop\n /* \"--CODEGEN--\":2177:2178 */\n 0x00\n /* \"--CODEGEN--\":2208:2257 */\n tag_497\n /* \"--CODEGEN--\":2253:2256 */\n dup5\n /* \"--CODEGEN--\":2233:2242 */\n dup5\n /* \"--CODEGEN--\":2208:2257 */\n jump(tag_472)\n tag_497:\n /* \"--CODEGEN--\":2184:2258 */\n dup3\n mstore\n pop\n /* \"--CODEGEN--\":2316:2318 */\n 0x20\n /* \"--CODEGEN--\":2349:2398 */\n tag_498\n /* \"--CODEGEN--\":2394:2397 */\n dup5\n /* \"--CODEGEN--\":2370:2392 */\n dup5\n dup4\n add\n /* \"--CODEGEN--\":2349:2398 */\n jump(tag_472)\n tag_498:\n /* \"--CODEGEN--\":2342:2346 */\n 0x20\n /* \"--CODEGEN--\":2335:2340 */\n dup4\n /* \"--CODEGEN--\":2331:2347 */\n add\n /* \"--CODEGEN--\":2324:2399 */\n mstore\n /* \"--CODEGEN--\":2279:2410 */\n pop\n /* \"--CODEGEN--\":2457:2459 */\n 0x40\n /* \"--CODEGEN--\":2490:2537 */\n tag_499\n /* \"--CODEGEN--\":2533:2536 */\n dup5\n /* \"--CODEGEN--\":2524:2530 */\n dup3\n /* \"--CODEGEN--\":2513:2522 */\n dup6\n /* \"--CODEGEN--\":2509:2531 */\n add\n /* \"--CODEGEN--\":2490:2537 */\n jump(tag_500)\n tag_499:\n /* \"--CODEGEN--\":2483:2487 */\n 0x40\n /* \"--CODEGEN--\":2476:2481 */\n dup4\n /* \"--CODEGEN--\":2472:2488 */\n add\n /* \"--CODEGEN--\":2465:2538 */\n mstore\n /* \"--CODEGEN--\":2420:2549 */\n pop\n /* \"--CODEGEN--\":2599:2601 */\n 0x60\n /* \"--CODEGEN--\":2632:2698 */\n tag_501\n /* \"--CODEGEN--\":2694:2697 */\n dup5\n /* \"--CODEGEN--\":2685:2691 */\n dup3\n /* \"--CODEGEN--\":2674:2683 */\n dup6\n /* \"--CODEGEN--\":2670:2692 */\n add\n /* \"--CODEGEN--\":2632:2698 */\n jump(tag_484)\n tag_501:\n /* \"--CODEGEN--\":2625:2629 */\n 0x60\n /* \"--CODEGEN--\":2618:2623 */\n dup4\n /* \"--CODEGEN--\":2614:2630 */\n add\n /* \"--CODEGEN--\":2607:2699 */\n mstore\n /* \"--CODEGEN--\":2559:2710 */\n pop\n /* \"--CODEGEN--\":2040:2720 */\n swap3\n swap2\n pop\n pop\n jump\n /* \"--CODEGEN--\":2864:2990 */\n tag_500:\n /* \"--CODEGEN--\":2929:2949 */\n dup1\n calldataload\n /* \"--CODEGEN--\":2954:2985 */\n tag_229\n /* \"--CODEGEN--\":2929:2949 */\n dup2\n /* \"--CODEGEN--\":2954:2985 */\n jump(tag_506)\n /* \"--CODEGEN--\":2997:3238 */\n tag_101:\n 0x00\n /* \"--CODEGEN--\":3101:3103 */\n 0x20\n /* \"--CODEGEN--\":3089:3098 */\n dup3\n /* \"--CODEGEN--\":3080:3087 */\n dup5\n /* \"--CODEGEN--\":3076:3099 */\n sub\n /* \"--CODEGEN--\":3072:3104 */\n slt\n /* \"--CODEGEN--\":3069:3071 */\n iszero\n tag_507\n jumpi\n /* \"--CODEGEN--\":3117:3118 */\n 0x00\n /* \"--CODEGEN--\":3114:3115 */\n dup1\n /* \"--CODEGEN--\":3107:3119 */\n revert\n /* \"--CODEGEN--\":3069:3071 */\n tag_507:\n /* \"--CODEGEN--\":3152:3153 */\n 0x00\n /* \"--CODEGEN--\":3169:3222 */\n tag_451\n /* \"--CODEGEN--\":3214:3221 */\n dup5\n /* \"--CODEGEN--\":3194:3203 */\n dup5\n /* \"--CODEGEN--\":3169:3222 */\n jump(tag_464)\n /* \"--CODEGEN--\":3245:3611 */\n tag_184:\n 0x00\n dup1\n /* \"--CODEGEN--\":3366:3368 */\n 0x40\n /* \"--CODEGEN--\":3354:3363 */\n dup4\n /* \"--CODEGEN--\":3345:3352 */\n dup6\n /* \"--CODEGEN--\":3341:3364 */\n sub\n /* \"--CODEGEN--\":3337:3369 */\n slt\n /* \"--CODEGEN--\":3334:3336 */\n iszero\n tag_509\n jumpi\n /* \"--CODEGEN--\":3382:3383 */\n 0x00\n /* \"--CODEGEN--\":3379:3380 */\n dup1\n /* \"--CODEGEN--\":3372:3384 */\n revert\n /* \"--CODEGEN--\":3334:3336 */\n tag_509:\n /* \"--CODEGEN--\":3417:3418 */\n 0x00\n /* \"--CODEGEN--\":3434:3487 */\n tag_510\n /* \"--CODEGEN--\":3479:3486 */\n dup6\n /* \"--CODEGEN--\":3459:3468 */\n dup6\n /* \"--CODEGEN--\":3434:3487 */\n jump(tag_464)\n tag_510:\n /* \"--CODEGEN--\":3424:3487 */\n swap3\n pop\n /* \"--CODEGEN--\":3396:3493 */\n pop\n /* \"--CODEGEN--\":3524:3526 */\n 0x20\n /* \"--CODEGEN--\":3542:3595 */\n tag_511\n /* \"--CODEGEN--\":3587:3594 */\n dup6\n /* \"--CODEGEN--\":3578:3584 */\n dup3\n /* \"--CODEGEN--\":3567:3576 */\n dup7\n /* \"--CODEGEN--\":3563:3585 */\n add\n /* \"--CODEGEN--\":3542:3595 */\n jump(tag_464)\n tag_511:\n /* \"--CODEGEN--\":3532:3595 */\n swap2\n pop\n /* \"--CODEGEN--\":3503:3601 */\n pop\n /* \"--CODEGEN--\":3328:3611 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\n /* \"--CODEGEN--\":3618:4607 */\n tag_130:\n 0x00\n dup1\n 0x00\n dup1\n 0x00\n dup1\n 0x00\n /* \"--CODEGEN--\":3821:3824 */\n 0xe0\n /* \"--CODEGEN--\":3809:3818 */\n dup9\n /* \"--CODEGEN--\":3800:3807 */\n dup11\n /* \"--CODEGEN--\":3796:3819 */\n sub\n /* \"--CODEGEN--\":3792:3825 */\n slt\n /* \"--CODEGEN--\":3789:3791 */\n iszero\n tag_512\n jumpi\n /* \"--CODEGEN--\":3838:3839 */\n 0x00\n /* \"--CODEGEN--\":3835:3836 */\n dup1\n /* \"--CODEGEN--\":3828:3840 */\n revert\n /* \"--CODEGEN--\":3789:3791 */\n tag_512:\n /* \"--CODEGEN--\":3873:3874 */\n 0x00\n /* \"--CODEGEN--\":3890:3943 */\n tag_513\n /* \"--CODEGEN--\":3935:3942 */\n dup11\n /* \"--CODEGEN--\":3915:3924 */\n dup11\n /* \"--CODEGEN--\":3890:3943 */\n jump(tag_464)\n tag_513:\n /* \"--CODEGEN--\":3880:3943 */\n swap8\n pop\n /* \"--CODEGEN--\":3852:3949 */\n pop\n /* \"--CODEGEN--\":3980:3982 */\n 0x20\n /* \"--CODEGEN--\":3998:4051 */\n tag_514\n /* \"--CODEGEN--\":4043:4050 */\n dup11\n /* \"--CODEGEN--\":4034:4040 */\n dup3\n /* \"--CODEGEN--\":4023:4032 */\n dup12\n /* \"--CODEGEN--\":4019:4041 */\n add\n /* \"--CODEGEN--\":3998:4051 */\n jump(tag_464)\n tag_514:\n /* \"--CODEGEN--\":3988:4051 */\n swap7\n pop\n /* \"--CODEGEN--\":3959:4057 */\n pop\n /* \"--CODEGEN--\":4088:4090 */\n 0x40\n /* \"--CODEGEN--\":4106:4156 */\n tag_515\n /* \"--CODEGEN--\":4148:4155 */\n dup11\n /* \"--CODEGEN--\":4139:4145 */\n dup3\n /* \"--CODEGEN--\":4128:4137 */\n dup12\n /* \"--CODEGEN--\":4124:4146 */\n add\n /* \"--CODEGEN--\":4106:4156 */\n jump(tag_467)\n tag_515:\n /* \"--CODEGEN--\":4096:4156 */\n swap6\n pop\n /* \"--CODEGEN--\":4067:4162 */\n pop\n /* \"--CODEGEN--\":4193:4195 */\n 0x60\n /* \"--CODEGEN--\":4211:4264 */\n tag_516\n /* \"--CODEGEN--\":4256:4263 */\n dup11\n /* \"--CODEGEN--\":4247:4253 */\n dup3\n /* \"--CODEGEN--\":4236:4245 */\n dup12\n /* \"--CODEGEN--\":4232:4254 */\n add\n /* \"--CODEGEN--\":4211:4264 */\n jump(tag_464)\n tag_516:\n /* \"--CODEGEN--\":4201:4264 */\n swap5\n pop\n /* \"--CODEGEN--\":4172:4270 */\n pop\n /* \"--CODEGEN--\":4301:4304 */\n 0x80\n /* \"--CODEGEN--\":4320:4373 */\n tag_517\n /* \"--CODEGEN--\":4365:4372 */\n dup11\n /* \"--CODEGEN--\":4356:4362 */\n dup3\n /* \"--CODEGEN--\":4345:4354 */\n dup12\n /* \"--CODEGEN--\":4341:4363 */\n add\n /* \"--CODEGEN--\":4320:4373 */\n jump(tag_472)\n tag_517:\n /* \"--CODEGEN--\":4310:4373 */\n swap4\n pop\n /* \"--CODEGEN--\":4280:4379 */\n pop\n /* \"--CODEGEN--\":4410:4413 */\n 0xa0\n /* \"--CODEGEN--\":4429:4482 */\n tag_518\n /* \"--CODEGEN--\":4474:4481 */\n dup11\n /* \"--CODEGEN--\":4465:4471 */\n dup3\n /* \"--CODEGEN--\":4454:4463 */\n dup12\n /* \"--CODEGEN--\":4450:4472 */\n add\n /* \"--CODEGEN--\":4429:4482 */\n jump(tag_472)\n tag_518:\n /* \"--CODEGEN--\":4419:4482 */\n swap3\n pop\n /* \"--CODEGEN--\":4389:4488 */\n pop\n /* \"--CODEGEN--\":4519:4522 */\n 0xc0\n /* \"--CODEGEN--\":4538:4591 */\n tag_519\n /* \"--CODEGEN--\":4583:4590 */\n dup11\n /* \"--CODEGEN--\":4574:4580 */\n dup3\n /* \"--CODEGEN--\":4563:4572 */\n dup12\n /* \"--CODEGEN--\":4559:4581 */\n add\n /* \"--CODEGEN--\":4538:4591 */\n jump(tag_472)\n tag_519:\n /* \"--CODEGEN--\":4528:4591 */\n swap2\n pop\n /* \"--CODEGEN--\":4498:4597 */\n pop\n /* \"--CODEGEN--\":3783:4607 */\n swap3\n swap6\n swap9\n swap2\n swap5\n swap8\n pop\n swap3\n swap6\n pop\n jump\n /* \"--CODEGEN--\":4614:5793 */\n tag_110:\n 0x00\n dup1\n 0x00\n dup1\n 0x00\n dup1\n 0x00\n dup1\n /* \"--CODEGEN--\":4866:4869 */\n 0x0160\n /* \"--CODEGEN--\":4854:4863 */\n dup10\n /* \"--CODEGEN--\":4845:4852 */\n dup12\n /* \"--CODEGEN--\":4841:4864 */\n sub\n /* \"--CODEGEN--\":4837:4870 */\n slt\n /* \"--CODEGEN--\":4834:4836 */\n iszero\n tag_520\n jumpi\n /* \"--CODEGEN--\":4883:4884 */\n 0x00\n /* \"--CODEGEN--\":4880:4881 */\n dup1\n /* \"--CODEGEN--\":4873:4885 */\n revert\n /* \"--CODEGEN--\":4834:4836 */\n tag_520:\n /* \"--CODEGEN--\":4918:4919 */\n 0x00\n /* \"--CODEGEN--\":4935:4988 */\n tag_521\n /* \"--CODEGEN--\":4980:4987 */\n dup12\n /* \"--CODEGEN--\":4960:4969 */\n dup12\n /* \"--CODEGEN--\":4935:4988 */\n jump(tag_464)\n tag_521:\n /* \"--CODEGEN--\":4925:4988 */\n swap9\n pop\n /* \"--CODEGEN--\":4897:4994 */\n pop\n /* \"--CODEGEN--\":5025:5027 */\n 0x20\n /* \"--CODEGEN--\":5043:5096 */\n tag_522\n /* \"--CODEGEN--\":5088:5095 */\n dup12\n /* \"--CODEGEN--\":5079:5085 */\n dup3\n /* \"--CODEGEN--\":5068:5077 */\n dup13\n /* \"--CODEGEN--\":5064:5086 */\n add\n /* \"--CODEGEN--\":5043:5096 */\n jump(tag_464)\n tag_522:\n /* \"--CODEGEN--\":5033:5096 */\n swap8\n pop\n /* \"--CODEGEN--\":5004:5102 */\n pop\n /* \"--CODEGEN--\":5133:5135 */\n 0x40\n /* \"--CODEGEN--\":5151:5201 */\n tag_523\n /* \"--CODEGEN--\":5193:5200 */\n dup12\n /* \"--CODEGEN--\":5184:5190 */\n dup3\n /* \"--CODEGEN--\":5173:5182 */\n dup13\n /* \"--CODEGEN--\":5169:5191 */\n add\n /* \"--CODEGEN--\":5151:5201 */\n jump(tag_467)\n tag_523:\n /* \"--CODEGEN--\":5141:5201 */\n swap7\n pop\n /* \"--CODEGEN--\":5112:5207 */\n pop\n /* \"--CODEGEN--\":5238:5240 */\n 0x60\n /* \"--CODEGEN--\":5256:5309 */\n tag_524\n /* \"--CODEGEN--\":5301:5308 */\n dup12\n /* \"--CODEGEN--\":5292:5298 */\n dup3\n /* \"--CODEGEN--\":5281:5290 */\n dup13\n /* \"--CODEGEN--\":5277:5299 */\n add\n /* \"--CODEGEN--\":5256:5309 */\n jump(tag_464)\n tag_524:\n /* \"--CODEGEN--\":5246:5309 */\n swap6\n pop\n /* \"--CODEGEN--\":5217:5315 */\n pop\n /* \"--CODEGEN--\":5346:5349 */\n 0x80\n /* \"--CODEGEN--\":5365:5418 */\n tag_525\n /* \"--CODEGEN--\":5410:5417 */\n dup12\n /* \"--CODEGEN--\":5401:5407 */\n dup3\n /* \"--CODEGEN--\":5390:5399 */\n dup13\n /* \"--CODEGEN--\":5386:5408 */\n add\n /* \"--CODEGEN--\":5365:5418 */\n jump(tag_472)\n tag_525:\n /* \"--CODEGEN--\":5355:5418 */\n swap5\n pop\n /* \"--CODEGEN--\":5325:5424 */\n pop\n /* \"--CODEGEN--\":5455:5458 */\n 0xa0\n /* \"--CODEGEN--\":5474:5527 */\n tag_526\n /* \"--CODEGEN--\":5519:5526 */\n dup12\n /* \"--CODEGEN--\":5510:5516 */\n dup3\n /* \"--CODEGEN--\":5499:5508 */\n dup13\n /* \"--CODEGEN--\":5495:5517 */\n add\n /* \"--CODEGEN--\":5474:5527 */\n jump(tag_472)\n tag_526:\n /* \"--CODEGEN--\":5464:5527 */\n swap4\n pop\n /* \"--CODEGEN--\":5434:5533 */\n pop\n /* \"--CODEGEN--\":5564:5567 */\n 0xc0\n /* \"--CODEGEN--\":5583:5636 */\n tag_527\n /* \"--CODEGEN--\":5628:5635 */\n dup12\n /* \"--CODEGEN--\":5619:5625 */\n dup3\n /* \"--CODEGEN--\":5608:5617 */\n dup13\n /* \"--CODEGEN--\":5604:5626 */\n add\n /* \"--CODEGEN--\":5583:5636 */\n jump(tag_472)\n tag_527:\n /* \"--CODEGEN--\":5573:5636 */\n swap3\n pop\n /* \"--CODEGEN--\":5543:5642 */\n pop\n /* \"--CODEGEN--\":5673:5676 */\n 0xe0\n /* \"--CODEGEN--\":5692:5777 */\n tag_528\n /* \"--CODEGEN--\":5769:5776 */\n dup12\n /* \"--CODEGEN--\":5760:5766 */\n dup3\n /* \"--CODEGEN--\":5749:5758 */\n dup13\n /* \"--CODEGEN--\":5745:5767 */\n add\n /* \"--CODEGEN--\":5692:5777 */\n jump(tag_491)\n tag_528:\n /* \"--CODEGEN--\":5682:5777 */\n swap2\n pop\n /* \"--CODEGEN--\":5652:5783 */\n pop\n /* \"--CODEGEN--\":4828:5793 */\n swap3\n swap6\n swap9\n pop\n swap3\n swap6\n swap9\n swap1\n swap4\n swap7\n pop\n jump\n /* \"--CODEGEN--\":5800:6291 */\n tag_85:\n 0x00\n dup1\n 0x00\n /* \"--CODEGEN--\":5938:5940 */\n 0x60\n /* \"--CODEGEN--\":5926:5935 */\n dup5\n /* \"--CODEGEN--\":5917:5924 */\n dup7\n /* \"--CODEGEN--\":5913:5936 */\n sub\n /* \"--CODEGEN--\":5909:5941 */\n slt\n /* \"--CODEGEN--\":5906:5908 */\n iszero\n tag_529\n jumpi\n /* \"--CODEGEN--\":5954:5955 */\n 0x00\n /* \"--CODEGEN--\":5951:5952 */\n dup1\n /* \"--CODEGEN--\":5944:5956 */\n revert\n /* \"--CODEGEN--\":5906:5908 */\n tag_529:\n /* \"--CODEGEN--\":5989:5990 */\n 0x00\n /* \"--CODEGEN--\":6006:6059 */\n tag_530\n /* \"--CODEGEN--\":6051:6058 */\n dup7\n /* \"--CODEGEN--\":6031:6040 */\n dup7\n /* \"--CODEGEN--\":6006:6059 */\n jump(tag_464)\n tag_530:\n /* \"--CODEGEN--\":5996:6059 */\n swap4\n pop\n /* \"--CODEGEN--\":5968:6065 */\n pop\n /* \"--CODEGEN--\":6096:6098 */\n 0x20\n /* \"--CODEGEN--\":6114:6167 */\n tag_531\n /* \"--CODEGEN--\":6159:6166 */\n dup7\n /* \"--CODEGEN--\":6150:6156 */\n dup3\n /* \"--CODEGEN--\":6139:6148 */\n dup8\n /* \"--CODEGEN--\":6135:6157 */\n add\n /* \"--CODEGEN--\":6114:6167 */\n jump(tag_464)\n tag_531:\n /* \"--CODEGEN--\":6104:6167 */\n swap3\n pop\n /* \"--CODEGEN--\":6075:6173 */\n pop\n /* \"--CODEGEN--\":6204:6206 */\n 0x40\n /* \"--CODEGEN--\":6222:6275 */\n tag_532\n /* \"--CODEGEN--\":6267:6274 */\n dup7\n /* \"--CODEGEN--\":6258:6264 */\n dup3\n /* \"--CODEGEN--\":6247:6256 */\n dup8\n /* \"--CODEGEN--\":6243:6265 */\n add\n /* \"--CODEGEN--\":6222:6275 */\n jump(tag_472)\n tag_532:\n /* \"--CODEGEN--\":6212:6275 */\n swap2\n pop\n /* \"--CODEGEN--\":6183:6281 */\n pop\n /* \"--CODEGEN--\":5900:6291 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\n /* \"--CODEGEN--\":6298:7039 */\n tag_161:\n 0x00\n dup1\n 0x00\n dup1\n 0x00\n /* \"--CODEGEN--\":6472:6475 */\n 0x80\n /* \"--CODEGEN--\":6460:6469 */\n dup7\n /* \"--CODEGEN--\":6451:6458 */\n dup9\n /* \"--CODEGEN--\":6447:6470 */\n sub\n /* \"--CODEGEN--\":6443:6476 */\n slt\n /* \"--CODEGEN--\":6440:6442 */\n iszero\n tag_533\n jumpi\n /* \"--CODEGEN--\":6489:6490 */\n 0x00\n /* \"--CODEGEN--\":6486:6487 */\n dup1\n /* \"--CODEGEN--\":6479:6491 */\n revert\n /* \"--CODEGEN--\":6440:6442 */\n tag_533:\n /* \"--CODEGEN--\":6524:6525 */\n 0x00\n /* \"--CODEGEN--\":6541:6594 */\n tag_534\n /* \"--CODEGEN--\":6586:6593 */\n dup9\n /* \"--CODEGEN--\":6566:6575 */\n dup9\n /* \"--CODEGEN--\":6541:6594 */\n jump(tag_464)\n tag_534:\n /* \"--CODEGEN--\":6531:6594 */\n swap6\n pop\n /* \"--CODEGEN--\":6503:6600 */\n pop\n /* \"--CODEGEN--\":6631:6633 */\n 0x20\n /* \"--CODEGEN--\":6649:6702 */\n tag_535\n /* \"--CODEGEN--\":6694:6701 */\n dup9\n /* \"--CODEGEN--\":6685:6691 */\n dup3\n /* \"--CODEGEN--\":6674:6683 */\n dup10\n /* \"--CODEGEN--\":6670:6692 */\n add\n /* \"--CODEGEN--\":6649:6702 */\n jump(tag_464)\n tag_535:\n /* \"--CODEGEN--\":6639:6702 */\n swap5\n pop\n /* \"--CODEGEN--\":6610:6708 */\n pop\n /* \"--CODEGEN--\":6739:6741 */\n 0x40\n /* \"--CODEGEN--\":6757:6810 */\n tag_536\n /* \"--CODEGEN--\":6802:6809 */\n dup9\n /* \"--CODEGEN--\":6793:6799 */\n dup3\n /* \"--CODEGEN--\":6782:6791 */\n dup10\n /* \"--CODEGEN--\":6778:6800 */\n add\n /* \"--CODEGEN--\":6757:6810 */\n jump(tag_472)\n tag_536:\n /* \"--CODEGEN--\":6747:6810 */\n swap4\n pop\n /* \"--CODEGEN--\":6718:6816 */\n pop\n /* \"--CODEGEN--\":6875:6877 */\n 0x60\n /* \"--CODEGEN--\":6864:6873 */\n dup7\n /* \"--CODEGEN--\":6860:6878 */\n add\n /* \"--CODEGEN--\":6847:6879 */\n calldataload\n /* \"--CODEGEN--\":6899:6917 */\n 0xffffffffffffffff\n /* \"--CODEGEN--\":6891:6897 */\n dup2\n /* \"--CODEGEN--\":6888:6918 */\n gt\n /* \"--CODEGEN--\":6885:6887 */\n iszero\n tag_537\n jumpi\n /* \"--CODEGEN--\":6931:6932 */\n 0x00\n /* \"--CODEGEN--\":6928:6929 */\n dup1\n /* \"--CODEGEN--\":6921:6933 */\n revert\n /* \"--CODEGEN--\":6885:6887 */\n tag_537:\n /* \"--CODEGEN--\":6959:7023 */\n tag_538\n /* \"--CODEGEN--\":7015:7022 */\n dup9\n /* \"--CODEGEN--\":7006:7012 */\n dup3\n /* \"--CODEGEN--\":6995:7004 */\n dup10\n /* \"--CODEGEN--\":6991:7013 */\n add\n /* \"--CODEGEN--\":6959:7023 */\n jump(tag_480)\n tag_538:\n /* \"--CODEGEN--\":6949:7023 */\n swap3\n pop\n swap3\n pop\n /* \"--CODEGEN--\":6826:7029 */\n pop\n /* \"--CODEGEN--\":6434:7039 */\n swap3\n swap6\n pop\n swap3\n swap6\n swap1\n swap4\n pop\n jump\n /* \"--CODEGEN--\":7046:7406 */\n tag_150:\n 0x00\n dup1\n /* \"--CODEGEN--\":7164:7166 */\n 0x40\n /* \"--CODEGEN--\":7152:7161 */\n dup4\n /* \"--CODEGEN--\":7143:7150 */\n dup6\n /* \"--CODEGEN--\":7139:7162 */\n sub\n /* \"--CODEGEN--\":7135:7167 */\n slt\n /* \"--CODEGEN--\":7132:7134 */\n iszero\n tag_539\n jumpi\n /* \"--CODEGEN--\":7180:7181 */\n 0x00\n /* \"--CODEGEN--\":7177:7178 */\n dup1\n /* \"--CODEGEN--\":7170:7182 */\n revert\n /* \"--CODEGEN--\":7132:7134 */\n tag_539:\n /* \"--CODEGEN--\":7215:7216 */\n 0x00\n /* \"--CODEGEN--\":7232:7285 */\n tag_540\n /* \"--CODEGEN--\":7277:7284 */\n dup6\n /* \"--CODEGEN--\":7257:7266 */\n dup6\n /* \"--CODEGEN--\":7232:7285 */\n jump(tag_464)\n tag_540:\n /* \"--CODEGEN--\":7222:7285 */\n swap3\n pop\n /* \"--CODEGEN--\":7194:7291 */\n pop\n /* \"--CODEGEN--\":7322:7324 */\n 0x20\n /* \"--CODEGEN--\":7340:7390 */\n tag_511\n /* \"--CODEGEN--\":7382:7389 */\n dup6\n /* \"--CODEGEN--\":7373:7379 */\n dup3\n /* \"--CODEGEN--\":7362:7371 */\n dup7\n /* \"--CODEGEN--\":7358:7380 */\n add\n /* \"--CODEGEN--\":7340:7390 */\n jump(tag_467)\n /* \"--CODEGEN--\":7413:7965 */\n tag_139:\n 0x00\n dup1\n 0x00\n /* \"--CODEGEN--\":7581:7584 */\n 0xc0\n /* \"--CODEGEN--\":7569:7578 */\n dup5\n /* \"--CODEGEN--\":7560:7567 */\n dup7\n /* \"--CODEGEN--\":7556:7579 */\n sub\n /* \"--CODEGEN--\":7552:7585 */\n slt\n /* \"--CODEGEN--\":7549:7551 */\n iszero\n tag_542\n jumpi\n /* \"--CODEGEN--\":7598:7599 */\n 0x00\n /* \"--CODEGEN--\":7595:7596 */\n dup1\n /* \"--CODEGEN--\":7588:7600 */\n revert\n /* \"--CODEGEN--\":7549:7551 */\n tag_542:\n /* \"--CODEGEN--\":7633:7634 */\n 0x00\n /* \"--CODEGEN--\":7650:7703 */\n tag_543\n /* \"--CODEGEN--\":7695:7702 */\n dup7\n /* \"--CODEGEN--\":7675:7684 */\n dup7\n /* \"--CODEGEN--\":7650:7703 */\n jump(tag_464)\n tag_543:\n /* \"--CODEGEN--\":7640:7703 */\n swap4\n pop\n /* \"--CODEGEN--\":7612:7709 */\n pop\n /* \"--CODEGEN--\":7740:7742 */\n 0x20\n /* \"--CODEGEN--\":7758:7811 */\n tag_544\n /* \"--CODEGEN--\":7803:7810 */\n dup7\n /* \"--CODEGEN--\":7794:7800 */\n dup3\n /* \"--CODEGEN--\":7783:7792 */\n dup8\n /* \"--CODEGEN--\":7779:7801 */\n add\n /* \"--CODEGEN--\":7758:7811 */\n jump(tag_472)\n tag_544:\n /* \"--CODEGEN--\":7748:7811 */\n swap3\n pop\n /* \"--CODEGEN--\":7719:7817 */\n pop\n /* \"--CODEGEN--\":7848:7850 */\n 0x40\n /* \"--CODEGEN--\":7866:7949 */\n tag_532\n /* \"--CODEGEN--\":7941:7948 */\n dup7\n /* \"--CODEGEN--\":7932:7938 */\n dup3\n /* \"--CODEGEN--\":7921:7930 */\n dup8\n /* \"--CODEGEN--\":7917:7939 */\n add\n /* \"--CODEGEN--\":7866:7949 */\n jump(tag_493)\n /* \"--CODEGEN--\":7972:8338 */\n tag_68:\n 0x00\n dup1\n /* \"--CODEGEN--\":8093:8095 */\n 0x40\n /* \"--CODEGEN--\":8081:8090 */\n dup4\n /* \"--CODEGEN--\":8072:8079 */\n dup6\n /* \"--CODEGEN--\":8068:8091 */\n sub\n /* \"--CODEGEN--\":8064:8096 */\n slt\n /* \"--CODEGEN--\":8061:8063 */\n iszero\n tag_546\n jumpi\n /* \"--CODEGEN--\":8109:8110 */\n 0x00\n /* \"--CODEGEN--\":8106:8107 */\n dup1\n /* \"--CODEGEN--\":8099:8111 */\n revert\n /* \"--CODEGEN--\":8061:8063 */\n tag_546:\n /* \"--CODEGEN--\":8144:8145 */\n 0x00\n /* \"--CODEGEN--\":8161:8214 */\n tag_547\n /* \"--CODEGEN--\":8206:8213 */\n dup6\n /* \"--CODEGEN--\":8186:8195 */\n dup6\n /* \"--CODEGEN--\":8161:8214 */\n jump(tag_464)\n tag_547:\n /* \"--CODEGEN--\":8151:8214 */\n swap3\n pop\n /* \"--CODEGEN--\":8123:8220 */\n pop\n /* \"--CODEGEN--\":8251:8253 */\n 0x20\n /* \"--CODEGEN--\":8269:8322 */\n tag_511\n /* \"--CODEGEN--\":8314:8321 */\n dup6\n /* \"--CODEGEN--\":8305:8311 */\n dup3\n /* \"--CODEGEN--\":8294:8303 */\n dup7\n /* \"--CODEGEN--\":8290:8312 */\n add\n /* \"--CODEGEN--\":8269:8322 */\n jump(tag_472)\n /* \"--CODEGEN--\":8345:8836 */\n tag_154:\n 0x00\n dup1\n 0x00\n /* \"--CODEGEN--\":8483:8485 */\n 0x60\n /* \"--CODEGEN--\":8471:8480 */\n dup5\n /* \"--CODEGEN--\":8462:8469 */\n dup7\n /* \"--CODEGEN--\":8458:8481 */\n sub\n /* \"--CODEGEN--\":8454:8486 */\n slt\n /* \"--CODEGEN--\":8451:8453 */\n iszero\n tag_549\n jumpi\n /* \"--CODEGEN--\":8499:8500 */\n 0x00\n /* \"--CODEGEN--\":8496:8497 */\n dup1\n /* \"--CODEGEN--\":8489:8501 */\n revert\n /* \"--CODEGEN--\":8451:8453 */\n tag_549:\n /* \"--CODEGEN--\":8534:8535 */\n 0x00\n /* \"--CODEGEN--\":8551:8604 */\n tag_550\n /* \"--CODEGEN--\":8596:8603 */\n dup7\n /* \"--CODEGEN--\":8576:8585 */\n dup7\n /* \"--CODEGEN--\":8551:8604 */\n jump(tag_464)\n tag_550:\n /* \"--CODEGEN--\":8541:8604 */\n swap4\n pop\n /* \"--CODEGEN--\":8513:8610 */\n pop\n /* \"--CODEGEN--\":8641:8643 */\n 0x20\n /* \"--CODEGEN--\":8659:8712 */\n tag_531\n /* \"--CODEGEN--\":8704:8711 */\n dup7\n /* \"--CODEGEN--\":8695:8701 */\n dup3\n /* \"--CODEGEN--\":8684:8693 */\n dup8\n /* \"--CODEGEN--\":8680:8702 */\n add\n /* \"--CODEGEN--\":8659:8712 */\n jump(tag_472)\n /* \"--CODEGEN--\":8843:9078 */\n tag_173:\n 0x00\n /* \"--CODEGEN--\":8944:8946 */\n 0x20\n /* \"--CODEGEN--\":8932:8941 */\n dup3\n /* \"--CODEGEN--\":8923:8930 */\n dup5\n /* \"--CODEGEN--\":8919:8942 */\n sub\n /* \"--CODEGEN--\":8915:8947 */\n slt\n /* \"--CODEGEN--\":8912:8914 */\n iszero\n tag_553\n jumpi\n /* \"--CODEGEN--\":8960:8961 */\n 0x00\n /* \"--CODEGEN--\":8957:8958 */\n dup1\n /* \"--CODEGEN--\":8950:8962 */\n revert\n /* \"--CODEGEN--\":8912:8914 */\n tag_553:\n /* \"--CODEGEN--\":8995:8996 */\n 0x00\n /* \"--CODEGEN--\":9012:9062 */\n tag_451\n /* \"--CODEGEN--\":9054:9061 */\n dup5\n /* \"--CODEGEN--\":9034:9043 */\n dup5\n /* \"--CODEGEN--\":9012:9062 */\n jump(tag_467)\n /* \"--CODEGEN--\":9085:9342 */\n tag_258:\n 0x00\n /* \"--CODEGEN--\":9197:9199 */\n 0x20\n /* \"--CODEGEN--\":9185:9194 */\n dup3\n /* \"--CODEGEN--\":9176:9183 */\n dup5\n /* \"--CODEGEN--\":9172:9195 */\n sub\n /* \"--CODEGEN--\":9168:9200 */\n slt\n /* \"--CODEGEN--\":9165:9167 */\n iszero\n tag_555\n jumpi\n /* \"--CODEGEN--\":9213:9214 */\n 0x00\n /* \"--CODEGEN--\":9210:9211 */\n dup1\n /* \"--CODEGEN--\":9203:9215 */\n revert\n /* \"--CODEGEN--\":9165:9167 */\n tag_555:\n /* \"--CODEGEN--\":9248:9249 */\n 0x00\n /* \"--CODEGEN--\":9265:9326 */\n tag_451\n /* \"--CODEGEN--\":9318:9325 */\n dup5\n /* \"--CODEGEN--\":9298:9307 */\n dup5\n /* \"--CODEGEN--\":9265:9326 */\n jump(tag_470)\n /* \"--CODEGEN--\":9349:9590 */\n tag_89:\n 0x00\n /* \"--CODEGEN--\":9453:9455 */\n 0x20\n /* \"--CODEGEN--\":9441:9450 */\n dup3\n /* \"--CODEGEN--\":9432:9439 */\n dup5\n /* \"--CODEGEN--\":9428:9451 */\n sub\n /* \"--CODEGEN--\":9424:9456 */\n slt\n /* \"--CODEGEN--\":9421:9423 */\n iszero\n tag_557\n jumpi\n /* \"--CODEGEN--\":9469:9470 */\n 0x00\n /* \"--CODEGEN--\":9466:9467 */\n dup1\n /* \"--CODEGEN--\":9459:9471 */\n revert\n /* \"--CODEGEN--\":9421:9423 */\n tag_557:\n /* \"--CODEGEN--\":9504:9505 */\n 0x00\n /* \"--CODEGEN--\":9521:9574 */\n tag_451\n /* \"--CODEGEN--\":9566:9573 */\n dup5\n /* \"--CODEGEN--\":9546:9555 */\n dup5\n /* \"--CODEGEN--\":9521:9574 */\n jump(tag_472)\n /* \"--CODEGEN--\":9597:9836 */\n tag_48:\n 0x00\n /* \"--CODEGEN--\":9700:9702 */\n 0x20\n /* \"--CODEGEN--\":9688:9697 */\n dup3\n /* \"--CODEGEN--\":9679:9686 */\n dup5\n /* \"--CODEGEN--\":9675:9698 */\n sub\n /* \"--CODEGEN--\":9671:9703 */\n slt\n /* \"--CODEGEN--\":9668:9670 */\n iszero\n tag_559\n jumpi\n /* \"--CODEGEN--\":9716:9717 */\n 0x00\n /* \"--CODEGEN--\":9713:9714 */\n dup1\n /* \"--CODEGEN--\":9706:9718 */\n revert\n /* \"--CODEGEN--\":9668:9670 */\n tag_559:\n /* \"--CODEGEN--\":9751:9752 */\n 0x00\n /* \"--CODEGEN--\":9768:9820 */\n tag_451\n /* \"--CODEGEN--\":9812:9819 */\n dup5\n /* \"--CODEGEN--\":9792:9801 */\n dup5\n /* \"--CODEGEN--\":9768:9820 */\n jump(tag_475)\n /* \"--CODEGEN--\":9843:10104 */\n tag_404:\n 0x00\n /* \"--CODEGEN--\":9957:9959 */\n 0x20\n /* \"--CODEGEN--\":9945:9954 */\n dup3\n /* \"--CODEGEN--\":9936:9943 */\n dup5\n /* \"--CODEGEN--\":9932:9955 */\n sub\n /* \"--CODEGEN--\":9928:9960 */\n slt\n /* \"--CODEGEN--\":9925:9927 */\n iszero\n tag_561\n jumpi\n /* \"--CODEGEN--\":9973:9974 */\n 0x00\n /* \"--CODEGEN--\":9970:9971 */\n dup1\n /* \"--CODEGEN--\":9963:9975 */\n revert\n /* \"--CODEGEN--\":9925:9927 */\n tag_561:\n /* \"--CODEGEN--\":10008:10009 */\n 0x00\n /* \"--CODEGEN--\":10025:10088 */\n tag_451\n /* \"--CODEGEN--\":10080:10087 */\n dup5\n /* \"--CODEGEN--\":10060:10069 */\n dup5\n /* \"--CODEGEN--\":10025:10088 */\n jump(tag_478)\n /* \"--CODEGEN--\":10111:10729 */\n tag_135:\n 0x00\n dup1\n 0x00\n dup1\n /* \"--CODEGEN--\":10272:10274 */\n 0x40\n /* \"--CODEGEN--\":10260:10269 */\n dup6\n /* \"--CODEGEN--\":10251:10258 */\n dup8\n /* \"--CODEGEN--\":10247:10270 */\n sub\n /* \"--CODEGEN--\":10243:10275 */\n slt\n /* \"--CODEGEN--\":10240:10242 */\n iszero\n tag_563\n jumpi\n /* \"--CODEGEN--\":10288:10289 */\n 0x00\n /* \"--CODEGEN--\":10285:10286 */\n dup1\n /* \"--CODEGEN--\":10278:10290 */\n revert\n /* \"--CODEGEN--\":10240:10242 */\n tag_563:\n /* \"--CODEGEN--\":10323:10354 */\n dup5\n calldataload\n /* \"--CODEGEN--\":10374:10392 */\n 0xffffffffffffffff\n /* \"--CODEGEN--\":10363:10393 */\n dup2\n gt\n /* \"--CODEGEN--\":10360:10362 */\n iszero\n tag_564\n jumpi\n /* \"--CODEGEN--\":10406:10407 */\n 0x00\n /* \"--CODEGEN--\":10403:10404 */\n dup1\n /* \"--CODEGEN--\":10396:10408 */\n revert\n /* \"--CODEGEN--\":10360:10362 */\n tag_564:\n /* \"--CODEGEN--\":10434:10499 */\n tag_565\n /* \"--CODEGEN--\":10491:10498 */\n dup8\n /* \"--CODEGEN--\":10482:10488 */\n dup3\n /* \"--CODEGEN--\":10471:10480 */\n dup9\n /* \"--CODEGEN--\":10467:10489 */\n add\n /* \"--CODEGEN--\":10434:10499 */\n jump(tag_480)\n tag_565:\n /* \"--CODEGEN--\":10424:10499 */\n swap5\n pop\n swap5\n pop\n /* \"--CODEGEN--\":10302:10505 */\n pop\n /* \"--CODEGEN--\":10564:10566 */\n 0x20\n /* \"--CODEGEN--\":10553:10562 */\n dup6\n /* \"--CODEGEN--\":10549:10567 */\n add\n /* \"--CODEGEN--\":10536:10568 */\n calldataload\n /* \"--CODEGEN--\":10588:10606 */\n 0xffffffffffffffff\n /* \"--CODEGEN--\":10580:10586 */\n dup2\n /* \"--CODEGEN--\":10577:10607 */\n gt\n /* \"--CODEGEN--\":10574:10576 */\n iszero\n tag_566\n jumpi\n /* \"--CODEGEN--\":10620:10621 */\n 0x00\n /* \"--CODEGEN--\":10617:10618 */\n dup1\n /* \"--CODEGEN--\":10610:10622 */\n revert\n /* \"--CODEGEN--\":10574:10576 */\n tag_566:\n /* \"--CODEGEN--\":10648:10713 */\n tag_567\n /* \"--CODEGEN--\":10705:10712 */\n dup8\n /* \"--CODEGEN--\":10696:10702 */\n dup3\n /* \"--CODEGEN--\":10685:10694 */\n dup9\n /* \"--CODEGEN--\":10681:10703 */\n add\n /* \"--CODEGEN--\":10648:10713 */\n jump(tag_480)\n tag_567:\n /* \"--CODEGEN--\":10234:10729 */\n swap6\n swap9\n swap5\n swap8\n pop\n /* \"--CODEGEN--\":10638:10713 */\n swap6\n pop\n pop\n pop\n pop\n /* \"--CODEGEN--\":10234:10729 */\n jump\n /* \"--CODEGEN--\":10736:11038 */\n tag_246:\n 0x00\n /* \"--CODEGEN--\":10870:10873 */\n 0x80\n /* \"--CODEGEN--\":10858:10867 */\n dup3\n /* \"--CODEGEN--\":10849:10856 */\n dup5\n /* \"--CODEGEN--\":10845:10868 */\n sub\n /* \"--CODEGEN--\":10841:10874 */\n slt\n /* \"--CODEGEN--\":10838:10840 */\n iszero\n tag_568\n jumpi\n /* \"--CODEGEN--\":10887:10888 */\n 0x00\n /* \"--CODEGEN--\":10884:10885 */\n dup1\n /* \"--CODEGEN--\":10877:10889 */\n revert\n /* \"--CODEGEN--\":10838:10840 */\n tag_568:\n /* \"--CODEGEN--\":10922:10923 */\n 0x00\n /* \"--CODEGEN--\":10939:11022 */\n tag_451\n /* \"--CODEGEN--\":11014:11021 */\n dup5\n /* \"--CODEGEN--\":10994:11003 */\n dup5\n /* \"--CODEGEN--\":10939:11022 */\n jump(tag_493)\n /* \"--CODEGEN--\":11293:11659 */\n tag_169:\n 0x00\n dup1\n /* \"--CODEGEN--\":11414:11416 */\n 0x40\n /* \"--CODEGEN--\":11402:11411 */\n dup4\n /* \"--CODEGEN--\":11393:11400 */\n dup6\n /* \"--CODEGEN--\":11389:11412 */\n sub\n /* \"--CODEGEN--\":11385:11417 */\n slt\n /* \"--CODEGEN--\":11382:11384 */\n iszero\n tag_572\n jumpi\n /* \"--CODEGEN--\":11430:11431 */\n 0x00\n /* \"--CODEGEN--\":11427:11428 */\n dup1\n /* \"--CODEGEN--\":11420:11432 */\n revert\n /* \"--CODEGEN--\":11382:11384 */\n tag_572:\n /* \"--CODEGEN--\":11465:11466 */\n 0x00\n /* \"--CODEGEN--\":11482:11535 */\n tag_547\n /* \"--CODEGEN--\":11527:11534 */\n dup6\n /* \"--CODEGEN--\":11507:11516 */\n dup6\n /* \"--CODEGEN--\":11482:11535 */\n jump(tag_472)\n /* \"--CODEGEN--\":11666:11808 */\n tag_575:\n /* \"--CODEGEN--\":11757:11802 */\n tag_576\n /* \"--CODEGEN--\":11796:11801 */\n dup2\n /* \"--CODEGEN--\":11757:11802 */\n jump(tag_577)\n tag_576:\n /* \"--CODEGEN--\":11752:11755 */\n dup3\n /* \"--CODEGEN--\":11745:11803 */\n mstore\n /* \"--CODEGEN--\":11739:11808 */\n pop\n pop\n jump\n /* \"--CODEGEN--\":11815:11928 */\n tag_578:\n /* \"--CODEGEN--\":11898:11922 */\n tag_576\n /* \"--CODEGEN--\":11916:11921 */\n dup2\n /* \"--CODEGEN--\":11898:11922 */\n jump(tag_580)\n /* \"--CODEGEN--\":11935:12087 */\n tag_581:\n /* \"--CODEGEN--\":12036:12081 */\n tag_576\n /* \"--CODEGEN--\":12056:12080 */\n tag_583\n /* \"--CODEGEN--\":12074:12079 */\n dup3\n /* \"--CODEGEN--\":12056:12080 */\n jump(tag_580)\n tag_583:\n /* \"--CODEGEN--\":12036:12081 */\n jump(tag_584)\n /* \"--CODEGEN--\":12094:12198 */\n tag_585:\n /* \"--CODEGEN--\":12171:12192 */\n tag_576\n /* \"--CODEGEN--\":12186:12191 */\n dup2\n /* \"--CODEGEN--\":12171:12192 */\n jump(tag_587)\n /* \"--CODEGEN--\":12205:12345 */\n tag_588:\n /* \"--CODEGEN--\":12300:12339 */\n tag_576\n /* \"--CODEGEN--\":12317:12338 */\n tag_590\n /* \"--CODEGEN--\":12332:12337 */\n dup3\n /* \"--CODEGEN--\":12317:12338 */\n jump(tag_587)\n tag_590:\n /* \"--CODEGEN--\":12300:12339 */\n jump(tag_591)\n /* \"--CODEGEN--\":12352:12465 */\n tag_592:\n /* \"--CODEGEN--\":12435:12459 */\n tag_576\n /* \"--CODEGEN--\":12453:12458 */\n dup2\n /* \"--CODEGEN--\":12435:12459 */\n jump(tag_215)\n /* \"--CODEGEN--\":12472:12624 */\n tag_595:\n /* \"--CODEGEN--\":12573:12618 */\n tag_576\n /* \"--CODEGEN--\":12593:12617 */\n tag_597\n /* \"--CODEGEN--\":12611:12616 */\n dup3\n /* \"--CODEGEN--\":12593:12617 */\n jump(tag_215)\n tag_597:\n /* \"--CODEGEN--\":12573:12618 */\n jump(tag_215)\n /* \"--CODEGEN--\":12631:12974 */\n tag_599:\n 0x00\n /* \"--CODEGEN--\":12741:12779 */\n tag_600\n /* \"--CODEGEN--\":12773:12778 */\n dup3\n /* \"--CODEGEN--\":12741:12779 */\n jump(tag_601)\n tag_600:\n /* \"--CODEGEN--\":12791:12861 */\n tag_602\n /* \"--CODEGEN--\":12854:12860 */\n dup2\n /* \"--CODEGEN--\":12849:12852 */\n dup6\n /* \"--CODEGEN--\":12791:12861 */\n jump(tag_603)\n tag_602:\n /* \"--CODEGEN--\":12784:12861 */\n swap4\n pop\n /* \"--CODEGEN--\":12866:12918 */\n tag_604\n /* \"--CODEGEN--\":12911:12917 */\n dup2\n /* \"--CODEGEN--\":12906:12909 */\n dup6\n /* \"--CODEGEN--\":12899:12903 */\n 0x20\n /* \"--CODEGEN--\":12892:12897 */\n dup7\n /* \"--CODEGEN--\":12888:12904 */\n add\n /* \"--CODEGEN--\":12866:12918 */\n jump(tag_605)\n tag_604:\n /* \"--CODEGEN--\":12939:12968 */\n tag_606\n /* \"--CODEGEN--\":12961:12967 */\n dup2\n /* \"--CODEGEN--\":12939:12968 */\n jump(tag_607)\n tag_606:\n /* \"--CODEGEN--\":12930:12969 */\n swap1\n swap4\n add\n swap4\n /* \"--CODEGEN--\":12721:12974 */\n swap3\n pop\n pop\n pop\n jump\n /* \"--CODEGEN--\":13335:13695 */\n tag_615:\n 0x00\n /* \"--CODEGEN--\":13465:13504 */\n tag_616\n /* \"--CODEGEN--\":13498:13503 */\n dup3\n /* \"--CODEGEN--\":13465:13504 */\n jump(tag_601)\n tag_616:\n /* \"--CODEGEN--\":13516:13605 */\n tag_617\n /* \"--CODEGEN--\":13598:13604 */\n dup2\n /* \"--CODEGEN--\":13593:13596 */\n dup6\n /* \"--CODEGEN--\":13516:13605 */\n jump(tag_190)\n tag_617:\n /* \"--CODEGEN--\":13509:13605 */\n swap4\n pop\n /* \"--CODEGEN--\":13610:13662 */\n tag_619\n /* \"--CODEGEN--\":13655:13661 */\n dup2\n /* \"--CODEGEN--\":13650:13653 */\n dup6\n /* \"--CODEGEN--\":13643:13647 */\n 0x20\n /* \"--CODEGEN--\":13636:13641 */\n dup7\n /* \"--CODEGEN--\":13632:13648 */\n add\n /* \"--CODEGEN--\":13610:13662 */\n jump(tag_605)\n tag_619:\n /* \"--CODEGEN--\":13674:13690 */\n swap3\n swap1\n swap3\n add\n swap3\n /* \"--CODEGEN--\":13445:13695 */\n swap2\n pop\n pop\n jump\n /* \"--CODEGEN--\":14073:14957 */\n tag_626:\n 0x00\n /* \"--CODEGEN--\":14210:14215 */\n dup2\n /* \"--CODEGEN--\":14204:14216 */\n sload\n /* \"--CODEGEN--\":14244:14245 */\n 0x01\n /* \"--CODEGEN--\":14233:14242 */\n dup2\n /* \"--CODEGEN--\":14229:14246 */\n and\n /* \"--CODEGEN--\":14257:14258 */\n 0x00\n /* \"--CODEGEN--\":14252:14520 */\n dup2\n eq\n tag_628\n jumpi\n /* \"--CODEGEN--\":14531:14532 */\n 0x01\n /* \"--CODEGEN--\":14526:14951 */\n dup2\n eq\n tag_629\n jumpi\n /* \"--CODEGEN--\":14222:14951 */\n jump(tag_627)\n /* \"--CODEGEN--\":14252:14520 */\n tag_628:\n /* \"--CODEGEN--\":14330:14334 */\n 0x7f\n /* \"--CODEGEN--\":14326:14327 */\n 0x02\n /* \"--CODEGEN--\":14315:14324 */\n dup4\n /* \"--CODEGEN--\":14311:14328 */\n div\n /* \"--CODEGEN--\":14307:14335 */\n and\n /* \"--CODEGEN--\":14349:14438 */\n tag_630\n /* \"--CODEGEN--\":14431:14437 */\n dup2\n /* \"--CODEGEN--\":14426:14429 */\n dup8\n /* \"--CODEGEN--\":14349:14438 */\n jump(tag_190)\n tag_630:\n not(0xff)\n /* \"--CODEGEN--\":14457:14482 */\n dup5\n and\n /* \"--CODEGEN--\":14445:14483 */\n dup2\n mstore\n /* \"--CODEGEN--\":14342:14438 */\n swap6\n pop\n /* \"--CODEGEN--\":14497:14513 */\n dup6\n add\n swap3\n pop\n /* \"--CODEGEN--\":14252:14520 */\n jump(tag_627)\n /* \"--CODEGEN--\":14526:14951 */\n tag_629:\n /* \"--CODEGEN--\":14595:14596 */\n 0x02\n /* \"--CODEGEN--\":14584:14593 */\n dup3\n /* \"--CODEGEN--\":14580:14597 */\n div\n /* \"--CODEGEN--\":14611:14700 */\n tag_631\n /* \"--CODEGEN--\":14693:14699 */\n dup2\n /* \"--CODEGEN--\":14688:14691 */\n dup8\n /* \"--CODEGEN--\":14611:14700 */\n jump(tag_190)\n tag_631:\n /* \"--CODEGEN--\":14604:14700 */\n swap6\n pop\n /* \"--CODEGEN--\":14722:14760 */\n tag_632\n /* \"--CODEGEN--\":14754:14759 */\n dup6\n /* \"--CODEGEN--\":14722:14760 */\n jump(tag_633)\n tag_632:\n /* \"--CODEGEN--\":14776:14777 */\n 0x00\n /* \"--CODEGEN--\":14784:14914 */\n tag_634:\n /* \"--CODEGEN--\":14798:14804 */\n dup3\n /* \"--CODEGEN--\":14795:14796 */\n dup2\n /* \"--CODEGEN--\":14792:14805 */\n lt\n /* \"--CODEGEN--\":14784:14914 */\n iszero\n tag_636\n jumpi\n /* \"--CODEGEN--\":14857:14871 */\n dup2\n sload\n /* \"--CODEGEN--\":14844:14855 */\n dup9\n dup3\n add\n /* \"--CODEGEN--\":14837:14872 */\n mstore\n /* \"--CODEGEN--\":14904:14905 */\n 0x01\n /* \"--CODEGEN--\":14891:14906 */\n swap1\n swap2\n add\n swap1\n /* \"--CODEGEN--\":14820:14824 */\n 0x20\n /* \"--CODEGEN--\":14813:14825 */\n add\n /* \"--CODEGEN--\":14784:14914 */\n jump(tag_634)\n tag_636:\n pop\n pop\n /* \"--CODEGEN--\":14928:14944 */\n dup6\n add\n swap3\n pop\n /* \"--CODEGEN--\":14222:14951 */\n tag_627:\n pop\n /* \"--CODEGEN--\":14180:14957 */\n pop\n swap3\n swap2\n pop\n pop\n jump\n /* \"--CODEGEN--\":14966:15366 */\n tag_637:\n 0x00\n /* \"--CODEGEN--\":15144:15229 */\n tag_638\n /* \"--CODEGEN--\":15226:15228 */\n 0x1c\n /* \"--CODEGEN--\":15221:15224 */\n dup4\n /* \"--CODEGEN--\":15144:15229 */\n jump(tag_190)\n tag_638:\n /* \"--CODEGEN--\":15262:15328 */\n 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000\n /* \"--CODEGEN--\":15242:15329 */\n dup2\n mstore\n /* \"--CODEGEN--\":15357:15359 */\n 0x1c\n /* \"--CODEGEN--\":15348:15360 */\n add\n swap3\n /* \"--CODEGEN--\":15130:15366 */\n swap2\n pop\n pop\n jump\n /* \"--CODEGEN--\":15375:15775 */\n tag_639:\n 0x00\n /* \"--CODEGEN--\":15553:15638 */\n tag_640\n /* \"--CODEGEN--\":15635:15637 */\n 0x1b\n /* \"--CODEGEN--\":15630:15633 */\n dup4\n /* \"--CODEGEN--\":15553:15638 */\n jump(tag_190)\n tag_640:\n /* \"--CODEGEN--\":15671:15737 */\n 0x19457468657265756d205369676e6564204d6573736167653a0a200000000000\n /* \"--CODEGEN--\":15651:15738 */\n dup2\n mstore\n /* \"--CODEGEN--\":15766:15768 */\n 0x1b\n /* \"--CODEGEN--\":15757:15769 */\n add\n swap3\n /* \"--CODEGEN--\":15539:15775 */\n swap2\n pop\n pop\n jump\n /* \"--CODEGEN--\":16062:16169 */\n tag_648:\n /* \"--CODEGEN--\":16141:16163 */\n tag_576\n /* \"--CODEGEN--\":16157:16162 */\n dup2\n /* \"--CODEGEN--\":16141:16163 */\n jump(tag_650)\n /* \"--CODEGEN--\":16176:17380 */\n tag_272:\n 0x00\n /* \"--CODEGEN--\":16485:16560 */\n tag_651\n /* \"--CODEGEN--\":16556:16559 */\n dup3\n /* \"--CODEGEN--\":16547:16553 */\n dup12\n /* \"--CODEGEN--\":16485:16560 */\n jump(tag_581)\n tag_651:\n /* \"--CODEGEN--\":16582:16584 */\n 0x14\n /* \"--CODEGEN--\":16577:16580 */\n dup3\n /* \"--CODEGEN--\":16573:16585 */\n add\n /* \"--CODEGEN--\":16566:16585 */\n swap2\n pop\n /* \"--CODEGEN--\":16596:16671 */\n tag_652\n /* \"--CODEGEN--\":16667:16670 */\n dup3\n /* \"--CODEGEN--\":16658:16664 */\n dup11\n /* \"--CODEGEN--\":16596:16671 */\n jump(tag_581)\n tag_652:\n /* \"--CODEGEN--\":16693:16695 */\n 0x14\n /* \"--CODEGEN--\":16688:16691 */\n dup3\n /* \"--CODEGEN--\":16684:16696 */\n add\n /* \"--CODEGEN--\":16677:16696 */\n swap2\n pop\n /* \"--CODEGEN--\":16707:16782 */\n tag_653\n /* \"--CODEGEN--\":16778:16781 */\n dup3\n /* \"--CODEGEN--\":16769:16775 */\n dup10\n /* \"--CODEGEN--\":16707:16782 */\n jump(tag_581)\n tag_653:\n /* \"--CODEGEN--\":16804:16806 */\n 0x14\n /* \"--CODEGEN--\":16799:16802 */\n dup3\n /* \"--CODEGEN--\":16795:16807 */\n add\n /* \"--CODEGEN--\":16788:16807 */\n swap2\n pop\n /* \"--CODEGEN--\":16818:16887 */\n tag_654\n /* \"--CODEGEN--\":16883:16886 */\n dup3\n /* \"--CODEGEN--\":16874:16880 */\n dup9\n /* \"--CODEGEN--\":16818:16887 */\n jump(tag_588)\n tag_654:\n /* \"--CODEGEN--\":16909:16910 */\n 0x01\n /* \"--CODEGEN--\":16904:16907 */\n dup3\n /* \"--CODEGEN--\":16900:16911 */\n add\n /* \"--CODEGEN--\":16893:16911 */\n swap2\n pop\n /* \"--CODEGEN--\":16922:16997 */\n tag_655\n /* \"--CODEGEN--\":16993:16996 */\n dup3\n /* \"--CODEGEN--\":16984:16990 */\n dup8\n /* \"--CODEGEN--\":16922:16997 */\n jump(tag_581)\n tag_655:\n /* \"--CODEGEN--\":17019:17021 */\n 0x14\n /* \"--CODEGEN--\":17014:17017 */\n dup3\n /* \"--CODEGEN--\":17010:17022 */\n add\n /* \"--CODEGEN--\":17003:17022 */\n swap2\n pop\n /* \"--CODEGEN--\":17033:17108 */\n tag_656\n /* \"--CODEGEN--\":17104:17107 */\n dup3\n /* \"--CODEGEN--\":17095:17101 */\n dup7\n /* \"--CODEGEN--\":17033:17108 */\n jump(tag_595)\n tag_656:\n /* \"--CODEGEN--\":17130:17132 */\n 0x20\n /* \"--CODEGEN--\":17125:17128 */\n dup3\n /* \"--CODEGEN--\":17121:17133 */\n add\n /* \"--CODEGEN--\":17114:17133 */\n swap2\n pop\n /* \"--CODEGEN--\":17144:17219 */\n tag_657\n /* \"--CODEGEN--\":17215:17218 */\n dup3\n /* \"--CODEGEN--\":17206:17212 */\n dup6\n /* \"--CODEGEN--\":17144:17219 */\n jump(tag_595)\n tag_657:\n /* \"--CODEGEN--\":17241:17243 */\n 0x20\n /* \"--CODEGEN--\":17236:17239 */\n dup3\n /* \"--CODEGEN--\":17232:17244 */\n add\n /* \"--CODEGEN--\":17225:17244 */\n swap2\n pop\n /* \"--CODEGEN--\":17255:17330 */\n tag_658\n /* \"--CODEGEN--\":17326:17329 */\n dup3\n /* \"--CODEGEN--\":17317:17323 */\n dup5\n /* \"--CODEGEN--\":17255:17330 */\n jump(tag_595)\n tag_658:\n pop\n /* \"--CODEGEN--\":17352:17354 */\n 0x20\n /* \"--CODEGEN--\":17343:17355 */\n add\n swap9\n /* \"--CODEGEN--\":16473:17380 */\n swap8\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\n /* \"--CODEGEN--\":17387:17808 */\n tag_364:\n 0x00\n /* \"--CODEGEN--\":17578:17673 */\n tag_659\n /* \"--CODEGEN--\":17669:17672 */\n dup3\n /* \"--CODEGEN--\":17660:17666 */\n dup6\n /* \"--CODEGEN--\":17578:17673 */\n jump(tag_615)\n tag_659:\n /* \"--CODEGEN--\":17571:17673 */\n swap2\n pop\n /* \"--CODEGEN--\":17691:17783 */\n tag_451\n /* \"--CODEGEN--\":17779:17782 */\n dup3\n /* \"--CODEGEN--\":17770:17776 */\n dup5\n /* \"--CODEGEN--\":17691:17783 */\n jump(tag_626)\n /* \"--CODEGEN--\":17815:18236 */\n tag_361:\n 0x00\n /* \"--CODEGEN--\":18006:18098 */\n tag_661\n /* \"--CODEGEN--\":18094:18097 */\n dup3\n /* \"--CODEGEN--\":18085:18091 */\n dup6\n /* \"--CODEGEN--\":18006:18098 */\n jump(tag_626)\n tag_661:\n /* \"--CODEGEN--\":17999:18098 */\n swap2\n pop\n /* \"--CODEGEN--\":18116:18211 */\n tag_451\n /* \"--CODEGEN--\":18207:18210 */\n dup3\n /* \"--CODEGEN--\":18198:18204 */\n dup5\n /* \"--CODEGEN--\":18116:18211 */\n jump(tag_615)\n /* \"--CODEGEN--\":18243:18754 */\n tag_286:\n 0x00\n /* \"--CODEGEN--\":18470:18618 */\n tag_663\n /* \"--CODEGEN--\":18614:18617 */\n dup3\n /* \"--CODEGEN--\":18470:18618 */\n jump(tag_637)\n tag_663:\n /* \"--CODEGEN--\":18463:18618 */\n swap2\n pop\n /* \"--CODEGEN--\":18629:18704 */\n tag_664\n /* \"--CODEGEN--\":18700:18703 */\n dup3\n /* \"--CODEGEN--\":18691:18697 */\n dup5\n /* \"--CODEGEN--\":18629:18704 */\n jump(tag_595)\n tag_664:\n pop\n /* \"--CODEGEN--\":18726:18728 */\n 0x20\n /* \"--CODEGEN--\":18717:18729 */\n add\n swap2\n /* \"--CODEGEN--\":18451:18754 */\n swap1\n pop\n jump\n /* \"--CODEGEN--\":18761:19272 */\n tag_295:\n 0x00\n /* \"--CODEGEN--\":18988:19136 */\n tag_663\n /* \"--CODEGEN--\":19132:19135 */\n dup3\n /* \"--CODEGEN--\":18988:19136 */\n jump(tag_639)\n /* \"--CODEGEN--\":19279:19492 */\n tag_65:\n /* \"--CODEGEN--\":19397:19399 */\n 0x20\n /* \"--CODEGEN--\":19382:19400 */\n dup2\n add\n /* \"--CODEGEN--\":19411:19482 */\n tag_229\n /* \"--CODEGEN--\":19386:19395 */\n dup3\n /* \"--CODEGEN--\":19455:19461 */\n dup5\n /* \"--CODEGEN--\":19411:19482 */\n jump(tag_578)\n /* \"--CODEGEN--\":19499:20146 */\n tag_400:\n /* \"--CODEGEN--\":19727:19730 */\n 0x80\n /* \"--CODEGEN--\":19712:19731 */\n dup2\n add\n /* \"--CODEGEN--\":19742:19821 */\n tag_668\n /* \"--CODEGEN--\":19716:19725 */\n dup3\n /* \"--CODEGEN--\":19794:19800 */\n dup8\n /* \"--CODEGEN--\":19742:19821 */\n jump(tag_575)\n tag_668:\n /* \"--CODEGEN--\":19832:19904 */\n tag_669\n /* \"--CODEGEN--\":19900:19902 */\n 0x20\n /* \"--CODEGEN--\":19889:19898 */\n dup4\n /* \"--CODEGEN--\":19885:19903 */\n add\n /* \"--CODEGEN--\":19876:19882 */\n dup7\n /* \"--CODEGEN--\":19832:19904 */\n jump(tag_578)\n tag_669:\n /* \"--CODEGEN--\":19915:19987 */\n tag_670\n /* \"--CODEGEN--\":19983:19985 */\n 0x40\n /* \"--CODEGEN--\":19972:19981 */\n dup4\n /* \"--CODEGEN--\":19968:19986 */\n add\n /* \"--CODEGEN--\":19959:19965 */\n dup6\n /* \"--CODEGEN--\":19915:19987 */\n jump(tag_592)\n tag_670:\n /* \"--CODEGEN--\":20035:20044 */\n dup2\n /* \"--CODEGEN--\":20029:20033 */\n dup2\n /* \"--CODEGEN--\":20025:20045 */\n sub\n /* \"--CODEGEN--\":20020:20022 */\n 0x60\n /* \"--CODEGEN--\":20009:20018 */\n dup4\n /* \"--CODEGEN--\":20005:20023 */\n add\n /* \"--CODEGEN--\":19998:20046 */\n mstore\n /* \"--CODEGEN--\":20060:20136 */\n tag_671\n /* \"--CODEGEN--\":20131:20135 */\n dup2\n /* \"--CODEGEN--\":20122:20128 */\n dup5\n /* \"--CODEGEN--\":20060:20136 */\n jump(tag_599)\n tag_671:\n /* \"--CODEGEN--\":20052:20136 */\n swap7\n /* \"--CODEGEN--\":19698:20146 */\n swap6\n pop\n pop\n pop\n pop\n pop\n pop\n jump\n /* \"--CODEGEN--\":20153:20604 */\n tag_254:\n /* \"--CODEGEN--\":20335:20337 */\n 0x60\n /* \"--CODEGEN--\":20320:20338 */\n dup2\n add\n /* \"--CODEGEN--\":20349:20420 */\n tag_672\n /* \"--CODEGEN--\":20324:20333 */\n dup3\n /* \"--CODEGEN--\":20393:20399 */\n dup7\n /* \"--CODEGEN--\":20349:20420 */\n jump(tag_578)\n tag_672:\n /* \"--CODEGEN--\":20431:20511 */\n tag_673\n /* \"--CODEGEN--\":20507:20509 */\n 0x20\n /* \"--CODEGEN--\":20496:20505 */\n dup4\n /* \"--CODEGEN--\":20492:20510 */\n add\n /* \"--CODEGEN--\":20483:20489 */\n dup6\n /* \"--CODEGEN--\":20431:20511 */\n jump(tag_575)\n tag_673:\n /* \"--CODEGEN--\":20522:20594 */\n tag_451\n /* \"--CODEGEN--\":20590:20592 */\n 0x40\n /* \"--CODEGEN--\":20579:20588 */\n dup4\n /* \"--CODEGEN--\":20575:20593 */\n add\n /* \"--CODEGEN--\":20566:20572 */\n dup5\n /* \"--CODEGEN--\":20522:20594 */\n jump(tag_592)\n /* \"--CODEGEN--\":20611:20812 */\n tag_51:\n /* \"--CODEGEN--\":20723:20725 */\n 0x20\n /* \"--CODEGEN--\":20708:20726 */\n dup2\n add\n /* \"--CODEGEN--\":20737:20802 */\n tag_229\n /* \"--CODEGEN--\":20712:20721 */\n dup3\n /* \"--CODEGEN--\":20775:20781 */\n dup5\n /* \"--CODEGEN--\":20737:20802 */\n jump(tag_585)\n /* \"--CODEGEN--\":20819:21032 */\n tag_59:\n /* \"--CODEGEN--\":20937:20939 */\n 0x20\n /* \"--CODEGEN--\":20922:20940 */\n dup2\n add\n /* \"--CODEGEN--\":20951:21022 */\n tag_229\n /* \"--CODEGEN--\":20926:20935 */\n dup3\n /* \"--CODEGEN--\":20995:21001 */\n dup5\n /* \"--CODEGEN--\":20951:21022 */\n jump(tag_592)\n /* \"--CODEGEN--\":21039:21578 */\n tag_288:\n /* \"--CODEGEN--\":21237:21240 */\n 0x80\n /* \"--CODEGEN--\":21222:21241 */\n dup2\n add\n /* \"--CODEGEN--\":21252:21323 */\n tag_677\n /* \"--CODEGEN--\":21226:21235 */\n dup3\n /* \"--CODEGEN--\":21296:21302 */\n dup8\n /* \"--CODEGEN--\":21252:21323 */\n jump(tag_592)\n tag_677:\n /* \"--CODEGEN--\":21334:21402 */\n tag_678\n /* \"--CODEGEN--\":21398:21400 */\n 0x20\n /* \"--CODEGEN--\":21387:21396 */\n dup4\n /* \"--CODEGEN--\":21383:21401 */\n add\n /* \"--CODEGEN--\":21374:21380 */\n dup7\n /* \"--CODEGEN--\":21334:21402 */\n jump(tag_648)\n tag_678:\n /* \"--CODEGEN--\":21413:21485 */\n tag_679\n /* \"--CODEGEN--\":21481:21483 */\n 0x40\n /* \"--CODEGEN--\":21470:21479 */\n dup4\n /* \"--CODEGEN--\":21466:21484 */\n add\n /* \"--CODEGEN--\":21457:21463 */\n dup6\n /* \"--CODEGEN--\":21413:21485 */\n jump(tag_592)\n tag_679:\n /* \"--CODEGEN--\":21496:21568 */\n tag_680\n /* \"--CODEGEN--\":21564:21566 */\n 0x60\n /* \"--CODEGEN--\":21553:21562 */\n dup4\n /* \"--CODEGEN--\":21549:21567 */\n add\n /* \"--CODEGEN--\":21540:21546 */\n dup5\n /* \"--CODEGEN--\":21496:21568 */\n jump(tag_592)\n tag_680:\n /* \"--CODEGEN--\":21208:21578 */\n swap6\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\n /* \"--CODEGEN--\":21585:21878 */\n tag_115:\n /* \"--CODEGEN--\":21719:21721 */\n 0x20\n /* \"--CODEGEN--\":21733:21780 */\n dup1\n dup3\n mstore\n /* \"--CODEGEN--\":21704:21722 */\n dup2\n add\n /* \"--CODEGEN--\":21794:21868 */\n tag_281\n /* \"--CODEGEN--\":21704:21722 */\n dup2\n /* \"--CODEGEN--\":21854:21860 */\n dup5\n /* \"--CODEGEN--\":21794:21868 */\n jump(tag_599)\n /* \"--CODEGEN--\":22413:22669 */\n tag_496:\n /* \"--CODEGEN--\":22475:22477 */\n 0x40\n /* \"--CODEGEN--\":22469:22478 */\n mload\n /* \"--CODEGEN--\":22501:22518 */\n dup2\n dup2\n add\n /* \"--CODEGEN--\":22576:22594 */\n 0xffffffffffffffff\n /* \"--CODEGEN--\":22561:22595 */\n dup2\n gt\n /* \"--CODEGEN--\":22597:22619 */\n dup3\n dup3\n lt\n /* \"--CODEGEN--\":22558:22620 */\n or\n /* \"--CODEGEN--\":22555:22557 */\n iszero\n tag_684\n jumpi\n /* \"--CODEGEN--\":22633:22634 */\n 0x00\n /* \"--CODEGEN--\":22630:22631 */\n dup1\n /* \"--CODEGEN--\":22623:22635 */\n revert\n /* \"--CODEGEN--\":22555:22557 */\n tag_684:\n /* \"--CODEGEN--\":22649:22651 */\n 0x40\n /* \"--CODEGEN--\":22642:22664 */\n mstore\n /* \"--CODEGEN--\":22453:22669 */\n swap2\n swap1\n pop\n jump\n /* \"--CODEGEN--\":22676:22834 */\n tag_633:\n 0x00\n /* \"--CODEGEN--\":22771:22785 */\n swap1\n dup2\n mstore\n /* \"--CODEGEN--\":22813:22817 */\n 0x20\n /* \"--CODEGEN--\":22800:22818 */\n swap1\n keccak256\n swap1\n /* \"--CODEGEN--\":22730:22834 */\n jump\n /* \"--CODEGEN--\":22841:22962 */\n tag_601:\n /* \"--CODEGEN--\":22928:22940 */\n mload\n swap1\n /* \"--CODEGEN--\":22899:22962 */\n jump\n /* \"--CODEGEN--\":23224:23386 */\n tag_603:\n /* \"--CODEGEN--\":23326:23345 */\n swap1\n dup2\n mstore\n /* \"--CODEGEN--\":23375:23379 */\n 0x20\n /* \"--CODEGEN--\":23366:23380 */\n add\n swap1\n /* \"--CODEGEN--\":23319:23386 */\n jump\n /* \"--CODEGEN--\":23720:23811 */\n tag_580:\n 0x00\n /* \"--CODEGEN--\":23782:23806 */\n tag_229\n /* \"--CODEGEN--\":23800:23805 */\n dup3\n /* \"--CODEGEN--\":23782:23806 */\n jump(tag_686)\n /* \"--CODEGEN--\":23818:23903 */\n tag_587:\n /* \"--CODEGEN--\":23884:23897 */\n iszero\n /* \"--CODEGEN--\":23877:23898 */\n iszero\n swap1\n /* \"--CODEGEN--\":23860:23903 */\n jump\n /* \"--CODEGEN--\":23989:24133 */\n tag_687:\n not(sub(shl(0xe0, 0x01), 0x01))\n /* \"--CODEGEN--\":24050:24128 */\n and\n swap1\n /* \"--CODEGEN--\":24033:24133 */\n jump\n /* \"--CODEGEN--\":24140:24261 */\n tag_686:\n sub(shl(0xa0, 0x01), 0x01)\n /* \"--CODEGEN--\":24202:24256 */\n and\n swap1\n /* \"--CODEGEN--\":24185:24261 */\n jump\n /* \"--CODEGEN--\":24347:24428 */\n tag_650:\n /* \"--CODEGEN--\":24418:24422 */\n 0xff\n /* \"--CODEGEN--\":24407:24423 */\n and\n swap1\n /* \"--CODEGEN--\":24390:24428 */\n jump\n /* \"--CODEGEN--\":24435:24564 */\n tag_577:\n 0x00\n /* \"--CODEGEN--\":24522:24559 */\n tag_229\n /* \"--CODEGEN--\":24553:24558 */\n dup3\n /* \"--CODEGEN--\":24571:24692 */\n 0x00\n /* \"--CODEGEN--\":24650:24687 */\n tag_229\n /* \"--CODEGEN--\":24681:24686 */\n dup3\n /* \"--CODEGEN--\":24650:24687 */\n jump(tag_580)\n /* \"--CODEGEN--\":24815:25083 */\n tag_605:\n /* \"--CODEGEN--\":24880:24881 */\n 0x00\n /* \"--CODEGEN--\":24887:24988 */\n tag_693:\n /* \"--CODEGEN--\":24901:24907 */\n dup4\n /* \"--CODEGEN--\":24898:24899 */\n dup2\n /* \"--CODEGEN--\":24895:24908 */\n lt\n /* \"--CODEGEN--\":24887:24988 */\n iszero\n tag_695\n jumpi\n /* \"--CODEGEN--\":24968:24979 */\n dup2\n dup2\n add\n /* \"--CODEGEN--\":24962:24980 */\n mload\n /* \"--CODEGEN--\":24949:24960 */\n dup4\n dup3\n add\n /* \"--CODEGEN--\":24942:24981 */\n mstore\n /* \"--CODEGEN--\":24923:24925 */\n 0x20\n /* \"--CODEGEN--\":24916:24926 */\n add\n /* \"--CODEGEN--\":24887:24988 */\n jump(tag_693)\n tag_695:\n /* \"--CODEGEN--\":25003:25009 */\n dup4\n /* \"--CODEGEN--\":25000:25001 */\n dup2\n /* \"--CODEGEN--\":24997:25010 */\n gt\n /* \"--CODEGEN--\":24994:24996 */\n iszero\n tag_407\n jumpi\n pop\n pop\n /* \"--CODEGEN--\":25068:25069 */\n 0x00\n /* \"--CODEGEN--\":25050:25066 */\n swap2\n add\n /* \"--CODEGEN--\":25043:25070 */\n mstore\n /* \"--CODEGEN--\":24864:25083 */\n jump\n /* \"--CODEGEN--\":25091:25186 */\n tag_584:\n 0x00\n /* \"--CODEGEN--\":25155:25181 */\n tag_229\n /* \"--CODEGEN--\":25175:25180 */\n dup3\n /* \"--CODEGEN--\":25155:25181 */\n jump(tag_698)\n /* \"--CODEGEN--\":25193:25283 */\n tag_591:\n 0x00\n /* \"--CODEGEN--\":25254:25278 */\n tag_229\n /* \"--CODEGEN--\":25272:25277 */\n dup3\n /* \"--CODEGEN--\":25254:25278 */\n jump(tag_700)\n /* \"--CODEGEN--\":25371:25460 */\n tag_698:\n 0x00\n /* \"--CODEGEN--\":25435:25455 */\n tag_229\n /* \"--CODEGEN--\":25449:25454 */\n dup3\n /* \"--CODEGEN--\":25435:25455 */\n jump(tag_702)\n /* \"--CODEGEN--\":25548:25636 */\n tag_700:\n 0x00\n /* \"--CODEGEN--\":25610:25631 */\n tag_229\n /* \"--CODEGEN--\":25625:25630 */\n dup3\n /* \"--CODEGEN--\":25610:25631 */\n jump(tag_704)\n /* \"--CODEGEN--\":25643:25740 */\n tag_607:\n /* \"--CODEGEN--\":25731:25733 */\n 0x1f\n /* \"--CODEGEN--\":25711:25725 */\n add\n not(0x1f)\n /* \"--CODEGEN--\":25707:25735 */\n and\n swap1\n /* \"--CODEGEN--\":25691:25740 */\n jump\n /* \"--CODEGEN--\":25748:25844 */\n tag_704:\n /* \"--CODEGEN--\":25823:25826 */\n 0xf8\n /* \"--CODEGEN--\":25819:25834 */\n shl\n swap1\n /* \"--CODEGEN--\":25791:25844 */\n jump\n /* \"--CODEGEN--\":25852:25946 */\n tag_702:\n /* \"--CODEGEN--\":25926:25928 */\n 0x60\n /* \"--CODEGEN--\":25922:25936 */\n shl\n swap1\n /* \"--CODEGEN--\":25894:25946 */\n jump\n /* \"--CODEGEN--\":25954:26071 */\n tag_466:\n /* \"--CODEGEN--\":26023:26047 */\n tag_705\n /* \"--CODEGEN--\":26041:26046 */\n dup2\n /* \"--CODEGEN--\":26023:26047 */\n jump(tag_580)\n tag_705:\n /* \"--CODEGEN--\":26016:26021 */\n dup2\n /* \"--CODEGEN--\":26013:26048 */\n eq\n /* \"--CODEGEN--\":26003:26005 */\n tag_706\n jumpi\n /* \"--CODEGEN--\":26062:26063 */\n 0x00\n /* \"--CODEGEN--\":26059:26060 */\n dup1\n /* \"--CODEGEN--\":26052:26064 */\n revert\n /* \"--CODEGEN--\":26003:26005 */\n tag_706:\n /* \"--CODEGEN--\":25997:26071 */\n pop\n jump\n /* \"--CODEGEN--\":26078:26189 */\n tag_469:\n /* \"--CODEGEN--\":26144:26165 */\n tag_705\n /* \"--CODEGEN--\":26159:26164 */\n dup2\n /* \"--CODEGEN--\":26144:26165 */\n jump(tag_587)\n /* \"--CODEGEN--\":26196:26313 */\n tag_474:\n /* \"--CODEGEN--\":26265:26289 */\n tag_705\n /* \"--CODEGEN--\":26283:26288 */\n dup2\n /* \"--CODEGEN--\":26265:26289 */\n jump(tag_215)\n /* \"--CODEGEN--\":26320:26435 */\n tag_477:\n /* \"--CODEGEN--\":26388:26411 */\n tag_705\n /* \"--CODEGEN--\":26405:26410 */\n dup2\n /* \"--CODEGEN--\":26388:26411 */\n jump(tag_687)\n /* \"--CODEGEN--\":26442:26553 */\n tag_486:\n /* \"--CODEGEN--\":26528:26529 */\n 0x03\n /* \"--CODEGEN--\":26521:26526 */\n dup2\n /* \"--CODEGEN--\":26518:26530 */\n lt\n /* \"--CODEGEN--\":26508:26510 */\n tag_706\n jumpi\n /* \"--CODEGEN--\":26544:26545 */\n 0x00\n /* \"--CODEGEN--\":26541:26542 */\n dup1\n /* \"--CODEGEN--\":26534:26546 */\n revert\n /* \"--CODEGEN--\":26684:26797 */\n tag_506:\n /* \"--CODEGEN--\":26751:26773 */\n tag_705\n /* \"--CODEGEN--\":26767:26772 */\n dup2\n /* \"--CODEGEN--\":26751:26773 */\n jump(tag_650)\n\n auxdata: 0xa365627a7a7231582038c0ea1e74573d8907e33ffd22d139f5947abfe1a5cbbfd06742379166e6a60d6c6578706572696d656e74616cf564736f6c634300050b0040\n}\n",
"bytecode": {
"linkReferences": {},
"object": "60806040523480156200001157600080fd5b5060405162003388380380620033888339810160408190526200003491620003d7565b7f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c58054600160ff1991821681179092557ff7815fccbf112960a73756e185887fedcb9fc64ca0a16cc5923b7960ed78080080548216831790557f9562381dfbc2d8b8b66e765249f330164b73e329e5f01670660643571d1974df80548216831790557f77b7bbe0e49b76487c9476b5db3354cf5270619d0037ccb899c2a4c4a75b43188054821683179055336000908152600c602090815260408220600f90557f4ecc17d10000000000000000000000000000000000000000000000000000000082529081527fb779c54ae4c108ce5b4b652d22d801adf25f71e5a1e8a47e47311c80e3cfd79080549092168317909155875162000156929189019062000233565b5084516200016c90600290602088019062000233565b5083516200018290600390602087019062000233565b5082516200019890600490602086019062000233565b50600e82905560005b815181101562000211576001600080848481518110620001bd57fe5b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000168252810191909152604001600020805460ff1916911515919091179055600101620001a1565b5050336000908152600c602052604090206107ff905550620005cf9350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200027657805160ff1916838001178555620002a6565b82800160010185558215620002a6579182015b82811115620002a657825182559160200191906001019062000289565b50620002b4929150620002b8565b5090565b620002d591905b80821115620002b45760008155600101620002bf565b90565b600082601f830112620002ea57600080fd5b815162000301620002fb8262000509565b620004e2565b915081818352602084019350602081019050838560208402820111156200032757600080fd5b60005b8381101562000357578162000340888262000374565b84525060209283019291909101906001016200032a565b5050505092915050565b80516200036e81620005aa565b92915050565b80516200036e81620005c4565b600082601f8301126200039357600080fd5b8151620003a4620002fb826200052a565b91508082526020830160208301858383011115620003c157600080fd5b620003ce83828462000577565b50505092915050565b60008060008060008060c08789031215620003f157600080fd5b86516001600160401b038111156200040857600080fd5b6200041689828a0162000381565b96505060208701516001600160401b038111156200043357600080fd5b6200044189828a0162000381565b95505060408701516001600160401b038111156200045e57600080fd5b6200046c89828a0162000381565b94505060608701516001600160401b038111156200048957600080fd5b6200049789828a0162000381565b9350506080620004aa89828a0162000361565b92505060a08701516001600160401b03811115620004c757600080fd5b620004d589828a01620002d8565b9150509295509295509295565b6040518181016001600160401b03811182821017156200050157600080fd5b604052919050565b60006001600160401b038211156200052057600080fd5b5060209081020190565b60006001600160401b038211156200054157600080fd5b506020601f91909101601f19160190565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b60005b83811015620005945781810151838201526020016200057a565b83811115620005a4576000848401525b50505050565b620005b581620002d5565b8114620005c157600080fd5b50565b620005b58162000552565b612da980620005df6000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c806370a0823111610125578063b187bd26116100ad578063bedb86fb1161007c578063bedb86fb1461046b578063c298bba51461047e578063c87b56dd14610486578063e985e9c514610499578063f394b6df146104ac5761021c565b8063b187bd261461042a578063b88d4fde14610432578063ba00a33014610445578063bda0e852146104585761021c565b80638fa76d8d116100f45780638fa76d8d146103d657806395d89b41146103e95780639d118770146103f1578063a22cb46514610404578063b0e329e4146104175761021c565b806370a082311461038a57806370c31afc1461039d5780638933c670146103b057806389b73ec0146103c35761021c565b806323b872dd116101a857806345a32c861161017757806345a32c86146103365780634f6ccce714610349578063568f5b481461035c57806362b99ad41461036f5780636352211e146103775761021c565b806323b872dd146102ea57806323bf3396146102fd5780632f745c591461031057806342842e0e146103235761021c565b8063095ea7b3116101ef578063095ea7b3146102945780630ab319e8146102a957806315ec3b8b146102bc57806318160ddd146102cf57806320c5429b146102d75761021c565b806301ffc9a71461022157806306fdde031461024a578063075b1a091461025f578063081812fc14610274575b600080fd5b61023461022f3660046127b5565b6104bf565b6040516102419190612bc5565b60405180910390f35b6102526104e2565b6040516102419190612c1f565b610267610577565b6040516102419190612bd3565b610287610282366004612797565b61057d565b6040516102419190612b4b565b6102a76102a23660046126f9565b6105f9565b005b6102a76102b73660046126f9565b6106dc565b6102a76102ca3660046126f9565b610798565b61026761084e565b6102a76102e5366004612797565b610855565b6102a76102f83660046125bb565b61094e565b61023461030b366004612797565b61095e565b61026761031e3660046126f9565b610973565b6102a76103313660046125bb565b610a05565b610267610344366004612417565b610a20565b610267610357366004612797565b610a32565b6102a761036a36600461250b565b610a94565b610252610ca6565b610287610385366004612797565b610d34565b610267610398366004612417565b610d92565b6102676103ab366004612797565b610df6565b6102676103be36600461246f565b610e08565b6102a76103d13660046127f1565b610e4c565b6102346103e43660046126b6565b610f35565b610252611097565b6102a76103ff366004612797565b6110f5565b6102a7610412366004612686565b611214565b6102a7610425366004612729565b611283565b61023461130f565b6102a7610440366004612608565b611318565b6102346104533660046126f9565b61135a565b6102a761046636600461287f565b6113bf565b6102a761047936600461275b565b611548565b610252611670565b610252610494366004612797565b6116cb565b6102346104a7366004612435565b6117c5565b6102a76104ba3660046126f9565b6117f3565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60018054604080516020601f6002600019610100878916150201909516949094049384018190048102820181019092528281526060939092909183018282801561056d5780601f106105425761010080835404028352916020019161056d565b820191906000526020600020905b81548152906001019060200180831161055057829003601f168201915b5050505050905090565b600e5490565b6000818152600960209081526040808320548151808301909252600682526518181b18181960d11b92820192909252906001600160a01b03166105dc5760405162461bcd60e51b81526004016105d39190612c1f565b60405180910390fd5b50506000908152600a60205260409020546001600160a01b031690565b6000818152600960205260409020546001600160a01b03163381148061064257506001600160a01b0381166000908152600b6020908152604080832033845290915290205460ff165b6040518060400160405280600681526020016530303630303360d01b8152509061067f5760405162461bcd60e51b81526004016105d39190612c1f565b506000828152600a602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60408051808201825260068082526518189b98181960d11b602092830152336000908152600c83528390205483518085019094529083526530313730303160d01b9183019190915260019190821682146107495760405162461bcd60e51b81526004016105d39190612c1f565b506001600160a01b0383166000818152600c6020526040808220805486179081905590519092917fd1d59d2d212a435434e7a4a4676427610dfe2b6268b01e541d280d65bf3d6b9091a3505050565b60408051808201825260068082526518189b98181960d11b602092830152336000908152600c83528390205483518085019094529083526530313730303160d01b9183019190915260019190821682146108055760405162461bcd60e51b81526004016105d39190612c1f565b506001600160a01b0383166000818152600c6020526040808220859055518492917fd1d59d2d212a435434e7a4a4676427610dfe2b6268b01e541d280d65bf3d6b9091a3505050565b6005545b90565b60408051808201825260068082526518189b98181960d11b602092830152336000908152600c83528390205483518085019094529083526530313730303160d01b83830152909190821682146108be5760405162461bcd60e51b81526004016105d39190612c1f565b506320c5429b60e01b600090815260209081527fa475e1e33e639aa8527a4f5c4f611c4588486a1a8e7684839ad95dc8b4e841a45460408051808201909152600681526530303730303160d01b9281019290925260ff166109325760405162461bcd60e51b81526004016105d39190612c1f565b5061093c826118b0565b506000908152600f6020526040812055565b610959838383611b28565b505050565b600d6020526000908152604090205460ff1681565b6001600160a01b0382166000908152600760209081526040808320548151808301909252600682526530303630303760d01b928201929092529083106109cc5760405162461bcd60e51b81526004016105d39190612c1f565b506001600160a01b03831660009081526007602052604090208054839081106109f157fe5b906000526020600020015490505b92915050565b61095983838360405180602001604052806000815250611b76565b600c6020526000908152604090205481565b60055460408051808201909152600681526530303630303760d01b60208201526000918310610a745760405162461bcd60e51b81526004016105d39190612c1f565b5060058281548110610a8257fe5b90600052602060002001549050919050565b6000610aa589898989898989610e08565b9050610abb89826103e436869003860186612861565b6040518060400160405280600681526020016530303730303560d01b81525090610af85760405162461bcd60e51b81526004016105d39190612c1f565b506000818152600d6020908152604091829020548251808401909352600683526530303730303760d01b9183019190915260ff1615610b4a5760405162461bcd60e51b81526004016105d39190612c1f565b50604080518082019091526006815265060606e6060760d31b602082015242841015610b895760405162461bcd60e51b81526004016105d39190612c1f565b506000818152600d602090815260408083208054600160ff19918216179091556001600160a01b038d81168552600b84528285208d821686529093529281902080549093168a15151790925590516323b872dd60e01b8152908716906323b872dd90610bfd908c9033908a90600401612b9d565b602060405180830381600087803b158015610c1757600080fd5b505af1158015610c2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c4f9190810190612779565b50876001600160a01b0316896001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3189604051610c939190612bc5565b60405180910390a3505050505050505050565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d2c5780601f10610d0157610100808354040283529160200191610d2c565b820191906000526020600020905b815481529060010190602001808311610d0f57829003601f168201915b505050505081565b600081815260096020908152604091829020548251808401909352600683526518181b18181960d11b918301919091526001600160a01b03169081610d8c5760405162461bcd60e51b81526004016105d39190612c1f565b50919050565b60408051808201909152600681526530303630303160d01b60208201526000906001600160a01b038316610dd95760405162461bcd60e51b81526004016105d39190612c1f565b50506001600160a01b031660009081526007602052604090205490565b6000908152600f602052604090205490565b60003088888888888888604051602001610e29989796959493929190612a64565b604051602081830303815290604052805190602001209050979650505050505050565b60408051808201825260068082526518189b98181960d11b602092830152336000908152600c83528390205483518085019094529083526530313730303160d01b91830191909152610100919082168214610eba5760405162461bcd60e51b81526004016105d39190612c1f565b50610f2e85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092019190915250611c6e92505050565b5050505050565b60008082606001516002811115610f4857fe5b1415610fea57600183604051602001610f619190612b20565b6040516020818303038152906040528051906020012083604001518460000151856020015160405160008152602001604052604051610fa39493929190612be1565b6020604051602081039080840390855afa158015610fc5573d6000803e3d6000fd5b505050602060405103516001600160a01b0316846001600160a01b0316149050611090565b600182606001516002811115610ffc57fe5b141561101557600183604051602001610f619190612b40565b60028260600151600281111561102757fe5b141561105c5760018383604001518460000151856020015160405160008152602001604052604051610fa39493929190612be1565b604080518082018252600681526518181b98181b60d11b6020820152905162461bcd60e51b81526105d39190600401612c1f565b9392505050565b60028054604080516020601f600019610100600187161502019094168590049384018190048102820181019092528281526060939092909183018282801561056d5780601f106105425761010080835404028352916020019161056d565b6309d1187760e41b600090815260209081527fce9a4990a518db4a5651f73127cf155573e9e5e84e0b58e7d17581df388a54e15460408051808201909152600681526530303730303160d01b9281019290925260ff166111685760405162461bcd60e51b81526004016105d39190612c1f565b506000818152600960205260409020546001600160a01b031661118a826118b0565b6001600160a01b0381163314806111c457506001600160a01b0381166000908152600b6020908152604080832033845290915290205460ff165b604051806040016040528060068152602001650c0c0dcc0c0d60d21b815250906112015760405162461bcd60e51b81526004016105d39190612c1f565b50506000908152600f6020526040812055565b336000818152600b602090815260408083206001600160a01b038716808552925291829020805460ff191685151517905590519091907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190611277908590612bc5565b60405180910390a35050565b60408051808201825260068082526518189b98181960d11b602092830152336000908152600c83528390205483518085019094529083526530313730303160d01b9183019190915260109190821682146112f05760405162461bcd60e51b81526004016105d39190612c1f565b506112fb8484611c95565b506000918252600f60205260409091205550565b60115460ff1681565b610f2e85858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7692505050565b60008082116040518060400160405280600681526020016518189b98181960d11b8152509061139c5760405162461bcd60e51b81526004016105d39190612c1f565b50506001600160a01b03919091166000908152600c602052604090205481161490565b60408051808201825260068082526518189b98181960d11b602092830152336000908152600c83528390205483518085019094529083526530313730303160d01b91830191909152608091908216821461142c5760405162461bcd60e51b81526004016105d39190612c1f565b50635ed0742960e11b600090815260209081527fe688ff95abb2e9195893e3ac8827bcb2762ff8ab6e1829afcc7af86b6b3bd2395460408051808201909152600681526530303730303160d01b9281019290925260ff166114a05760405162461bcd60e51b81526004016105d39190612c1f565b50600083815260096020908152604091829020548251808401909352600683526530303730303360d01b918301919091526001600160a01b03166114f75760405162461bcd60e51b81526004016105d39190612c1f565b506000838152600f6020526040908190208390555183907fba32aa36aaa193aeb79242c133083dec069f5b402cafe1740c9fae59a1a4cedb9061153b908590612bd3565b60405180910390a2505050565b60408051808201825260068082526518189b98181960d11b602092830152336000908152600c835283902054835180850185529182526530313730303160d01b9282019290925290821682146115b15760405162461bcd60e51b81526004016105d39190612c1f565b5063bedb86fb60e01b600090815260209081527f7ce77c7e88ab598a61cf35ed6b2db755d687a852164358790f2ba8d2b1dc952d5460408051808201909152600681526530303730303160d01b9281019290925260ff166116255760405162461bcd60e51b81526004016105d39190612c1f565b506011805460ff19168315151790556040517fff4a5dbbab6b1963d10f5edd139f33a7987ecb3c4f65969be77ddba28d94659490611664908490612bc5565b60405180910390a15050565b6004805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d2c5780601f10610d0157610100808354040283529160200191610d2c565b600081815260096020908152604091829020548251808401909352600683526518181b18181960d11b91830191909152606091906001600160a01b03166117255760405162461bcd60e51b81526004016105d39190612c1f565b5060408051602081019091526000815260035460026000196101006001841615020190911604156109ff57600361175b84611df2565b60405160200161176c929190612b08565b60408051601f1981840301815291905260045490915060026000196101006001841615020190911604156109ff578060046040516020016117ae929190612af0565b604051602081830303815290604052905092915050565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205460ff1690565b60408051808201825260068082526518189b98181960d11b602092830152336000908152600c83528390205483518085019094529083526530313730303160d01b9183019190915260019190821682146118605760405162461bcd60e51b81526004016105d39190612c1f565b506001600160a01b0383166000818152600c602052604080822080548619169081905590519092917fd1d59d2d212a435434e7a4a4676427610dfe2b6268b01e541d280d65bf3d6b9091a3505050565b600081815260096020908152604091829020548251808401909352600683526518181b18181960d11b918301919091526001600160a01b031690816119085760405162461bcd60e51b81526004016105d39190612c1f565b506000828152600a60205260409020546001600160a01b031615611943576000828152600a6020526040902080546001600160a01b03191690555b6001600160a01b03811660009081526007602052604090205461196257fe5b6000828152600860209081526040808320546001600160a01b03851684526007909252822054909160001990910190818314611a1b576001600160a01b03841660009081526007602052604090208054839081106119bc57fe5b906000526020600020015490508060076000866001600160a01b03166001600160a01b0316815260200190815260200160002084815481106119fa57fe5b60009182526020808320909101929092558281526008909152604090208390555b600085815260096020908152604080832080546001600160a01b0319169055600882528083208390556001600160a01b038716835260079091529020805490611a68906000198301612239565b50600554611a7257fe5b600085815260066020526040902054600580546000198101945084908110611a9657fe5b906000526020600020015491508160058281548110611ab157fe5b6000918252602090912001556005805490611ad0906000198301612239565b50600082815260066020526040808220839055878252808220829055518791906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a4505050505050565b60115460408051808201909152600681526518181b98181960d11b60208201529060ff1615611b6a5760405162461bcd60e51b81526004016105d39190612c1f565b50610959838383611eb6565b611b88836001600160a01b03166121fd565b15611c5d57604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290611bc1903390899088908890600401612b59565b602060405180830381600087803b158015611bdb57600080fd5b505af1158015611bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c1391908101906127d3565b6001600160e01b031916146040518060400160405280600681526020016530303630303560d01b81525090611c5b5760405162461bcd60e51b81526004016105d39190612c1f565b505b611c68848484611b28565b50505050565b8151611c8190600390602085019061225d565b50805161095990600490602084019061225d565b60408051808201909152600681526530303630303160d01b60208201526001600160a01b038316611cd95760405162461bcd60e51b81526004016105d39190612c1f565b50600081815260096020908152604091829020548251808401909352600683526518181b18181b60d11b918301919091526001600160a01b031615611d315760405162461bcd60e51b81526004016105d39190612c1f565b50600081815260096020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600783528184208054600181810183559186528486208101879055868652600885528386205560058054918201908190557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db082018790556006909452828520559051919284927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4505050565b606081611e1757506040805180820190915260018152600360fc1b60208201526104dd565b8160005b8115611e2f57600101600a82049150611e1b565b6060816040519080825280601f01601f191660200182016040528015611e5c576020820181803883390190505b50859350905060001982015b8315611ead57600a840660300160f81b82828060019003935081518110611e8b57fe5b60200101906001600160f81b031916908160001a905350600a84049350611e68565b50949350505050565b60408051808201909152600681526530303630303160d01b60208201526001600160a01b038416611efa5760405162461bcd60e51b81526004016105d39190612c1f565b50600081815260096020908152604091829020548251808401909352600683526518181b18181960d11b918301919091526001600160a01b03858116911614611f565760405162461bcd60e51b81526004016105d39190612c1f565b5060408051808201909152600681526530303630303160d01b60208201526001600160a01b038316611f9b5760405162461bcd60e51b81526004016105d39190612c1f565b506001600160a01b038316331480611fc957506000818152600a60205260409020546001600160a01b031633145b80611ff757506001600160a01b0383166000908152600b6020908152604080832033845290915290205460ff165b604051806040016040528060068152602001650c0c0d8c0c0d60d21b815250906120345760405162461bcd60e51b81526004016105d39190612c1f565b506000818152600a60205260409020546001600160a01b03161561206f576000818152600a6020526040902080546001600160a01b03191690555b6001600160a01b03831660009081526007602052604090205461208e57fe5b6000818152600860209081526040808320546001600160a01b038716845260079092529091205460001901808214612142576001600160a01b03851660009081526007602052604081208054839081106120e457fe5b906000526020600020015490508060076000886001600160a01b03166001600160a01b03168152602001908152602001600020848154811061212257fe5b600091825260208083209091019290925591825260089052604090208290555b6001600160a01b038516600090815260076020526040902080549061216b906000198301612239565b50600083815260096020908152604080832080546001600160a01b0319166001600160a01b038981169182179092558085526007845282852080546001810180835591875285872081018a9055898752600890955283862094909455915192938793918a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a4505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906122315750808214155b949350505050565b815481835581811115610959576000838152602090206109599181019083016122db565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061229e57805160ff19168380011785556122cb565b828001600101855582156122cb579182015b828111156122cb5782518255916020019190600101906122b0565b506122d79291506122db565b5090565b61085291905b808211156122d757600081556001016122e1565b80356109ff81612d1e565b80356109ff81612d35565b80516109ff81612d35565b80356109ff81612d3e565b80356109ff81612d47565b80516109ff81612d47565b60008083601f84011261234957600080fd5b50813567ffffffffffffffff81111561236157600080fd5b60208301915083600182028301111561237957600080fd5b9250929050565b80356109ff81612d50565b600060808284031215610d8c57600080fd5b6000608082840312156123af57600080fd5b6123b96080612c30565b905060006123c78484612316565b82525060206123d884848301612316565b60208301525060406123ec8482850161240c565b604083015250606061240084828501612380565b60608301525092915050565b80356109ff81612d5d565b60006020828403121561242957600080fd5b600061223184846122f5565b6000806040838503121561244857600080fd5b600061245485856122f5565b9250506020612465858286016122f5565b9150509250929050565b600080600080600080600060e0888a03121561248a57600080fd5b60006124968a8a6122f5565b97505060206124a78a828b016122f5565b96505060406124b88a828b01612300565b95505060606124c98a828b016122f5565b94505060806124da8a828b01612316565b93505060a06124eb8a828b01612316565b92505060c06124fc8a828b01612316565b91505092959891949750929550565b600080600080600080600080610160898b03121561252857600080fd5b60006125348b8b6122f5565b98505060206125458b828c016122f5565b97505060406125568b828c01612300565b96505060606125678b828c016122f5565b95505060806125788b828c01612316565b94505060a06125898b828c01612316565b93505060c061259a8b828c01612316565b92505060e06125ab8b828c0161238b565b9150509295985092959890939650565b6000806000606084860312156125d057600080fd5b60006125dc86866122f5565b93505060206125ed868287016122f5565b92505060406125fe86828701612316565b9150509250925092565b60008060008060006080868803121561262057600080fd5b600061262c88886122f5565b955050602061263d888289016122f5565b945050604061264e88828901612316565b935050606086013567ffffffffffffffff81111561266b57600080fd5b61267788828901612337565b92509250509295509295909350565b6000806040838503121561269957600080fd5b60006126a585856122f5565b925050602061246585828601612300565b600080600060c084860312156126cb57600080fd5b60006126d786866122f5565b93505060206126e886828701612316565b92505060406125fe8682870161239d565b6000806040838503121561270c57600080fd5b600061271885856122f5565b925050602061246585828601612316565b60008060006060848603121561273e57600080fd5b600061274a86866122f5565b93505060206125ed86828701612316565b60006020828403121561276d57600080fd5b60006122318484612300565b60006020828403121561278b57600080fd5b6000612231848461230b565b6000602082840312156127a957600080fd5b60006122318484612316565b6000602082840312156127c757600080fd5b60006122318484612321565b6000602082840312156127e557600080fd5b6000612231848461232c565b6000806000806040858703121561280757600080fd5b843567ffffffffffffffff81111561281e57600080fd5b61282a87828801612337565b9450945050602085013567ffffffffffffffff81111561284957600080fd5b61285587828801612337565b95989497509550505050565b60006080828403121561287357600080fd5b6000612231848461239d565b6000806040838503121561289257600080fd5b60006127188585612316565b6128a781612c9f565b82525050565b6128a781612c70565b6128a76128c282612c70565b612cdc565b6128a781612c7b565b6128a76128dc82612c7b565b612ce7565b6128a781610852565b6128a76128f682610852565b610852565b600061290682612c63565b6129108185612c67565b9350612920818560208601612cb0565b61292981612d08565b9093019392505050565b600061293e82612c63565b61294881856104dd565b9350612958818560208601612cb0565b9290920192915050565b60008154600181166000811461297f57600181146129a2576129e1565b607f600283041661299081876104dd565b60ff19841681529550850192506129e1565b600282046129b081876104dd565b95506129bb85612c57565b60005b828110156129da578154888201526001909101906020016129be565b5050850192505b505092915050565b60006129f6601c836104dd565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b6000612a2f601b836104dd565b7f19457468657265756d205369676e6564204d6573736167653a0a2000000000008152601b0192915050565b6128a781612c99565b6000612a70828b6128b6565b601482019150612a80828a6128b6565b601482019150612a9082896128b6565b601482019150612aa082886128d0565b600182019150612ab082876128b6565b601482019150612ac082866128ea565b602082019150612ad082856128ea565b602082019150612ae082846128ea565b5060200198975050505050505050565b6000612afc8285612933565b91506122318284612962565b6000612b148285612962565b91506122318284612933565b6000612b2b826129e9565b9150612b3782846128ea565b50602001919050565b6000612b2b82612a22565b602081016109ff82846128ad565b60808101612b67828761289e565b612b7460208301866128ad565b612b8160408301856128e1565b8181036060830152612b9381846128fb565b9695505050505050565b60608101612bab82866128ad565b612bb8602083018561289e565b61223160408301846128e1565b602081016109ff82846128c7565b602081016109ff82846128e1565b60808101612bef82876128e1565b612bfc6020830186612a5b565b612c0960408301856128e1565b612c1660608301846128e1565b95945050505050565b6020808252810161109081846128fb565b60405181810167ffffffffffffffff81118282101715612c4f57600080fd5b604052919050565b60009081526020902090565b5190565b90815260200190565b60006109ff82612c8d565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b60006109ff8260006109ff82612c70565b60005b83811015612ccb578181015183820152602001612cb3565b83811115611c685750506000910152565b60006109ff82612cf2565b60006109ff82612cfd565b60006109ff82612d18565b60006109ff82612d12565b601f01601f191690565b60f81b90565b60601b90565b612d2781612c70565b8114612d3257600080fd5b50565b612d2781612c7b565b612d2781610852565b612d2781612c80565b60038110612d3257600080fd5b612d2781612c9956fea365627a7a7231582038c0ea1e74573d8907e33ffd22d139f5947abfe1a5cbbfd06742379166e6a60d6c6578706572696d656e74616cf564736f6c634300050b0040",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3388 CODESIZE SUB DUP1 PUSH3 0x3388 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x3D7 JUMP JUMPDEST PUSH32 0x67BE87C3FF9960CA1E9CFAC5CAB2FF4747269CF9ED20C9B7306235AC35A491C5 DUP1 SLOAD PUSH1 0x1 PUSH1 0xFF NOT SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH32 0xF7815FCCBF112960A73756E185887FEDCB9FC64CA0A16CC5923B7960ED780800 DUP1 SLOAD DUP3 AND DUP4 OR SWAP1 SSTORE PUSH32 0x9562381DFBC2D8B8B66E765249F330164B73E329E5F01670660643571D1974DF DUP1 SLOAD DUP3 AND DUP4 OR SWAP1 SSTORE PUSH32 0x77B7BBE0E49B76487C9476B5DB3354CF5270619D0037CCB899C2A4C4A75B4318 DUP1 SLOAD DUP3 AND DUP4 OR SWAP1 SSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 PUSH1 0xF SWAP1 SSTORE PUSH32 0x4ECC17D100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE SWAP1 DUP2 MSTORE PUSH32 0xB779C54AE4C108CE5B4B652D22D801ADF25F71E5A1E8A47E47311C80E3CFD790 DUP1 SLOAD SWAP1 SWAP3 AND DUP4 OR SWAP1 SWAP2 SSTORE DUP8 MLOAD PUSH3 0x156 SWAP3 SWAP2 DUP10 ADD SWAP1 PUSH3 0x233 JUMP JUMPDEST POP DUP5 MLOAD PUSH3 0x16C SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH3 0x233 JUMP JUMPDEST POP DUP4 MLOAD PUSH3 0x182 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP8 ADD SWAP1 PUSH3 0x233 JUMP JUMPDEST POP DUP3 MLOAD PUSH3 0x198 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH3 0x233 JUMP JUMPDEST POP PUSH1 0xE DUP3 SWAP1 SSTORE PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH3 0x211 JUMPI PUSH1 0x1 PUSH1 0x0 DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x1BD JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH3 0x1A1 JUMP JUMPDEST POP POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x7FF SWAP1 SSTORE POP PUSH3 0x5CF SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x276 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x2A6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x2A6 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x2A6 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x289 JUMP JUMPDEST POP PUSH3 0x2B4 SWAP3 SWAP2 POP PUSH3 0x2B8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x2D5 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2B4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2BF JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x301 PUSH3 0x2FB DUP3 PUSH3 0x509 JUMP JUMPDEST PUSH3 0x4E2 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH3 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x357 JUMPI DUP2 PUSH3 0x340 DUP9 DUP3 PUSH3 0x374 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x32A JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x36E DUP2 PUSH3 0x5AA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x36E DUP2 PUSH3 0x5C4 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x393 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x3A4 PUSH3 0x2FB DUP3 PUSH3 0x52A JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH3 0x3C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x3CE DUP4 DUP3 DUP5 PUSH3 0x577 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x416 DUP10 DUP3 DUP11 ADD PUSH3 0x381 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x433 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x441 DUP10 DUP3 DUP11 ADD PUSH3 0x381 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x46C DUP10 DUP3 DUP11 ADD PUSH3 0x381 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x497 DUP10 DUP3 DUP11 ADD PUSH3 0x381 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH3 0x4AA DUP10 DUP3 DUP11 ADD PUSH3 0x361 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x4C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x4D5 DUP10 DUP3 DUP11 ADD PUSH3 0x2D8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH3 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH3 0x541 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x594 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x57A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x5A4 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH3 0x5B5 DUP2 PUSH3 0x2D5 JUMP JUMPDEST DUP2 EQ PUSH3 0x5C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0x5B5 DUP2 PUSH3 0x552 JUMP JUMPDEST PUSH2 0x2DA9 DUP1 PUSH3 0x5DF PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x125 JUMPI DUP1 PUSH4 0xB187BD26 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xBEDB86FB GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xBEDB86FB EQ PUSH2 0x46B JUMPI DUP1 PUSH4 0xC298BBA5 EQ PUSH2 0x47E JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x486 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x499 JUMPI DUP1 PUSH4 0xF394B6DF EQ PUSH2 0x4AC JUMPI PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0xB187BD26 EQ PUSH2 0x42A JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x432 JUMPI DUP1 PUSH4 0xBA00A330 EQ PUSH2 0x445 JUMPI DUP1 PUSH4 0xBDA0E852 EQ PUSH2 0x458 JUMPI PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0x8FA76D8D GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x8FA76D8D EQ PUSH2 0x3D6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0x9D118770 EQ PUSH2 0x3F1 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x404 JUMPI DUP1 PUSH4 0xB0E329E4 EQ PUSH2 0x417 JUMPI PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x38A JUMPI DUP1 PUSH4 0x70C31AFC EQ PUSH2 0x39D JUMPI DUP1 PUSH4 0x8933C670 EQ PUSH2 0x3B0 JUMPI DUP1 PUSH4 0x89B73EC0 EQ PUSH2 0x3C3 JUMPI PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x45A32C86 GT PUSH2 0x177 JUMPI DUP1 PUSH4 0x45A32C86 EQ PUSH2 0x336 JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x568F5B48 EQ PUSH2 0x35C JUMPI DUP1 PUSH4 0x62B99AD4 EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x377 JUMPI PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2EA JUMPI DUP1 PUSH4 0x23BF3396 EQ PUSH2 0x2FD JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x310 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x323 JUMPI PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0xAB319E8 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0x15EC3B8B EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2CF JUMPI DUP1 PUSH4 0x20C5429B EQ PUSH2 0x2D7 JUMPI PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x75B1A09 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x274 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x234 PUSH2 0x22F CALLDATASIZE PUSH1 0x4 PUSH2 0x27B5 JUMP JUMPDEST PUSH2 0x4BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x241 SWAP2 SWAP1 PUSH2 0x2BC5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x252 PUSH2 0x4E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x241 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST PUSH2 0x267 PUSH2 0x577 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x241 SWAP2 SWAP1 PUSH2 0x2BD3 JUMP JUMPDEST PUSH2 0x287 PUSH2 0x282 CALLDATASIZE PUSH1 0x4 PUSH2 0x2797 JUMP JUMPDEST PUSH2 0x57D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x241 SWAP2 SWAP1 PUSH2 0x2B4B JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x2A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x26F9 JUMP JUMPDEST PUSH2 0x5F9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH2 0x2B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x26F9 JUMP JUMPDEST PUSH2 0x6DC JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x2CA CALLDATASIZE PUSH1 0x4 PUSH2 0x26F9 JUMP JUMPDEST PUSH2 0x798 JUMP JUMPDEST PUSH2 0x267 PUSH2 0x84E JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x2E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2797 JUMP JUMPDEST PUSH2 0x855 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x2F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x25BB JUMP JUMPDEST PUSH2 0x94E JUMP JUMPDEST PUSH2 0x234 PUSH2 0x30B CALLDATASIZE PUSH1 0x4 PUSH2 0x2797 JUMP JUMPDEST PUSH2 0x95E JUMP JUMPDEST PUSH2 0x267 PUSH2 0x31E CALLDATASIZE PUSH1 0x4 PUSH2 0x26F9 JUMP JUMPDEST PUSH2 0x973 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x331 CALLDATASIZE PUSH1 0x4 PUSH2 0x25BB JUMP JUMPDEST PUSH2 0xA05 JUMP JUMPDEST PUSH2 0x267 PUSH2 0x344 CALLDATASIZE PUSH1 0x4 PUSH2 0x2417 JUMP JUMPDEST PUSH2 0xA20 JUMP JUMPDEST PUSH2 0x267 PUSH2 0x357 CALLDATASIZE PUSH1 0x4 PUSH2 0x2797 JUMP JUMPDEST PUSH2 0xA32 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x36A CALLDATASIZE PUSH1 0x4 PUSH2 0x250B JUMP JUMPDEST PUSH2 0xA94 JUMP JUMPDEST PUSH2 0x252 PUSH2 0xCA6 JUMP JUMPDEST PUSH2 0x287 PUSH2 0x385 CALLDATASIZE PUSH1 0x4 PUSH2 0x2797 JUMP JUMPDEST PUSH2 0xD34 JUMP JUMPDEST PUSH2 0x267 PUSH2 0x398 CALLDATASIZE PUSH1 0x4 PUSH2 0x2417 JUMP JUMPDEST PUSH2 0xD92 JUMP JUMPDEST PUSH2 0x267 PUSH2 0x3AB CALLDATASIZE PUSH1 0x4 PUSH2 0x2797 JUMP JUMPDEST PUSH2 0xDF6 JUMP JUMPDEST PUSH2 0x267 PUSH2 0x3BE CALLDATASIZE PUSH1 0x4 PUSH2 0x246F JUMP JUMPDEST PUSH2 0xE08 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x3D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x27F1 JUMP JUMPDEST PUSH2 0xE4C JUMP JUMPDEST PUSH2 0x234 PUSH2 0x3E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x26B6 JUMP JUMPDEST PUSH2 0xF35 JUMP JUMPDEST PUSH2 0x252 PUSH2 0x1097 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x3FF CALLDATASIZE PUSH1 0x4 PUSH2 0x2797 JUMP JUMPDEST PUSH2 0x10F5 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x412 CALLDATASIZE PUSH1 0x4 PUSH2 0x2686 JUMP JUMPDEST PUSH2 0x1214 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x425 CALLDATASIZE PUSH1 0x4 PUSH2 0x2729 JUMP JUMPDEST PUSH2 0x1283 JUMP JUMPDEST PUSH2 0x234 PUSH2 0x130F JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x440 CALLDATASIZE PUSH1 0x4 PUSH2 0x2608 JUMP JUMPDEST PUSH2 0x1318 JUMP JUMPDEST PUSH2 0x234 PUSH2 0x453 CALLDATASIZE PUSH1 0x4 PUSH2 0x26F9 JUMP JUMPDEST PUSH2 0x135A JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x466 CALLDATASIZE PUSH1 0x4 PUSH2 0x287F JUMP JUMPDEST PUSH2 0x13BF JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x479 CALLDATASIZE PUSH1 0x4 PUSH2 0x275B JUMP JUMPDEST PUSH2 0x1548 JUMP JUMPDEST PUSH2 0x252 PUSH2 0x1670 JUMP JUMPDEST PUSH2 0x252 PUSH2 0x494 CALLDATASIZE PUSH1 0x4 PUSH2 0x2797 JUMP JUMPDEST PUSH2 0x16CB JUMP JUMPDEST PUSH2 0x234 PUSH2 0x4A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2435 JUMP JUMPDEST PUSH2 0x17C5 JUMP JUMPDEST PUSH2 0x2A7 PUSH2 0x4BA CALLDATASIZE PUSH1 0x4 PUSH2 0x26F9 JUMP JUMPDEST PUSH2 0x17F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x56D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x542 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x56D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x550 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x6 DUP3 MSTORE PUSH6 0x18181B181819 PUSH1 0xD1 SHL SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ DUP1 PUSH2 0x642 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH6 0x303036303033 PUSH1 0xD0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x67F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP6 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP1 DUP3 MSTORE PUSH6 0x18189B981819 PUSH1 0xD1 SHL PUSH1 0x20 SWAP3 DUP4 ADD MSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC DUP4 MSTORE DUP4 SWAP1 KECCAK256 SLOAD DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE SWAP1 DUP4 MSTORE PUSH6 0x303137303031 PUSH1 0xD0 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 DUP3 AND DUP3 EQ PUSH2 0x749 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP7 OR SWAP1 DUP2 SWAP1 SSTORE SWAP1 MLOAD SWAP1 SWAP3 SWAP2 PUSH32 0xD1D59D2D212A435434E7A4A4676427610DFE2B6268B01E541D280D65BF3D6B90 SWAP2 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP1 DUP3 MSTORE PUSH6 0x18189B981819 PUSH1 0xD1 SHL PUSH1 0x20 SWAP3 DUP4 ADD MSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC DUP4 MSTORE DUP4 SWAP1 KECCAK256 SLOAD DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE SWAP1 DUP4 MSTORE PUSH6 0x303137303031 PUSH1 0xD0 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 DUP3 AND DUP3 EQ PUSH2 0x805 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 SWAP1 SSTORE MLOAD DUP5 SWAP3 SWAP2 PUSH32 0xD1D59D2D212A435434E7A4A4676427610DFE2B6268B01E541D280D65BF3D6B90 SWAP2 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP1 DUP3 MSTORE PUSH6 0x18189B981819 PUSH1 0xD1 SHL PUSH1 0x20 SWAP3 DUP4 ADD MSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC DUP4 MSTORE DUP4 SWAP1 KECCAK256 SLOAD DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE SWAP1 DUP4 MSTORE PUSH6 0x303137303031 PUSH1 0xD0 SHL DUP4 DUP4 ADD MSTORE SWAP1 SWAP2 SWAP1 DUP3 AND DUP3 EQ PUSH2 0x8BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH4 0x20C5429B PUSH1 0xE0 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH32 0xA475E1E33E639AA8527A4F5C4F611C4588486A1A8E7684839AD95DC8B4E841A4 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x303037303031 PUSH1 0xD0 SHL SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xFF AND PUSH2 0x932 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH2 0x93C DUP3 PUSH2 0x18B0 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH2 0x959 DUP4 DUP4 DUP4 PUSH2 0x1B28 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x6 DUP3 MSTORE PUSH6 0x303036303037 PUSH1 0xD0 SHL SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP4 LT PUSH2 0x9CC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 DUP2 LT PUSH2 0x9F1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x959 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1B76 JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x303036303037 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP4 LT PUSH2 0xA74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x5 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xA82 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAA5 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0xE08 JUMP JUMPDEST SWAP1 POP PUSH2 0xABB DUP10 DUP3 PUSH2 0x3E4 CALLDATASIZE DUP7 SWAP1 SUB DUP7 ADD DUP7 PUSH2 0x2861 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH6 0x303037303035 PUSH1 0xD0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xAF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x6 DUP4 MSTORE PUSH6 0x303037303037 PUSH1 0xD0 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND ISZERO PUSH2 0xB4A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x60606E60607 PUSH1 0xD3 SHL PUSH1 0x20 DUP3 ADD MSTORE TIMESTAMP DUP5 LT ISZERO PUSH2 0xB89 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0xFF NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND DUP6 MSTORE PUSH1 0xB DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP14 DUP3 AND DUP7 MSTORE SWAP1 SWAP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 AND DUP11 ISZERO ISZERO OR SWAP1 SWAP3 SSTORE SWAP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 DUP8 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0xBFD SWAP1 DUP13 SWAP1 CALLER SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x2B9D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC4F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2779 JUMP JUMPDEST POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP10 PUSH1 0x40 MLOAD PUSH2 0xC93 SWAP2 SWAP1 PUSH2 0x2BC5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xD2C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xD01 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xD2C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xD0F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x6 DUP4 MSTORE PUSH6 0x18181B181819 PUSH1 0xD1 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH2 0xD8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x303036303031 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xDD9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 ADDRESS DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xE29 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2A64 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP1 DUP3 MSTORE PUSH6 0x18189B981819 PUSH1 0xD1 SHL PUSH1 0x20 SWAP3 DUP4 ADD MSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC DUP4 MSTORE DUP4 SWAP1 KECCAK256 SLOAD DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE SWAP1 DUP4 MSTORE PUSH6 0x303137303031 PUSH1 0xD0 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 SWAP2 SWAP1 DUP3 AND DUP3 EQ PUSH2 0xEBA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH2 0xF2E DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F DUP10 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP8 DUP2 MSTORE SWAP3 POP DUP8 SWAP2 POP DUP7 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1C6E SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x60 ADD MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xF48 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xFEA JUMPI PUSH1 0x1 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF61 SWAP2 SWAP1 PUSH2 0x2B20 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 PUSH1 0x40 ADD MLOAD DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFA3 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2BE1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP1 POP PUSH2 0x1090 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x60 ADD MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xFFC JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1015 JUMPI PUSH1 0x1 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF61 SWAP2 SWAP1 PUSH2 0x2B40 JUMP JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x60 ADD MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1027 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x105C JUMPI PUSH1 0x1 DUP4 DUP4 PUSH1 0x40 ADD MLOAD DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFA3 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2BE1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x18181B98181B PUSH1 0xD1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH2 0x5D3 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2C1F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP8 AND ISZERO MUL ADD SWAP1 SWAP5 AND DUP6 SWAP1 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x56D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x542 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x56D JUMP JUMPDEST PUSH4 0x9D11877 PUSH1 0xE4 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH32 0xCE9A4990A518DB4A5651F73127CF155573E9E5E84E0B58E7D17581DF388A54E1 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x303037303031 PUSH1 0xD0 SHL SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xFF AND PUSH2 0x1168 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x118A DUP3 PUSH2 0x18B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ DUP1 PUSH2 0x11C4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH6 0xC0C0DCC0C0D PUSH1 0xD2 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1201 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO OR SWAP1 SSTORE SWAP1 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP1 PUSH2 0x1277 SWAP1 DUP6 SWAP1 PUSH2 0x2BC5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP1 DUP3 MSTORE PUSH6 0x18189B981819 PUSH1 0xD1 SHL PUSH1 0x20 SWAP3 DUP4 ADD MSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC DUP4 MSTORE DUP4 SWAP1 KECCAK256 SLOAD DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE SWAP1 DUP4 MSTORE PUSH6 0x303137303031 PUSH1 0xD0 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x10 SWAP2 SWAP1 DUP3 AND DUP3 EQ PUSH2 0x12F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH2 0x12FB DUP5 DUP5 PUSH2 0x1C95 JUMP JUMPDEST POP PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xF2E DUP6 DUP6 DUP6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1B76 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH6 0x18189B981819 PUSH1 0xD1 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x139C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 AND EQ SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP1 DUP3 MSTORE PUSH6 0x18189B981819 PUSH1 0xD1 SHL PUSH1 0x20 SWAP3 DUP4 ADD MSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC DUP4 MSTORE DUP4 SWAP1 KECCAK256 SLOAD DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE SWAP1 DUP4 MSTORE PUSH6 0x303137303031 PUSH1 0xD0 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 SWAP2 SWAP1 DUP3 AND DUP3 EQ PUSH2 0x142C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH4 0x5ED07429 PUSH1 0xE1 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH32 0xE688FF95ABB2E9195893E3AC8827BCB2762FF8AB6E1829AFCC7AF86B6B3BD239 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x303037303031 PUSH1 0xD0 SHL SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xFF AND PUSH2 0x14A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x6 DUP4 MSTORE PUSH6 0x303037303033 PUSH1 0xD0 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x14F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE MLOAD DUP4 SWAP1 PUSH32 0xBA32AA36AAA193AEB79242C133083DEC069F5B402CAFE1740C9FAE59A1A4CEDB SWAP1 PUSH2 0x153B SWAP1 DUP6 SWAP1 PUSH2 0x2BD3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP1 DUP3 MSTORE PUSH6 0x18189B981819 PUSH1 0xD1 SHL PUSH1 0x20 SWAP3 DUP4 ADD MSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC DUP4 MSTORE DUP4 SWAP1 KECCAK256 SLOAD DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE SWAP2 DUP3 MSTORE PUSH6 0x303137303031 PUSH1 0xD0 SHL SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 AND DUP3 EQ PUSH2 0x15B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH4 0xBEDB86FB PUSH1 0xE0 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH32 0x7CE77C7E88AB598A61CF35ED6B2DB755D687A852164358790F2BA8D2B1DC952D SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x303037303031 PUSH1 0xD0 SHL SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xFF AND PUSH2 0x1625 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x11 DUP1 SLOAD PUSH1 0xFF NOT AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xFF4A5DBBAB6B1963D10F5EDD139F33A7987ECB3C4F65969BE77DDBA28D946594 SWAP1 PUSH2 0x1664 SWAP1 DUP5 SWAP1 PUSH2 0x2BC5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xD2C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xD01 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xD2C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x6 DUP4 MSTORE PUSH6 0x18181B181819 PUSH1 0xD1 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1725 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x3 SLOAD PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP5 AND ISZERO MUL ADD SWAP1 SWAP2 AND DIV ISZERO PUSH2 0x9FF JUMPI PUSH1 0x3 PUSH2 0x175B DUP5 PUSH2 0x1DF2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x176C SWAP3 SWAP2 SWAP1 PUSH2 0x2B08 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x4 SLOAD SWAP1 SWAP2 POP PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP5 AND ISZERO MUL ADD SWAP1 SWAP2 AND DIV ISZERO PUSH2 0x9FF JUMPI DUP1 PUSH1 0x4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x17AE SWAP3 SWAP2 SWAP1 PUSH2 0x2AF0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP1 DUP3 MSTORE PUSH6 0x18189B981819 PUSH1 0xD1 SHL PUSH1 0x20 SWAP3 DUP4 ADD MSTORE CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC DUP4 MSTORE DUP4 SWAP1 KECCAK256 SLOAD DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE SWAP1 DUP4 MSTORE PUSH6 0x303137303031 PUSH1 0xD0 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 DUP3 AND DUP3 EQ PUSH2 0x1860 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP7 NOT AND SWAP1 DUP2 SWAP1 SSTORE SWAP1 MLOAD SWAP1 SWAP3 SWAP2 PUSH32 0xD1D59D2D212A435434E7A4A4676427610DFE2B6268B01E541D280D65BF3D6B90 SWAP2 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x6 DUP4 MSTORE PUSH6 0x18181B181819 PUSH1 0xD1 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH2 0x1908 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1943 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1962 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE PUSH1 0x7 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SLOAD SWAP1 SWAP2 PUSH1 0x0 NOT SWAP1 SWAP2 ADD SWAP1 DUP2 DUP4 EQ PUSH2 0x1A1B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 DUP2 LT PUSH2 0x19BC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 PUSH1 0x7 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x19FA JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x8 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP4 MSTORE PUSH1 0x7 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP1 PUSH2 0x1A68 SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x2239 JUMP JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x1A72 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x5 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP5 POP DUP5 SWAP1 DUP2 LT PUSH2 0x1A96 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP2 POP DUP2 PUSH1 0x5 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1AB1 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SSTORE PUSH1 0x5 DUP1 SLOAD SWAP1 PUSH2 0x1AD0 SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x2239 JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP4 SWAP1 SSTORE DUP8 DUP3 MSTORE DUP1 DUP3 KECCAK256 DUP3 SWAP1 SSTORE MLOAD DUP8 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x11 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x18181B981819 PUSH1 0xD1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x1B6A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH2 0x959 DUP4 DUP4 DUP4 PUSH2 0x1EB6 JUMP JUMPDEST PUSH2 0x1B88 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x21FD JUMP JUMPDEST ISZERO PUSH2 0x1C5D JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP1 DUP3 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x1BC1 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2B59 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BEF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1C13 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x27D3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH6 0x303036303035 PUSH1 0xD0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1C5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP JUMPDEST PUSH2 0x1C68 DUP5 DUP5 DUP5 PUSH2 0x1B28 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH2 0x1C81 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x225D JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x959 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x225D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x303036303031 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1CD9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x6 DUP4 MSTORE PUSH6 0x18181B18181B PUSH1 0xD1 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1D31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP1 DUP5 MSTORE PUSH1 0x7 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP4 SSTORE SWAP2 DUP7 MSTORE DUP5 DUP7 KECCAK256 DUP2 ADD DUP8 SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x8 DUP6 MSTORE DUP4 DUP7 KECCAK256 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP2 DUP3 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 DUP3 ADD DUP8 SWAP1 SSTORE PUSH1 0x6 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 SSTORE SWAP1 MLOAD SWAP2 SWAP3 DUP5 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x1E17 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x4DD JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x1E2F JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x1E1B JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1E5C JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x1EAD JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x1E8B JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x1E68 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x303036303031 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1EFA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x6 DUP4 MSTORE PUSH6 0x18181B181819 PUSH1 0xD1 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 AND EQ PUSH2 0x1F56 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x303036303031 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1F9B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ DUP1 PUSH2 0x1FC9 JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST DUP1 PUSH2 0x1FF7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH6 0xC0C0D8C0C0D PUSH1 0xD2 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x2034 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D3 SWAP2 SWAP1 PUSH2 0x2C1F JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x206F JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x208E JUMPI INVALID JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE PUSH1 0x7 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0x0 NOT ADD DUP1 DUP3 EQ PUSH2 0x2142 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP1 DUP2 LT PUSH2 0x20E4 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 PUSH1 0x7 PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2122 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 PUSH2 0x216B SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x2239 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE DUP1 DUP6 MSTORE PUSH1 0x7 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP1 DUP4 SSTORE SWAP2 DUP8 MSTORE DUP6 DUP8 KECCAK256 DUP2 ADD DUP11 SWAP1 SSTORE DUP10 DUP8 MSTORE PUSH1 0x8 SWAP1 SWAP6 MSTORE DUP4 DUP7 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 MLOAD SWAP3 SWAP4 DUP8 SWAP4 SWAP2 DUP11 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2231 JUMPI POP DUP1 DUP3 EQ ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x959 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0x959 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0x22DB JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x229E JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x22CB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x22CB JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x22CB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x22B0 JUMP JUMPDEST POP PUSH2 0x22D7 SWAP3 SWAP2 POP PUSH2 0x22DB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x852 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x22D7 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x22E1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x9FF DUP2 PUSH2 0x2D1E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x9FF DUP2 PUSH2 0x2D35 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x9FF DUP2 PUSH2 0x2D35 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x9FF DUP2 PUSH2 0x2D3E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x9FF DUP2 PUSH2 0x2D47 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x9FF DUP2 PUSH2 0x2D47 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x9FF DUP2 PUSH2 0x2D50 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23B9 PUSH1 0x80 PUSH2 0x2C30 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x23C7 DUP5 DUP5 PUSH2 0x2316 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x23D8 DUP5 DUP5 DUP4 ADD PUSH2 0x2316 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x23EC DUP5 DUP3 DUP6 ADD PUSH2 0x240C JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x2400 DUP5 DUP3 DUP6 ADD PUSH2 0x2380 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x9FF DUP2 PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2429 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2231 DUP5 DUP5 PUSH2 0x22F5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2454 DUP6 DUP6 PUSH2 0x22F5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2465 DUP6 DUP3 DUP7 ADD PUSH2 0x22F5 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x248A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2496 DUP11 DUP11 PUSH2 0x22F5 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x24A7 DUP11 DUP3 DUP12 ADD PUSH2 0x22F5 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x24B8 DUP11 DUP3 DUP12 ADD PUSH2 0x2300 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x24C9 DUP11 DUP3 DUP12 ADD PUSH2 0x22F5 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x24DA DUP11 DUP3 DUP12 ADD PUSH2 0x2316 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x24EB DUP11 DUP3 DUP12 ADD PUSH2 0x2316 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x24FC DUP11 DUP3 DUP12 ADD PUSH2 0x2316 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x160 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x2528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2534 DUP12 DUP12 PUSH2 0x22F5 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x2545 DUP12 DUP3 DUP13 ADD PUSH2 0x22F5 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x2556 DUP12 DUP3 DUP13 ADD PUSH2 0x2300 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x2567 DUP12 DUP3 DUP13 ADD PUSH2 0x22F5 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 PUSH2 0x2578 DUP12 DUP3 DUP13 ADD PUSH2 0x2316 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 PUSH2 0x2589 DUP12 DUP3 DUP13 ADD PUSH2 0x2316 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x259A DUP12 DUP3 DUP13 ADD PUSH2 0x2316 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 PUSH2 0x25AB DUP12 DUP3 DUP13 ADD PUSH2 0x238B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x25D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x25DC DUP7 DUP7 PUSH2 0x22F5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x25ED DUP7 DUP3 DUP8 ADD PUSH2 0x22F5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x25FE DUP7 DUP3 DUP8 ADD PUSH2 0x2316 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x262C DUP9 DUP9 PUSH2 0x22F5 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x263D DUP9 DUP3 DUP10 ADD PUSH2 0x22F5 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x264E DUP9 DUP3 DUP10 ADD PUSH2 0x2316 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x266B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2677 DUP9 DUP3 DUP10 ADD PUSH2 0x2337 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x26A5 DUP6 DUP6 PUSH2 0x22F5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2465 DUP6 DUP3 DUP7 ADD PUSH2 0x2300 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x26CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x26D7 DUP7 DUP7 PUSH2 0x22F5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x26E8 DUP7 DUP3 DUP8 ADD PUSH2 0x2316 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x25FE DUP7 DUP3 DUP8 ADD PUSH2 0x239D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x270C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2718 DUP6 DUP6 PUSH2 0x22F5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2465 DUP6 DUP3 DUP7 ADD PUSH2 0x2316 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x273E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x274A DUP7 DUP7 PUSH2 0x22F5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x25ED DUP7 DUP3 DUP8 ADD PUSH2 0x2316 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x276D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2231 DUP5 DUP5 PUSH2 0x2300 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x278B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2231 DUP5 DUP5 PUSH2 0x230B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2231 DUP5 DUP5 PUSH2 0x2316 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2231 DUP5 DUP5 PUSH2 0x2321 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2231 DUP5 DUP5 PUSH2 0x232C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2807 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x281E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x282A DUP8 DUP3 DUP9 ADD PUSH2 0x2337 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2855 DUP8 DUP3 DUP9 ADD PUSH2 0x2337 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2873 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2231 DUP5 DUP5 PUSH2 0x239D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2892 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2718 DUP6 DUP6 PUSH2 0x2316 JUMP JUMPDEST PUSH2 0x28A7 DUP2 PUSH2 0x2C9F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x28A7 DUP2 PUSH2 0x2C70 JUMP JUMPDEST PUSH2 0x28A7 PUSH2 0x28C2 DUP3 PUSH2 0x2C70 JUMP JUMPDEST PUSH2 0x2CDC JUMP JUMPDEST PUSH2 0x28A7 DUP2 PUSH2 0x2C7B JUMP JUMPDEST PUSH2 0x28A7 PUSH2 0x28DC DUP3 PUSH2 0x2C7B JUMP JUMPDEST PUSH2 0x2CE7 JUMP JUMPDEST PUSH2 0x28A7 DUP2 PUSH2 0x852 JUMP JUMPDEST PUSH2 0x28A7 PUSH2 0x28F6 DUP3 PUSH2 0x852 JUMP JUMPDEST PUSH2 0x852 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2906 DUP3 PUSH2 0x2C63 JUMP JUMPDEST PUSH2 0x2910 DUP2 DUP6 PUSH2 0x2C67 JUMP JUMPDEST SWAP4 POP PUSH2 0x2920 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2CB0 JUMP JUMPDEST PUSH2 0x2929 DUP2 PUSH2 0x2D08 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x293E DUP3 PUSH2 0x2C63 JUMP JUMPDEST PUSH2 0x2948 DUP2 DUP6 PUSH2 0x4DD JUMP JUMPDEST SWAP4 POP PUSH2 0x2958 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2CB0 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH1 0x1 DUP2 AND PUSH1 0x0 DUP2 EQ PUSH2 0x297F JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x29A2 JUMPI PUSH2 0x29E1 JUMP JUMPDEST PUSH1 0x7F PUSH1 0x2 DUP4 DIV AND PUSH2 0x2990 DUP2 DUP8 PUSH2 0x4DD JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP2 MSTORE SWAP6 POP DUP6 ADD SWAP3 POP PUSH2 0x29E1 JUMP JUMPDEST PUSH1 0x2 DUP3 DIV PUSH2 0x29B0 DUP2 DUP8 PUSH2 0x4DD JUMP JUMPDEST SWAP6 POP PUSH2 0x29BB DUP6 PUSH2 0x2C57 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x29DA JUMPI DUP2 SLOAD DUP9 DUP3 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x29BE JUMP JUMPDEST POP POP DUP6 ADD SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29F6 PUSH1 0x1C DUP4 PUSH2 0x4DD JUMP JUMPDEST PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 MSTORE PUSH1 0x1C ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A2F PUSH1 0x1B DUP4 PUSH2 0x4DD JUMP JUMPDEST PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A200000000000 DUP2 MSTORE PUSH1 0x1B ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x28A7 DUP2 PUSH2 0x2C99 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A70 DUP3 DUP12 PUSH2 0x28B6 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x2A80 DUP3 DUP11 PUSH2 0x28B6 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x2A90 DUP3 DUP10 PUSH2 0x28B6 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x2AA0 DUP3 DUP9 PUSH2 0x28D0 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH2 0x2AB0 DUP3 DUP8 PUSH2 0x28B6 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x2AC0 DUP3 DUP7 PUSH2 0x28EA JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x2AD0 DUP3 DUP6 PUSH2 0x28EA JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x2AE0 DUP3 DUP5 PUSH2 0x28EA JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AFC DUP3 DUP6 PUSH2 0x2933 JUMP JUMPDEST SWAP2 POP PUSH2 0x2231 DUP3 DUP5 PUSH2 0x2962 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B14 DUP3 DUP6 PUSH2 0x2962 JUMP JUMPDEST SWAP2 POP PUSH2 0x2231 DUP3 DUP5 PUSH2 0x2933 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B2B DUP3 PUSH2 0x29E9 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B37 DUP3 DUP5 PUSH2 0x28EA JUMP JUMPDEST POP PUSH1 0x20 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B2B DUP3 PUSH2 0x2A22 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x9FF DUP3 DUP5 PUSH2 0x28AD JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x2B67 DUP3 DUP8 PUSH2 0x289E JUMP JUMPDEST PUSH2 0x2B74 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x28AD JUMP JUMPDEST PUSH2 0x2B81 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x28E1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x2B93 DUP2 DUP5 PUSH2 0x28FB JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x2BAB DUP3 DUP7 PUSH2 0x28AD JUMP JUMPDEST PUSH2 0x2BB8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x289E JUMP JUMPDEST PUSH2 0x2231 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x28E1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x9FF DUP3 DUP5 PUSH2 0x28C7 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x9FF DUP3 DUP5 PUSH2 0x28E1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x2BEF DUP3 DUP8 PUSH2 0x28E1 JUMP JUMPDEST PUSH2 0x2BFC PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2A5B JUMP JUMPDEST PUSH2 0x2C09 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x28E1 JUMP JUMPDEST PUSH2 0x2C16 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x28E1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1090 DUP2 DUP5 PUSH2 0x28FB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2C4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9FF DUP3 PUSH2 0x2C8D JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9FF DUP3 PUSH1 0x0 PUSH2 0x9FF DUP3 PUSH2 0x2C70 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2CCB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2CB3 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1C68 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9FF DUP3 PUSH2 0x2CF2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9FF DUP3 PUSH2 0x2CFD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9FF DUP3 PUSH2 0x2D18 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9FF DUP3 PUSH2 0x2D12 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 JUMP JUMPDEST PUSH1 0x60 SHL SWAP1 JUMP JUMPDEST PUSH2 0x2D27 DUP2 PUSH2 0x2C70 JUMP JUMPDEST DUP2 EQ PUSH2 0x2D32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2D27 DUP2 PUSH2 0x2C7B JUMP JUMPDEST PUSH2 0x2D27 DUP2 PUSH2 0x852 JUMP JUMPDEST PUSH2 0x2D27 DUP2 PUSH2 0x2C80 JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x2D32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D27 DUP2 PUSH2 0x2C99 JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 CODESIZE 0xc0 0xea 0x1e PUSH21 0x573D8907E33FFD22D139F5947ABFE1A5CBBFD06742 CALLDATACOPY SWAP2 PUSH7 0xE6A60D6C657870 PUSH6 0x72696D656E74 PUSH2 0x6CF5 PUSH5 0x736F6C6343 STOP SDIV SIGNEXTEND STOP BLOCKHASH ",
"sourceMap": "162:1101:5:-;;;716:544;8:9:-1;5:2;;;30:1;27;20:12;5:2;716:544:5;;;;;;;;;;;;;;;;;;;;;416:31:18;:38;;450:4;-1:-1:-1;;416:38:18;;;;;;;;4469:31:13;:38;;;;;;;;4523:31;:38;;;;;;;;4585:31;:38;;;;;;;;2758:10:15;-1:-1:-1;2741:28:15;;;:16;416:31:18;2741:28:15;;;416:31:18;2741:28:15;;1950:2;2741:52;;4260:31:7;;;;;;;:38;;;;;;;;;;922:15:5;;;;450:4:18;922:15:5;;;;:::i;:::-;-1:-1:-1;943:19:5;;;;:9;;:19;;;;;:::i;:::-;-1:-1:-1;968:22:5;;;;:9;;:22;;;;;:::i;:::-;-1:-1:-1;996:24:5;;;;:10;;:24;;;;;:::i;:::-;-1:-1:-1;1026:11:5;:23;;;1059:9;1055:113;1078:13;:20;1074:1;:24;1055:113;;;1157:4;1117:19;:37;1137:13;1151:1;1137:16;;;;;;;;;;;;;;;;;;;1117:37;;;;;;;;;;;;-1:-1:-1;1117:37:5;:44;;-1:-1:-1;;1117:44:5;;;;;;;;;;-1:-1:-1;1100:3:5;1055:113;;;-1:-1:-1;;1190:10:5;1173:28;;;;:16;:28;;;;;1204:4;1173:35;;-1:-1:-1;162:1101:5;;-1:-1:-1;;;;162:1101:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;162:1101:5;;;-1:-1:-1;162:1101:5;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;22:719:-1:-;;149:3;142:4;134:6;130:17;126:27;116:2;;167:1;164;157:12;116:2;197:6;191:13;219:79;234:63;290:6;234:63;;;219:79;;;210:88;;315:5;340:6;333:5;326:21;370:4;362:6;358:17;348:27;;392:4;387:3;383:14;376:21;;445:6;492:3;484:4;476:6;472:17;467:3;463:27;460:36;457:2;;;509:1;506;499:12;457:2;534:1;519:216;544:6;541:1;538:13;519:216;;;602:3;624:47;667:3;655:10;624:47;;;612:60;;-1:-1;695:4;686:14;;;;714;;;;;566:1;559:9;519:216;;;523:14;109:632;;;;;;;;749:134;827:13;;845:33;827:13;845:33;;;812:71;;;;;890:132;967:13;;985:32;967:13;985:32;;1030:444;;1143:3;1136:4;1128:6;1124:17;1120:27;1110:2;;1161:1;1158;1151:12;1110:2;1191:6;1185:13;1213:65;1228:49;1270:6;1228:49;;1213:65;1204:74;;1298:6;1291:5;1284:21;1334:4;1326:6;1322:17;1367:4;1360:5;1356:16;1402:3;1393:6;1388:3;1384:16;1381:25;1378:2;;;1419:1;1416;1409:12;1378:2;1429:39;1461:6;1456:3;1451;1429:39;;;1103:371;;;;;;;;1482:1469;;;;;;;1746:3;1734:9;1725:7;1721:23;1717:33;1714:2;;;1763:1;1760;1753:12;1714:2;1798:24;;-1:-1;;;;;1831:30;;1828:2;;;1874:1;1871;1864:12;1828:2;1894:74;1960:7;1951:6;1940:9;1936:22;1894:74;;;1884:84;;1777:197;2026:2;2015:9;2011:18;2005:25;-1:-1;;;;;2042:6;2039:30;2036:2;;;2082:1;2079;2072:12;2036:2;2102:74;2168:7;2159:6;2148:9;2144:22;2102:74;;;2092:84;;1984:198;2234:2;2223:9;2219:18;2213:25;-1:-1;;;;;2250:6;2247:30;2244:2;;;2290:1;2287;2280:12;2244:2;2310:74;2376:7;2367:6;2356:9;2352:22;2310:74;;;2300:84;;2192:198;2442:2;2431:9;2427:18;2421:25;-1:-1;;;;;2458:6;2455:30;2452:2;;;2498:1;2495;2488:12;2452:2;2518:74;2584:7;2575:6;2564:9;2560:22;2518:74;;;2508:84;;2400:198;2629:3;2648:64;2704:7;2695:6;2684:9;2680:22;2648:64;;;2638:74;;2608:110;2770:3;2759:9;2755:19;2749:26;-1:-1;;;;;2787:6;2784:30;2781:2;;;2827:1;2824;2817:12;2781:2;2847:88;2927:7;2918:6;2907:9;2903:22;2847:88;;;2837:98;;2728:213;1708:1243;;;;;;;;;2958:256;3020:2;3014:9;3046:17;;;-1:-1;;;;;3106:34;;3142:22;;;3103:62;3100:2;;;3178:1;3175;3168:12;3100:2;3194;3187:22;2998:216;;-1:-1;2998:216;3221:303;;-1:-1;;;;;3371:6;3368:30;3365:2;;;3411:1;3408;3401:12;3365:2;-1:-1;3446:4;3434:17;;;3499:15;;3302:222;3531:322;;-1:-1;;;;;3667:6;3664:30;3661:2;;;3707:1;3704;3697:12;3661:2;-1:-1;3838:4;3774;3751:17;;;;-1:-1;;3747:33;3828:15;;3598:255;3939:144;4011:66;4000:78;;3983:100;4091:268;4156:1;4163:101;4177:6;4174:1;4171:13;4163:101;;;4244:11;;;4238:18;4225:11;;;4218:39;4199:2;4192:10;4163:101;;;4279:6;4276:1;4273:13;4270:2;;;4344:1;4335:6;4330:3;4326:16;4319:27;4270:2;4140:219;;;;;4367:117;4436:24;4454:5;4436:24;;;4429:5;4426:35;4416:2;;4475:1;4472;4465:12;4416:2;4410:74;;4491:115;4559:23;4576:5;4559:23;;4533:73;162:1101:5;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "2337800",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"addressToAbility(address)": "infinite",
"approve(address,uint256)": "infinite",
"balanceOf(address)": "infinite",
"claimPerformed(bytes32)": "infinite",
"create(address,uint256,bytes32)": "infinite",
"destroy(uint256)": "infinite",
"generateClaim(address,address,bool,address,uint256,uint256,uint256)": "infinite",
"getApproved(uint256)": "infinite",
"grantAbilities(address,uint256)": "infinite",
"isAble(address,uint256)": "infinite",
"isApprovedForAll(address,address)": "infinite",
"isPaused()": "556",
"isValidSignature(address,bytes32,(bytes32,bytes32,uint8,uint8))": "infinite",
"name()": "infinite",
"ownerOf(uint256)": "infinite",
"revoke(uint256)": "infinite",
"revokeAbilities(address,uint256)": "infinite",
"safeTransferFrom(address,address,uint256)": "infinite",
"safeTransferFrom(address,address,uint256,bytes)": "infinite",
"schemaId()": "590",
"setAbilities(address,uint256)": "infinite",
"setApprovalForAll(address,bool)": "infinite",
"setApprovalForAllWithSignature(address,address,bool,address,uint256,uint256,uint256,(bytes32,bytes32,uint8,uint8))": "infinite",
"setPause(bool)": "infinite",
"setUri(string,string)": "infinite",
"supportsInterface(bytes4)": "infinite",
"symbol()": "infinite",
"tokenByIndex(uint256)": "infinite",
"tokenImprint(uint256)": "infinite",
"tokenOfOwnerByIndex(address,uint256)": "infinite",
"tokenURI(uint256)": "infinite",
"totalSupply()": "infinite",
"transferFrom(address,address,uint256)": "infinite",
"updateTokenImprint(uint256,bytes32)": "infinite",
"uriPostfix()": "infinite",
"uriPrefix()": "infinite"
}
},
"methodIdentifiers": {
"addressToAbility(address)": "45a32c86",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"claimPerformed(bytes32)": "23bf3396",
"create(address,uint256,bytes32)": "b0e329e4",
"destroy(uint256)": "9d118770",
"generateClaim(address,address,bool,address,uint256,uint256,uint256)": "8933c670",
"getApproved(uint256)": "081812fc",
"grantAbilities(address,uint256)": "0ab319e8",
"isAble(address,uint256)": "ba00a330",
"isApprovedForAll(address,address)": "e985e9c5",
"isPaused()": "b187bd26",
"isValidSignature(address,bytes32,(bytes32,bytes32,uint8,uint8))": "8fa76d8d",
"name()": "06fdde03",
"ownerOf(uint256)": "6352211e",
"revoke(uint256)": "20c5429b",
"revokeAbilities(address,uint256)": "f394b6df",
"safeTransferFrom(address,address,uint256)": "42842e0e",
"safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
"schemaId()": "075b1a09",
"setAbilities(address,uint256)": "15ec3b8b",
"setApprovalForAll(address,bool)": "a22cb465",
"setApprovalForAllWithSignature(address,address,bool,address,uint256,uint256,uint256,(bytes32,bytes32,uint8,uint8))": "568f5b48",
"setPause(bool)": "bedb86fb",
"setUri(string,string)": "89b73ec0",
"supportsInterface(bytes4)": "01ffc9a7",
"symbol()": "95d89b41",
"tokenByIndex(uint256)": "4f6ccce7",
"tokenImprint(uint256)": "70c31afc",
"tokenOfOwnerByIndex(address,uint256)": "2f745c59",
"tokenURI(uint256)": "c87b56dd",
"totalSupply()": "18160ddd",
"transferFrom(address,address,uint256)": "23b872dd",
"updateTokenImprint(uint256,bytes32)": "bda0e852",
"uriPostfix()": "c298bba5",
"uriPrefix()": "62b99ad4"
}
},
"metadata": {
"compiler": {
"version": "0.5.11+commit.c082d0b4"
},
"language": "Solidity",
"output": {
"abi": [
{
"constant": true,
"inputs": [
{
"internalType": "bytes4",
"name": "_interfaceID",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "schemaId",
"outputs": [
{
"internalType": "bytes32",
"name": "_schemaId",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "getApproved",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_approved",
"type": "address"
},
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "approve",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "grantAbilities",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "setAbilities",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "revoke",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "claimPerformed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "tokenOfOwnerByIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "safeTransferFrom",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "addressToAbility",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "tokenByIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"internalType": "bool",
"name": "_approved",
"type": "bool"
},
{
"internalType": "address",
"name": "_feeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "_feeValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_seed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_expiration",
"type": "uint256"
},
{
"components": [
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "enum XcertToken.SignatureKind",
"name": "kind",
"type": "uint8"
}
],
"internalType": "struct XcertToken.SignatureData",
"name": "_signature",
"type": "tuple"
}
],
"name": "setApprovalForAllWithSignature",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "uriPrefix",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "ownerOf",
"outputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "tokenImprint",
"outputs": [
{
"internalType": "bytes32",
"name": "imprint",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"internalType": "bool",
"name": "_approved",
"type": "bool"
},
{
"internalType": "address",
"name": "_feeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "_feeValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_seed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_expiration",
"type": "uint256"
}
],
"name": "generateClaim",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "string",
"name": "_uriPrefix",
"type": "string"
},
{
"internalType": "string",
"name": "_uriPostfix",
"type": "string"
}
],
"name": "setUri",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_signer",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_claim",
"type": "bytes32"
},
{
"components": [
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "enum XcertToken.SignatureKind",
"name": "kind",
"type": "uint8"
}
],
"internalType": "struct XcertToken.SignatureData",
"name": "_signature",
"type": "tuple"
}
],
"name": "isValidSignature",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "_symbol",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "destroy",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"internalType": "bool",
"name": "_approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_id",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "_imprint",
"type": "bytes32"
}
],
"name": "create",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isPaused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"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": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "isAble",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "_imprint",
"type": "bytes32"
}
],
"name": "updateTokenImprint",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "bool",
"name": "_isPaused",
"type": "bool"
}
],
"name": "setPause",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "uriPostfix",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "tokenURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "revokeAbilities",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
},
{
"internalType": "string",
"name": "_uriPrefix",
"type": "string"
},
{
"internalType": "string",
"name": "_uriPostfix",
"type": "string"
},
{
"internalType": "bytes32",
"name": "_schemaId",
"type": "bytes32"
},
{
"internalType": "bytes4[]",
"name": "_capabilities",
"type": "bytes4[]"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bool",
"name": "isPaused",
"type": "bool"
}
],
"name": "IsPaused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "_imprint",
"type": "bytes32"
}
],
"name": "TokenImprintUpdate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "SetAbilities",
"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"
},
{
"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"
}
],
"devdoc": {
"details": "This is an example implementation of the Xcert smart contract.",
"methods": {
"approve(address,uint256)": {
"details": "Set or reaffirm the approved address for an NFT.",
"params": {
"_approved": "Address to be approved for the given NFT ID.",
"_tokenId": "ID of the token to be approved."
}
},
"balanceOf(address)": {
"details": "Returns the number of NFTs owned by `_owner`. NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.",
"params": {
"_owner": "Address for whom to query the balance."
},
"return": "Balance of _owner."
},
"constructor": {
"details": "Contract constructor.",
"params": {
"_capabilities": "Array of bytes4 representing supported interfaces which activate the corresponding capabilities.",
"_name": "A descriptive name for a collection of NFTs.",
"_schemaId": "A bytes32 of keccak256 of json schema representing 0xcert Protocol convention.",
"_symbol": "An abbreviated name for NFT.",
"_uriPostfix": "Postfix of URI for token metadata URIs.",
"_uriPrefix": "Prefix of URI for token metadata URIs."
}
},
"create(address,uint256,bytes32)": {
"details": "Creates a new Xcert.",
"params": {
"_id": "The Xcert to be created by the msg.sender.",
"_imprint": "Cryptographic asset imprint.",
"_to": "The address that will own the created Xcert."
}
},
"destroy(uint256)": {
"details": "Destroys a specified Xcert. Reverts if not called from Xcert owner or operator.",
"params": {
"_tokenId": "Id of the Xcert we want to destroy."
}
},
"generateClaim(address,address,bool,address,uint256,uint256,uint256)": {
"details": "Generates hash of the set approval for.",
"params": {
"_approved": "True if the operators is approved, false to revoke approval.",
"_expiration": "Timestamp of when the claim expires.",
"_feeToken": "The token then will be tranfered to the executor of this method.",
"_feeValue": "The amount of token then will be tranfered to the executor of this method.",
"_operator": "Address to add to the set of authorized operators.",
"_owner": "Address to the owner who is approving.",
"_seed": "Arbitrary number to facilitate uniqueness of the order's hash. Usually timestamp."
}
},
"getApproved(uint256)": {
"details": "Get the approved address for a single NFT.",
"params": {
"_tokenId": "ID of the NFT to query the approval of."
},
"return": "Address that _tokenId is approved for. "
},
"grantAbilities(address,uint256)": {
"details": "Grants specific abilities to specified address.",
"params": {
"_abilities": "Number representing bitfield of abilities we are granting.",
"_target": "Address to grant abilities to."
}
},
"isAble(address,uint256)": {
"details": "Check if an address has a specific ability. Throws if checking for 0.",
"params": {
"_abilities": "Number representing bitfield of abilities we are checking.",
"_target": "Address for which we want to check if it has a specific abilities."
}
},
"isApprovedForAll(address,address)": {
"details": "Checks if `_operator` is an approved operator for `_owner`.",
"params": {
"_operator": "The address that acts on behalf of the owner.",
"_owner": "The address that owns the NFTs."
},
"return": "True if approved for all, false otherwise."
},
"isValidSignature(address,bytes32,(bytes32,bytes32,uint8,uint8))": {
"details": "Verifies if claim signature is valid.",
"params": {
"_claim": "Signed Keccak-256 hash.",
"_signature": "Signature data.",
"_signer": "address of signer."
}
},
"name()": {
"details": "Returns a descriptive name for a collection of NFTs.",
"return": "Representing name. "
},
"ownerOf(uint256)": {
"details": "Returns the address of the owner of the NFT. NFTs assigned to zero address are considered invalid, and queries about them do throw.",
"params": {
"_tokenId": "The identifier for an NFT."
},
"return": "Address of _tokenId owner."
},
"revoke(uint256)": {
"details": "Revokes(destroys) a specified Xcert. Reverts if not called from contract owner or authorized address.",
"params": {
"_tokenId": "Id of the Xcert we want to destroy."
}
},
"revokeAbilities(address,uint256)": {
"details": "Unassigns specific abilities from specified address.",
"params": {
"_abilities": "Number representing bitfield of abilities we are revoking.",
"_target": "Address of which we revoke abilites."
}
},
"safeTransferFrom(address,address,uint256)": {
"details": "Transfers the ownership of an NFT from one address to another address.",
"params": {
"_from": "The current owner of the NFT.",
"_to": "The new owner.",
"_tokenId": "The NFT to transfer."
}
},
"safeTransferFrom(address,address,uint256,bytes)": {
"details": "Transfers the ownership of an NFT from one address to another address.",
"params": {
"_data": "Additional data with no specified format, sent in call to `_to`.",
"_from": "The current owner of the NFT.",
"_to": "The new owner.",
"_tokenId": "The NFT to transfer."
}
},
"schemaId()": {
"details": "Returns a bytes32 of sha256 of json schema representing 0xcert Protocol convention.",
"return": "Schema id."
},
"setAbilities(address,uint256)": {
"details": "Sets specific abilities to specified address.",
"params": {
"_abilities": "Number representing bitfield of abilities we are setting.",
"_target": "Address to which we are setting abilitites."
}
},
"setApprovalForAll(address,bool)": {
"details": "Enables or disables approval for a third party (\"operator\") to manage all of `msg.sender`'s assets. It also emits the ApprovalForAll event.",
"params": {
"_approved": "True if the operators is approved, false to revoke approval.",
"_operator": "Address to add to the set of authorized operators."
}
},
"setApprovalForAllWithSignature(address,address,bool,address,uint256,uint256,uint256,(bytes32,bytes32,uint8,uint8))": {
"details": "Enables or disables approval for a third party (\"operator\") to manage all of `msg.sender`'s assets. It also emits the ApprovalForAll event.",
"params": {
"_approved": "True if the operators is approved, false to revoke approval.",
"_expiration": "Timestamp of when the claim expires.",
"_feeToken": "The token then will be tranfered to the executor of this method.",
"_feeValue": "The amount of token then will be tranfered to the executor of this method.",
"_operator": "Address to add to the set of authorized operators.",
"_owner": "Address to the owner who is approving.",
"_seed": "Arbitrary number to facilitate uniqueness of the order's hash. Usually timestamp.",
"_signature": "Data from the signature."
}
},
"setPause(bool)": {
"details": "Sets if Xcerts transfers are paused (can be performed) or not.",
"params": {
"_isPaused": "Pause status."
}
},
"setUri(string,string)": {
"details": "Change URI.",
"params": {
"_uriPostfix": "New URI postfix.",
"_uriPrefix": "New URI prefix."
}
},
"supportsInterface(bytes4)": {
"details": "Function to check which interfaces are suported by this contract.",
"params": {
"_interfaceID": "Id of the interface."
}
},
"symbol()": {
"details": "Returns an abbreviated name for NFTs.",
"return": "Representing symbol. "
},
"tokenByIndex(uint256)": {
"details": "Returns NFT ID by its index.",
"params": {
"_index": "A counter less than `totalSupply()`."
},
"return": "Token id."
},
"tokenImprint(uint256)": {
"details": "Returns imprint for Xcert.",
"params": {
"_tokenId": "Id of the Xcert."
},
"return": "Token imprint."
},
"tokenOfOwnerByIndex(address,uint256)": {
"details": "returns the n-th NFT ID from a list of owner's tokens.",
"params": {
"_index": "Index number representing n-th token in owner's list of tokens.",
"_owner": "Token owner's address."
},
"return": "Token id."
},
"tokenURI(uint256)": {
"details": "Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \"ERC721 Metadata JSON Schema\".",
"params": {
"_tokenId": "Id for which we want URI."
},
"return": "URI of _tokenId."
},
"totalSupply()": {
"details": "Returns the count of all existing NFTs.",
"return": "Total supply of NFTs."
},
"transferFrom(address,address,uint256)": {
"details": "Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.",
"params": {
"_from": "The current owner of the NFT.",
"_to": "The new owner.",
"_tokenId": "The NFT to transfer."
}
},
"updateTokenImprint(uint256,bytes32)": {
"details": "Updates Xcert imprint.",
"params": {
"_imprint": "New imprint.",
"_tokenId": "Id of the Xcert."
}
}
}
},
"userdoc": {
"methods": {
"approve(address,uint256)": {
"notice": "The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner."
},
"getApproved(uint256)": {
"notice": "Throws if `_tokenId` is not a valid NFT."
},
"safeTransferFrom(address,address,uint256)": {
"notice": "This works identically to the other function with an extra data parameter, except this function just sets data to \"\"."
},
"safeTransferFrom(address,address,uint256,bytes)": {
"notice": "Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`."
},
"setApprovalForAll(address,bool)": {
"notice": "This works even if sender doesn't own any tokens at the time."
},
"setApprovalForAllWithSignature(address,address,bool,address,uint256,uint256,uint256,(bytes32,bytes32,uint8,uint8))": {
"notice": "This works even if sender doesn't own any tokens at the time."
},
"tokenURI(uint256)": {
"notice": "A distinct Uniform Resource Identifier (URI) for a given asset."
},
"transferFrom(address,address,uint256)": {
"notice": "The caller is responsible to confirm that `_to` is capable of receiving NFTs or else they maybe be permanently lost."
}
}
}
},
"settings": {
"compilationTarget": {
"./src/contracts/mocks/xcert-mock.sol": "XcertMock"
},
"evmVersion": "constantinople",
"libraries": {},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"./src/contracts/ixcert-burnable.sol": {
"keccak256": "0x4853a715162ef41a4814d3baa827610e9001c5f1459ea8b1952dbe67f14aee6e",
"urls": [
"bzz-raw://3101b14bb3a45df5b3303b51d82888d161260ea42671ee0afc788557550d4a2b",
"dweb:/ipfs/QmYCbtGiuhLoa4U9p2LHip8thQPs3XQWZ5nXkZEHfqKQUb"
]
},
"./src/contracts/ixcert-mutable.sol": {
"keccak256": "0x58d1ded43df495e714dfa7e2470cc247dc0c3682d780a073bf504b75ba7b5f23",
"urls": [
"bzz-raw://1d3022f9e374cc58eb7dbe9d7234ed01bcd120342314c9f4342f7c4277cc351d",
"dweb:/ipfs/QmPXDvhaa7kMr8DWgP7L6KYhqpWjdbC812WcisqEbb5qbm"
]
},
"./src/contracts/ixcert-pausable.sol": {
"keccak256": "0xfcf9b1c635b81790ce2eed5a2e781626a1e5a22042c326bf90950d30c23f7c6b",
"urls": [
"bzz-raw://6aebd1a3477b73abb7e6984b3170042030517cb1699e1e5c88ecd1c0c1fc4adf",
"dweb:/ipfs/QmXtR4y6Q4vkymCTTRWjt6UKJDfeQED8YobhzfgYs39gas"
]
},
"./src/contracts/ixcert-revokable.sol": {
"keccak256": "0x689a865e8fb40b6a3e9b399f6658b989fbf313d99701fc6f3c4c84288a6b8806",
"urls": [
"bzz-raw://299874f549929eb35ab4775bbdf0a2862729fd2df83f8c3d3e2ada92297bd6dc",
"dweb:/ipfs/QmTjAycFyxa68vDD2herxUdzL7FaAXZFWHtvcGztYJYd3S"
]
},
"./src/contracts/ixcert.sol": {
"keccak256": "0x8e259dead62dd118c6743eea9f68ad6dfbe4c5e76874c9988d249f2adae9cc55",
"urls": [
"bzz-raw://1be0be73129efe73ecc199eef7022d25bf8e7dfbaef879fc4f3d39c319350c66",
"dweb:/ipfs/QmP1htkVQaQy6Y4zUcge5aSEHrjH1ipz1xQy4gGAqbpRrT"
]
},
"./src/contracts/mocks/xcert-mock.sol": {
"keccak256": "0xf28cfc10081f88f59db60a1921105f9749fc55959653df8d89805134e4a89291",
"urls": [
"bzz-raw://4ce6c3a8c59a6baae24750a3166585011d7132b6ee33c5a101ec60c05811bdba",
"dweb:/ipfs/QmeJcDN6ZyYYekKjgHMjDWC2WHRwZfHKVQjHSdHGLDdXMU"
]
},
"./src/contracts/xcert.sol": {
"keccak256": "0x118a5f14a8014896d0839c94dd93efda296517bdd2cd8ccac50d8db902de3126",
"urls": [
"bzz-raw://c891010b7cd78d87ddaccb5b49d0288929be81ad41380cb726ad23f12c317019",
"dweb:/ipfs/QmVnhX5dM3cDLrFKnABapabBqrnge81Ltdxf2GHb1fhXTn"
]
},
"@0xcert/ethereum-erc20-contracts/src/contracts/erc20.sol": {
"keccak256": "0x822f44d162ded1c455b75f2133cbc671a7aef3b614dc56c7ee87b08c456fc606",
"urls": [
"bzz-raw://fb07e980c678876f453e7622ed68b9a73952944847fba5dfb61132e2614b59f4",
"dweb:/ipfs/QmTvdgTB21uQ1iAoNsSMBdFsaJf1PpqVr6NTi6h4aSYFgQ"
]
},
"@0xcert/ethereum-erc721-contracts/src/contracts/erc721-enumerable.sol": {
"keccak256": "0x36ee269ef57d209d5d3a83bc6d8b1b9f0600138ae8d1dc33c9e96b1a4156f4a8",
"urls": [
"bzz-raw://bd3fe0a32a606c3345f5ad8a9444ceb4b741eb9620b8449d57345be7a1de680b",
"dweb:/ipfs/QmR9Pt3XW3az3rgppt9Pf7i5gPcuvyPgRxEZvYoPQbDdxv"
]
},
"@0xcert/ethereum-erc721-contracts/src/contracts/erc721-metadata.sol": {
"keccak256": "0x55c1d9392b0352110fc2dacc472019a00c427b27efa7173c66a51ff1eb39a6c2",
"urls": [
"bzz-raw://1db33ac86f34c26a535039bb2d3472793961fe294561a33fecdba3dd67dd7f25",
"dweb:/ipfs/QmVMbYS97c2M7RAbSKf8ERMBkiZkgzC9q1832HcDveJBpw"
]
},
"@0xcert/ethereum-erc721-contracts/src/contracts/erc721-token-receiver.sol": {
"keccak256": "0x60a9bc3ad63afe3bf5d33eb3e41eba6bdf2e669dd46accc36d1919e560b4cc83",
"urls": [
"bzz-raw://fdad7e0bf404487952d208893cde337dcd8a4bd8289c787ebb65b7571acb68c9",
"dweb:/ipfs/QmPAEXbHnBKCH1766CE9dE4VtDiU9A2S8926yH9LU78q5v"
]
},
"@0xcert/ethereum-erc721-contracts/src/contracts/erc721.sol": {
"keccak256": "0x1178c92b13890f663bcefcf068bb97d89baa2de0e76f1176748c94b3fd73d2e9",
"urls": [
"bzz-raw://fe7a504be201bab5c9de3740b171b568bc1b55944bf80f736aa923f0e7af469d",
"dweb:/ipfs/QmQF5njfjDXP7eLk6CHZPXpXH8vP8wW4awdq971aFDXqE5"
]
},
"@0xcert/ethereum-erc721-contracts/src/contracts/nf-token-metadata-enumerable.sol": {
"keccak256": "0xcee6089bdcd41bcef1a4b90032107aa47d492b64669e2ba7017a4b4121fdb2f8",
"urls": [
"bzz-raw://eb68dccb37d895b3391d3c4b4e7a69b3858bc118ab69d2767a7d0ee1511ea9bb",
"dweb:/ipfs/QmbGq5jEp2AWjPd8k5bPimgSZc6twKCDK4PbRyB8MuyGiQ"
]
},
"@0xcert/ethereum-utils-contracts/src/contracts/math/safe-math.sol": {
"keccak256": "0xaaa2b4f34d7c38e83b4283ee162ee56b0f1d5e75a12953eed687800bc4b795f0",
"urls": [
"bzz-raw://ad10c22676c0de032dd96c472709dea488cc38541f491c89354cd0b3ba2c60e6",
"dweb:/ipfs/QmXTh43UFD15ADzxgPAL5RQBX1WsF1N1La8zFH8Cp6eBsJ"
]
},
"@0xcert/ethereum-utils-contracts/src/contracts/permission/abilitable.sol": {
"keccak256": "0x31779291f464ad2d5c2e4e0cb47cf9cddee79c538999c979ee8269519d0e9218",
"urls": [
"bzz-raw://6f683c79a839b092aff873c9106e38247bcff7eee6a0ccf6734bf07b5f659b3b",
"dweb:/ipfs/QmTKUqWX9EX9G8L4FNikasL7LF8WENyPJ4NitMwNJN9cMW"
]
},
"@0xcert/ethereum-utils-contracts/src/contracts/utils/address-utils.sol": {
"keccak256": "0xd9c4c429ff2643eae6c3837d1d86ef07bf1e827e1430b371ce219f4dd54cacfb",
"urls": [
"bzz-raw://f6a5dc2e88e7e0a3be7a7cf79d79815f6348a8e4a8e33459b3bb240db4c34ded",
"dweb:/ipfs/QmP65psvpZvC4PuEsS9WTamGvFhKda8zieDjwYdWXJmn62"
]
},
"@0xcert/ethereum-utils-contracts/src/contracts/utils/erc165.sol": {
"keccak256": "0x8f800c32aa7d2b379b2b794e254ee4a0546ad595b822bdd13aa95c0c1cfe4651",
"urls": [
"bzz-raw://13ef2fd7f7461600257fc0cfb915fa5328fd6070a82c27bfef859c5c52f6408c",
"dweb:/ipfs/QmZC2eixjJkt5uPnxSy2QWa3dj5QJdzUezKo4n8mWbPWzq"
]
},
"@0xcert/ethereum-utils-contracts/src/contracts/utils/supports-interface.sol": {
"keccak256": "0x54c3acc0fb0e027b8a4681972152fcc92718d680fd7758e0b0bd6572d1135273",
"urls": [
"bzz-raw://37d4f8ace2514dd79a21aa8e48b09c9e1f3a523521691be036214a167a267f9d",
"dweb:/ipfs/QmcEVC4MtfXUe7YBaeVecvMocBM7ZtBisoq5yf7xZ2R7AZ"
]
}
},
"version": 1
},
"userdoc": {
"methods": {
"approve(address,uint256)": {
"notice": "The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner."
},
"getApproved(uint256)": {
"notice": "Throws if `_tokenId` is not a valid NFT."
},
"safeTransferFrom(address,address,uint256)": {
"notice": "This works identically to the other function with an extra data parameter, except this function just sets data to \"\"."
},
"safeTransferFrom(address,address,uint256,bytes)": {
"notice": "Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`."
},
"setApprovalForAll(address,bool)": {
"notice": "This works even if sender doesn't own any tokens at the time."
},
"setApprovalForAllWithSignature(address,address,bool,address,uint256,uint256,uint256,(bytes32,bytes32,uint8,uint8))": {
"notice": "This works even if sender doesn't own any tokens at the time."
},
"tokenURI(uint256)": {
"notice": "A distinct Uniform Resource Identifier (URI) for a given asset."
},
"transferFrom(address,address,uint256)": {
"notice": "The caller is responsible to confirm that `_to` is capable of receiving NFTs or else they maybe be permanently lost."
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment