{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "allSourcePaths": {
    "100": "node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol",
    "101": "node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol",
    "102": "node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol",
    "103": "node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol",
    "104": "node_modules/@openzeppelin/contracts/utils/Address.sol",
    "105": "node_modules/@openzeppelin/contracts/utils/Context.sol",
    "107": "node_modules/@openzeppelin/contracts/utils/Strings.sol",
    "108": "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
    "109": "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"
  },
  "ast": {
    "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol",
    "exportedSymbols": {
      "Address": [
        24344
      ],
      "Context": [
        26491
      ],
      "ERC165": [
        26791
      ],
      "ERC721": [
        22300
      ],
      "IERC165": [
        26324
      ],
      "IERC721": [
        19129
      ],
      "IERC721Metadata": [
        27257
      ],
      "IERC721Receiver": [
        27230
      ],
      "Strings": [
        26767
      ]
    },
    "id": 22301,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 21436,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "107:23:100"
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol",
        "file": "./IERC721.sol",
        "id": 21437,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 22301,
        "sourceUnit": 19130,
        "src": "132:23:100",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol",
        "file": "./IERC721Receiver.sol",
        "id": 21438,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 22301,
        "sourceUnit": 27231,
        "src": "156:31:100",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol",
        "file": "./extensions/IERC721Metadata.sol",
        "id": 21439,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 22301,
        "sourceUnit": 27258,
        "src": "188:42:100",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts/utils/Address.sol",
        "file": "../../utils/Address.sol",
        "id": 21440,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 22301,
        "sourceUnit": 24345,
        "src": "231:33:100",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts/utils/Context.sol",
        "file": "../../utils/Context.sol",
        "id": 21441,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 22301,
        "sourceUnit": 26492,
        "src": "265:33:100",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts/utils/Strings.sol",
        "file": "../../utils/Strings.sol",
        "id": 21442,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 22301,
        "sourceUnit": 26768,
        "src": "299:33:100",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
        "file": "../../utils/introspection/ERC165.sol",
        "id": 21443,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 22301,
        "sourceUnit": 26792,
        "src": "333:46:100",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 21445,
              "name": "Context",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 26491,
              "src": "647:7:100"
            },
            "id": 21446,
            "nodeType": "InheritanceSpecifier",
            "src": "647:7:100"
          },
          {
            "baseName": {
              "id": 21447,
              "name": "ERC165",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 26791,
              "src": "656:6:100"
            },
            "id": 21448,
            "nodeType": "InheritanceSpecifier",
            "src": "656:6:100"
          },
          {
            "baseName": {
              "id": 21449,
              "name": "IERC721",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 19129,
              "src": "664:7:100"
            },
            "id": 21450,
            "nodeType": "InheritanceSpecifier",
            "src": "664:7:100"
          },
          {
            "baseName": {
              "id": 21451,
              "name": "IERC721Metadata",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 27257,
              "src": "673:15:100"
            },
            "id": 21452,
            "nodeType": "InheritanceSpecifier",
            "src": "673:15:100"
          }
        ],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 21444,
          "nodeType": "StructuredDocumentation",
          "src": "381:246:100",
          "text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."
        },
        "fullyImplemented": true,
        "id": 22300,
        "linearizedBaseContracts": [
          22300,
          27257,
          19129,
          26791,
          26324,
          26491
        ],
        "name": "ERC721",
        "nameLocation": "637:6:100",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 21455,
            "libraryName": {
              "id": 21453,
              "name": "Address",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 24344,
              "src": "701:7:100"
            },
            "nodeType": "UsingForDirective",
            "src": "695:26:100",
            "typeName": {
              "id": 21454,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "713:7:100",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "id": 21458,
            "libraryName": {
              "id": 21456,
              "name": "Strings",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 26767,
              "src": "732:7:100"
            },
            "nodeType": "UsingForDirective",
            "src": "726:26:100",
            "typeName": {
              "id": 21457,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "744:7:100",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 21460,
            "mutability": "mutable",
            "name": "_name",
            "nameLocation": "791:5:100",
            "nodeType": "VariableDeclaration",
            "scope": 22300,
            "src": "776:20:100",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 21459,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "776:6:100",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 21462,
            "mutability": "mutable",
            "name": "_symbol",
            "nameLocation": "838:7:100",
            "nodeType": "VariableDeclaration",
            "scope": 22300,
            "src": "823:22:100",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 21461,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "823:6:100",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 21466,
            "mutability": "mutable",
            "name": "_owners",
            "nameLocation": "934:7:100",
            "nodeType": "VariableDeclaration",
            "scope": 22300,
            "src": "898:43:100",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
              "typeString": "mapping(uint256 => address)"
            },
            "typeName": {
              "id": 21465,
              "keyType": {
                "id": 21463,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "906:7:100",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "898:27:100",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                "typeString": "mapping(uint256 => address)"
              },
              "valueType": {
                "id": 21464,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "917:7:100",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 21470,
            "mutability": "mutable",
            "name": "_balances",
            "nameLocation": "1028:9:100",
            "nodeType": "VariableDeclaration",
            "scope": 22300,
            "src": "992:45:100",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 21469,
              "keyType": {
                "id": 21467,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1000:7:100",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "992:27:100",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 21468,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1011:7:100",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 21474,
            "mutability": "mutable",
            "name": "_tokenApprovals",
            "nameLocation": "1129:15:100",
            "nodeType": "VariableDeclaration",
            "scope": 22300,
            "src": "1093:51:100",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
              "typeString": "mapping(uint256 => address)"
            },
            "typeName": {
              "id": 21473,
              "keyType": {
                "id": 21471,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1101:7:100",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1093:27:100",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                "typeString": "mapping(uint256 => address)"
              },
              "valueType": {
                "id": 21472,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1112:7:100",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 21480,
            "mutability": "mutable",
            "name": "_operatorApprovals",
            "nameLocation": "1252:18:100",
            "nodeType": "VariableDeclaration",
            "scope": 22300,
            "src": "1199:71:100",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
              "typeString": "mapping(address => mapping(address => bool))"
            },
            "typeName": {
              "id": 21479,
              "keyType": {
                "id": 21475,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1207:7:100",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1199:44:100",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                "typeString": "mapping(address => mapping(address => bool))"
              },
              "valueType": {
                "id": 21478,
                "keyType": {
                  "id": 21476,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1226:7:100",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "1218:24:100",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "valueType": {
                  "id": 21477,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1237:4:100",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                }
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 21496,
              "nodeType": "Block",
              "src": "1446:57:100",
              "statements": [
                {
                  "expression": {
                    "id": 21490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 21488,
                      "name": "_name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21460,
                      "src": "1456:5:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 21489,
                      "name": "name_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21483,
                      "src": "1464:5:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1456:13:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 21491,
                  "nodeType": "ExpressionStatement",
                  "src": "1456:13:100"
                },
                {
                  "expression": {
                    "id": 21494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 21492,
                      "name": "_symbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21462,
                      "src": "1479:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 21493,
                      "name": "symbol_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21485,
                      "src": "1489:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1479:17:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 21495,
                  "nodeType": "ExpressionStatement",
                  "src": "1479:17:100"
                }
              ]
            },
            "documentation": {
              "id": 21481,
              "nodeType": "StructuredDocumentation",
              "src": "1277:108:100",
              "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."
            },
            "id": 21497,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21486,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21483,
                  "mutability": "mutable",
                  "name": "name_",
                  "nameLocation": "1416:5:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21497,
                  "src": "1402:19:100",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21482,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1402:6:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21485,
                  "mutability": "mutable",
                  "name": "symbol_",
                  "nameLocation": "1437:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21497,
                  "src": "1423:21:100",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21484,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1423:6:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1401:44:100"
            },
            "returnParameters": {
              "id": 21487,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1446:0:100"
            },
            "scope": 22300,
            "src": "1390:113:100",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              26323,
              26790
            ],
            "body": {
              "id": 21527,
              "nodeType": "Block",
              "src": "1678:192:100",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 21525,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 21520,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 21513,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 21508,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21500,
                          "src": "1707:11:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 21510,
                                "name": "IERC721",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19129,
                                "src": "1727:7:100",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721_$19129_$",
                                  "typeString": "type(contract IERC721)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721_$19129_$",
                                  "typeString": "type(contract IERC721)"
                                }
                              ],
                              "id": 21509,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "1722:4:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 21511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1722:13:100",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$19129",
                              "typeString": "type(contract IERC721)"
                            }
                          },
                          "id": 21512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "interfaceId",
                          "nodeType": "MemberAccess",
                          "src": "1722:25:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "1707:40:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 21519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 21514,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21500,
                          "src": "1763:11:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 21516,
                                "name": "IERC721Metadata",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27257,
                                "src": "1783:15:100",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$27257_$",
                                  "typeString": "type(contract IERC721Metadata)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$27257_$",
                                  "typeString": "type(contract IERC721Metadata)"
                                }
                              ],
                              "id": 21515,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "1778:4:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 21517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1778:21:100",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$27257",
                              "typeString": "type(contract IERC721Metadata)"
                            }
                          },
                          "id": 21518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "interfaceId",
                          "nodeType": "MemberAccess",
                          "src": "1778:33:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "1763:48:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1707:104:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "arguments": [
                        {
                          "id": 21523,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21500,
                          "src": "1851:11:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "expression": {
                          "id": 21521,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -25,
                          "src": "1827:5:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_super$_ERC721_$22300_$",
                            "typeString": "type(contract super ERC721)"
                          }
                        },
                        "id": 21522,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "supportsInterface",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 26790,
                        "src": "1827:23:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                          "typeString": "function (bytes4) view returns (bool)"
                        }
                      },
                      "id": 21524,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1827:36:100",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1707:156:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 21507,
                  "id": 21526,
                  "nodeType": "Return",
                  "src": "1688:175:100"
                }
              ]
            },
            "documentation": {
              "id": 21498,
              "nodeType": "StructuredDocumentation",
              "src": "1509:56:100",
              "text": " @dev See {IERC165-supportsInterface}."
            },
            "functionSelector": "01ffc9a7",
            "id": 21528,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nameLocation": "1579:17:100",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21504,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 21502,
                  "name": "ERC165",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26791,
                  "src": "1646:6:100"
                },
                {
                  "id": 21503,
                  "name": "IERC165",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26324,
                  "src": "1654:7:100"
                }
              ],
              "src": "1637:25:100"
            },
            "parameters": {
              "id": 21501,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21500,
                  "mutability": "mutable",
                  "name": "interfaceId",
                  "nameLocation": "1604:11:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21528,
                  "src": "1597:18:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 21499,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1597:6:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1596:20:100"
            },
            "returnParameters": {
              "id": 21507,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21506,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 21528,
                  "src": "1672:4:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21505,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1672:4:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1671:6:100"
            },
            "scope": 22300,
            "src": "1570:300:100",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              19054
            ],
            "body": {
              "id": 21551,
              "nodeType": "Block",
              "src": "2010:124:100",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 21543,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 21538,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21531,
                          "src": "2028:5:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 21541,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2045:1:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 21540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2037:7:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 21539,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2037:7:100",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 21542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2037:10:100",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2028:19:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373",
                        "id": 21544,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2049:44:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba",
                          "typeString": "literal_string \"ERC721: balance query for the zero address\""
                        },
                        "value": "ERC721: balance query for the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba",
                          "typeString": "literal_string \"ERC721: balance query for the zero address\""
                        }
                      ],
                      "id": 21537,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2020:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21545,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2020:74:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21546,
                  "nodeType": "ExpressionStatement",
                  "src": "2020:74:100"
                },
                {
                  "expression": {
                    "baseExpression": {
                      "id": 21547,
                      "name": "_balances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21470,
                      "src": "2111:9:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 21549,
                    "indexExpression": {
                      "id": 21548,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21531,
                      "src": "2121:5:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2111:16:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 21536,
                  "id": 21550,
                  "nodeType": "Return",
                  "src": "2104:23:100"
                }
              ]
            },
            "documentation": {
              "id": 21529,
              "nodeType": "StructuredDocumentation",
              "src": "1876:48:100",
              "text": " @dev See {IERC721-balanceOf}."
            },
            "functionSelector": "70a08231",
            "id": 21552,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOf",
            "nameLocation": "1938:9:100",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21533,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1983:8:100"
            },
            "parameters": {
              "id": 21532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21531,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "1956:5:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21552,
                  "src": "1948:13:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21530,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1948:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1947:15:100"
            },
            "returnParameters": {
              "id": 21536,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21535,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 21552,
                  "src": "2001:7:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21534,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2001:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2000:9:100"
            },
            "scope": 22300,
            "src": "1929:205:100",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              19062
            ],
            "body": {
              "id": 21579,
              "nodeType": "Block",
              "src": "2272:154:100",
              "statements": [
                {
                  "assignments": [
                    21562
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21562,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "2290:5:100",
                      "nodeType": "VariableDeclaration",
                      "scope": 21579,
                      "src": "2282:13:100",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 21561,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2282:7:100",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 21566,
                  "initialValue": {
                    "baseExpression": {
                      "id": 21563,
                      "name": "_owners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21466,
                      "src": "2298:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      }
                    },
                    "id": 21565,
                    "indexExpression": {
                      "id": 21564,
                      "name": "tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21555,
                      "src": "2306:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2298:16:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2282:32:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 21573,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 21568,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21562,
                          "src": "2332:5:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 21571,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2349:1:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 21570,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2341:7:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 21569,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2341:7:100",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 21572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2341:10:100",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2332:19:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                        "id": 21574,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2353:43:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397",
                          "typeString": "literal_string \"ERC721: owner query for nonexistent token\""
                        },
                        "value": "ERC721: owner query for nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397",
                          "typeString": "literal_string \"ERC721: owner query for nonexistent token\""
                        }
                      ],
                      "id": 21567,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2324:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2324:73:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21576,
                  "nodeType": "ExpressionStatement",
                  "src": "2324:73:100"
                },
                {
                  "expression": {
                    "id": 21577,
                    "name": "owner",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 21562,
                    "src": "2414:5:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 21560,
                  "id": 21578,
                  "nodeType": "Return",
                  "src": "2407:12:100"
                }
              ]
            },
            "documentation": {
              "id": 21553,
              "nodeType": "StructuredDocumentation",
              "src": "2140:46:100",
              "text": " @dev See {IERC721-ownerOf}."
            },
            "functionSelector": "6352211e",
            "id": 21580,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "ownerOf",
            "nameLocation": "2200:7:100",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21557,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2245:8:100"
            },
            "parameters": {
              "id": 21556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21555,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "2216:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21580,
                  "src": "2208:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21554,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2208:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2207:17:100"
            },
            "returnParameters": {
              "id": 21560,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21559,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 21580,
                  "src": "2263:7:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21558,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2263:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2262:9:100"
            },
            "scope": 22300,
            "src": "2191:235:100",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              27242
            ],
            "body": {
              "id": 21589,
              "nodeType": "Block",
              "src": "2557:29:100",
              "statements": [
                {
                  "expression": {
                    "id": 21587,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 21460,
                    "src": "2574:5:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 21586,
                  "id": 21588,
                  "nodeType": "Return",
                  "src": "2567:12:100"
                }
              ]
            },
            "documentation": {
              "id": 21581,
              "nodeType": "StructuredDocumentation",
              "src": "2432:51:100",
              "text": " @dev See {IERC721Metadata-name}."
            },
            "functionSelector": "06fdde03",
            "id": 21590,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "name",
            "nameLocation": "2497:4:100",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21583,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2524:8:100"
            },
            "parameters": {
              "id": 21582,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2501:2:100"
            },
            "returnParameters": {
              "id": 21586,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21585,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 21590,
                  "src": "2542:13:100",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21584,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2542:6:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2541:15:100"
            },
            "scope": 22300,
            "src": "2488:98:100",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              27248
            ],
            "body": {
              "id": 21599,
              "nodeType": "Block",
              "src": "2721:31:100",
              "statements": [
                {
                  "expression": {
                    "id": 21597,
                    "name": "_symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 21462,
                    "src": "2738:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 21596,
                  "id": 21598,
                  "nodeType": "Return",
                  "src": "2731:14:100"
                }
              ]
            },
            "documentation": {
              "id": 21591,
              "nodeType": "StructuredDocumentation",
              "src": "2592:53:100",
              "text": " @dev See {IERC721Metadata-symbol}."
            },
            "functionSelector": "95d89b41",
            "id": 21600,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "symbol",
            "nameLocation": "2659:6:100",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21593,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2688:8:100"
            },
            "parameters": {
              "id": 21592,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2665:2:100"
            },
            "returnParameters": {
              "id": 21596,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21595,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 21600,
                  "src": "2706:13:100",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21594,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2706:6:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2705:15:100"
            },
            "scope": 22300,
            "src": "2650:102:100",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              27256
            ],
            "body": {
              "id": 21641,
              "nodeType": "Block",
              "src": "2906:241:100",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 21611,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21603,
                            "src": "2932:7:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 21610,
                          "name": "_exists",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21873,
                          "src": "2924:7:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 21612,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2924:16:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                        "id": 21613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2942:49:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                          "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                        },
                        "value": "ERC721Metadata: URI query for nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
                          "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\""
                        }
                      ],
                      "id": 21609,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2916:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2916:76:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21615,
                  "nodeType": "ExpressionStatement",
                  "src": "2916:76:100"
                },
                {
                  "assignments": [
                    21617
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21617,
                      "mutability": "mutable",
                      "name": "baseURI",
                      "nameLocation": "3017:7:100",
                      "nodeType": "VariableDeclaration",
                      "scope": 21641,
                      "src": "3003:21:100",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 21616,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "3003:6:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 21620,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 21618,
                      "name": "_baseURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21651,
                      "src": "3027:8:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                        "typeString": "function () view returns (string memory)"
                      }
                    },
                    "id": 21619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3027:10:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3003:34:100"
                },
                {
                  "expression": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 21627,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 21623,
                              "name": "baseURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21617,
                              "src": "3060:7:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 21622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3054:5:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 21621,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3054:5:100",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 21624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3054:14:100",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 21625,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "3054:21:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 21626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3078:1:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "3054:25:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "hexValue": "",
                      "id": 21638,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3138:2:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                        "typeString": "literal_string \"\""
                      },
                      "value": ""
                    },
                    "id": 21639,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "3054:86:100",
                    "trueExpression": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 21632,
                              "name": "baseURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21617,
                              "src": "3106:7:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 21633,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21603,
                                  "src": "3115:7:100",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 21634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toString",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 26649,
                                "src": "3115:16:100",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (string memory)"
                                }
                              },
                              "id": 21635,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3115:18:100",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "id": 21630,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "3089:3:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 21631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "3089:16:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 21636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3089:45:100",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 21629,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3082:6:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                          "typeString": "type(string storage pointer)"
                        },
                        "typeName": {
                          "id": 21628,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3082:6:100",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 21637,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3082:53:100",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 21608,
                  "id": 21640,
                  "nodeType": "Return",
                  "src": "3047:93:100"
                }
              ]
            },
            "documentation": {
              "id": 21601,
              "nodeType": "StructuredDocumentation",
              "src": "2758:55:100",
              "text": " @dev See {IERC721Metadata-tokenURI}."
            },
            "functionSelector": "c87b56dd",
            "id": 21642,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tokenURI",
            "nameLocation": "2827:8:100",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21605,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2873:8:100"
            },
            "parameters": {
              "id": 21604,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21603,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "2844:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21642,
                  "src": "2836:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21602,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2836:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2835:17:100"
            },
            "returnParameters": {
              "id": 21608,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21607,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 21642,
                  "src": "2891:13:100",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21606,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2891:6:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2890:15:100"
            },
            "scope": 22300,
            "src": "2818:329:100",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21650,
              "nodeType": "Block",
              "src": "3454:26:100",
              "statements": [
                {
                  "expression": {
                    "hexValue": "",
                    "id": 21648,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3471:2:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                      "typeString": "literal_string \"\""
                    },
                    "value": ""
                  },
                  "functionReturnParameters": 21647,
                  "id": 21649,
                  "nodeType": "Return",
                  "src": "3464:9:100"
                }
              ]
            },
            "documentation": {
              "id": 21643,
              "nodeType": "StructuredDocumentation",
              "src": "3153:230:100",
              "text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overriden in child contracts."
            },
            "id": 21651,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_baseURI",
            "nameLocation": "3397:8:100",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21644,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3405:2:100"
            },
            "returnParameters": {
              "id": 21647,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21646,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 21651,
                  "src": "3439:13:100",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21645,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3439:6:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3438:15:100"
            },
            "scope": 22300,
            "src": "3388:92:100",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              19090
            ],
            "body": {
              "id": 21693,
              "nodeType": "Block",
              "src": "3607:331:100",
              "statements": [
                {
                  "assignments": [
                    21661
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21661,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "3625:5:100",
                      "nodeType": "VariableDeclaration",
                      "scope": 21693,
                      "src": "3617:13:100",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 21660,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3617:7:100",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 21666,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 21664,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21656,
                        "src": "3648:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 21662,
                        "name": "ERC721",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22300,
                        "src": "3633:6:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721_$22300_$",
                          "typeString": "type(contract ERC721)"
                        }
                      },
                      "id": 21663,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21580,
                      "src": "3633:14:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view returns (address)"
                      }
                    },
                    "id": 21665,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3633:23:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3617:39:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 21670,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 21668,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21654,
                          "src": "3674:2:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "id": 21669,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21661,
                          "src": "3680:5:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3674:11:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572",
                        "id": 21671,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3687:35:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
                          "typeString": "literal_string \"ERC721: approval to current owner\""
                        },
                        "value": "ERC721: approval to current owner"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
                          "typeString": "literal_string \"ERC721: approval to current owner\""
                        }
                      ],
                      "id": 21667,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3666:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21672,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3666:57:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21673,
                  "nodeType": "ExpressionStatement",
                  "src": "3666:57:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 21684,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 21678,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 21675,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26481,
                              "src": "3755:10:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 21676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3755:12:100",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 21677,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21661,
                            "src": "3771:5:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3755:21:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 21680,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21661,
                              "src": "3797:5:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 21681,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26481,
                                "src": "3804:10:100",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 21682,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3804:12:100",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 21679,
                            "name": "isApprovedForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21750,
                            "src": "3780:16:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 21683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3780:37:100",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3755:62:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                        "id": 21685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3831:58:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
                          "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\""
                        },
                        "value": "ERC721: approve caller is not owner nor approved for all"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
                          "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\""
                        }
                      ],
                      "id": 21674,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3734:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3734:165:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21687,
                  "nodeType": "ExpressionStatement",
                  "src": "3734:165:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21689,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21654,
                        "src": "3919:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21690,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21656,
                        "src": "3923:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21688,
                      "name": "_approve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22183,
                      "src": "3910:8:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 21691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3910:21:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21692,
                  "nodeType": "ExpressionStatement",
                  "src": "3910:21:100"
                }
              ]
            },
            "documentation": {
              "id": 21652,
              "nodeType": "StructuredDocumentation",
              "src": "3486:46:100",
              "text": " @dev See {IERC721-approve}."
            },
            "functionSelector": "095ea7b3",
            "id": 21694,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "approve",
            "nameLocation": "3546:7:100",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21658,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3598:8:100"
            },
            "parameters": {
              "id": 21657,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21654,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "3562:2:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21694,
                  "src": "3554:10:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21653,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3554:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21656,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "3574:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21694,
                  "src": "3566:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21655,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3566:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3553:29:100"
            },
            "returnParameters": {
              "id": 21659,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3607:0:100"
            },
            "scope": 22300,
            "src": "3537:401:100",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              19098
            ],
            "body": {
              "id": 21714,
              "nodeType": "Block",
              "src": "4084:132:100",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 21705,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21697,
                            "src": "4110:7:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 21704,
                          "name": "_exists",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21873,
                          "src": "4102:7:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 21706,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4102:16:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                        "id": 21707,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4120:46:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d",
                          "typeString": "literal_string \"ERC721: approved query for nonexistent token\""
                        },
                        "value": "ERC721: approved query for nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d",
                          "typeString": "literal_string \"ERC721: approved query for nonexistent token\""
                        }
                      ],
                      "id": 21703,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4094:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4094:73:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21709,
                  "nodeType": "ExpressionStatement",
                  "src": "4094:73:100"
                },
                {
                  "expression": {
                    "baseExpression": {
                      "id": 21710,
                      "name": "_tokenApprovals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21474,
                      "src": "4185:15:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      }
                    },
                    "id": 21712,
                    "indexExpression": {
                      "id": 21711,
                      "name": "tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21697,
                      "src": "4201:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4185:24:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 21702,
                  "id": 21713,
                  "nodeType": "Return",
                  "src": "4178:31:100"
                }
              ]
            },
            "documentation": {
              "id": 21695,
              "nodeType": "StructuredDocumentation",
              "src": "3944:50:100",
              "text": " @dev See {IERC721-getApproved}."
            },
            "functionSelector": "081812fc",
            "id": 21715,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getApproved",
            "nameLocation": "4008:11:100",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21699,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4057:8:100"
            },
            "parameters": {
              "id": 21698,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21697,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "4028:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21715,
                  "src": "4020:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21696,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4020:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4019:17:100"
            },
            "returnParameters": {
              "id": 21702,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21701,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 21715,
                  "src": "4075:7:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21700,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4075:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4074:9:100"
            },
            "scope": 22300,
            "src": "3999:217:100",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              19106
            ],
            "body": {
              "id": 21731,
              "nodeType": "Block",
              "src": "4367:69:100",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 21725,
                          "name": "_msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26481,
                          "src": "4396:10:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                            "typeString": "function () view returns (address)"
                          }
                        },
                        "id": 21726,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4396:12:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21727,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21718,
                        "src": "4410:8:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21728,
                        "name": "approved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21720,
                        "src": "4420:8:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 21724,
                      "name": "_setApprovalForAll",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22215,
                      "src": "4377:18:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,address,bool)"
                      }
                    },
                    "id": 21729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4377:52:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21730,
                  "nodeType": "ExpressionStatement",
                  "src": "4377:52:100"
                }
              ]
            },
            "documentation": {
              "id": 21716,
              "nodeType": "StructuredDocumentation",
              "src": "4222:56:100",
              "text": " @dev See {IERC721-setApprovalForAll}."
            },
            "functionSelector": "a22cb465",
            "id": 21732,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setApprovalForAll",
            "nameLocation": "4292:17:100",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21722,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4358:8:100"
            },
            "parameters": {
              "id": 21721,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21718,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "4318:8:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21732,
                  "src": "4310:16:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21717,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4310:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21720,
                  "mutability": "mutable",
                  "name": "approved",
                  "nameLocation": "4333:8:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21732,
                  "src": "4328:13:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21719,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4328:4:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4309:33:100"
            },
            "returnParameters": {
              "id": 21723,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4367:0:100"
            },
            "scope": 22300,
            "src": "4283:153:100",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              19116
            ],
            "body": {
              "id": 21749,
              "nodeType": "Block",
              "src": "4605:59:100",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "baseExpression": {
                        "id": 21743,
                        "name": "_operatorApprovals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21480,
                        "src": "4622:18:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                          "typeString": "mapping(address => mapping(address => bool))"
                        }
                      },
                      "id": 21745,
                      "indexExpression": {
                        "id": 21744,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21735,
                        "src": "4641:5:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4622:25:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 21747,
                    "indexExpression": {
                      "id": 21746,
                      "name": "operator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21737,
                      "src": "4648:8:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4622:35:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 21742,
                  "id": 21748,
                  "nodeType": "Return",
                  "src": "4615:42:100"
                }
              ]
            },
            "documentation": {
              "id": 21733,
              "nodeType": "StructuredDocumentation",
              "src": "4442:55:100",
              "text": " @dev See {IERC721-isApprovedForAll}."
            },
            "functionSelector": "e985e9c5",
            "id": 21750,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isApprovedForAll",
            "nameLocation": "4511:16:100",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21739,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4581:8:100"
            },
            "parameters": {
              "id": 21738,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21735,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "4536:5:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21750,
                  "src": "4528:13:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21734,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4528:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21737,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "4551:8:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21750,
                  "src": "4543:16:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21736,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4543:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4527:33:100"
            },
            "returnParameters": {
              "id": 21742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21741,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 21750,
                  "src": "4599:4:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21740,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4599:4:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4598:6:100"
            },
            "scope": 22300,
            "src": "4502:162:100",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              19082
            ],
            "body": {
              "id": 21776,
              "nodeType": "Block",
              "src": "4845:211:100",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 21763,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26481,
                              "src": "4934:10:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 21764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4934:12:100",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21765,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21757,
                            "src": "4948:7:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 21762,
                          "name": "_isApprovedOrOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21914,
                          "src": "4915:18:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 21766,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4915:41:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
                        "id": 21767,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4958:51:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
                          "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
                        },
                        "value": "ERC721: transfer caller is not owner nor approved"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
                          "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
                        }
                      ],
                      "id": 21761,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4907:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21768,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4907:103:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21769,
                  "nodeType": "ExpressionStatement",
                  "src": "4907:103:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21771,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21753,
                        "src": "5031:4:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21772,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21755,
                        "src": "5037:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21773,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21757,
                        "src": "5041:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21770,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22159,
                      "src": "5021:9:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5021:28:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21775,
                  "nodeType": "ExpressionStatement",
                  "src": "5021:28:100"
                }
              ]
            },
            "documentation": {
              "id": 21751,
              "nodeType": "StructuredDocumentation",
              "src": "4670:51:100",
              "text": " @dev See {IERC721-transferFrom}."
            },
            "functionSelector": "23b872dd",
            "id": 21777,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferFrom",
            "nameLocation": "4735:12:100",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21759,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4836:8:100"
            },
            "parameters": {
              "id": 21758,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21753,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "4765:4:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21777,
                  "src": "4757:12:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21752,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4757:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21755,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "4787:2:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21777,
                  "src": "4779:10:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21754,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4779:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21757,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "4807:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21777,
                  "src": "4799:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21756,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4799:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4747:73:100"
            },
            "returnParameters": {
              "id": 21760,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4845:0:100"
            },
            "scope": 22300,
            "src": "4726:330:100",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              19072
            ],
            "body": {
              "id": 21795,
              "nodeType": "Block",
              "src": "5245:56:100",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21789,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21780,
                        "src": "5272:4:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21790,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21782,
                        "src": "5278:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21791,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21784,
                        "src": "5282:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 21792,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5291:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 21788,
                      "name": "safeTransferFrom",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        21796,
                        21826
                      ],
                      "referencedDeclaration": 21826,
                      "src": "5255:16:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,bytes memory)"
                      }
                    },
                    "id": 21793,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5255:39:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21794,
                  "nodeType": "ExpressionStatement",
                  "src": "5255:39:100"
                }
              ]
            },
            "documentation": {
              "id": 21778,
              "nodeType": "StructuredDocumentation",
              "src": "5062:55:100",
              "text": " @dev See {IERC721-safeTransferFrom}."
            },
            "functionSelector": "42842e0e",
            "id": 21796,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "safeTransferFrom",
            "nameLocation": "5131:16:100",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21786,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5236:8:100"
            },
            "parameters": {
              "id": 21785,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21780,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "5165:4:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21796,
                  "src": "5157:12:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21779,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5157:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21782,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "5187:2:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21796,
                  "src": "5179:10:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21781,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5179:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21784,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "5207:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21796,
                  "src": "5199:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21783,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5199:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5147:73:100"
            },
            "returnParameters": {
              "id": 21787,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5245:0:100"
            },
            "scope": 22300,
            "src": "5122:179:100",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              19128
            ],
            "body": {
              "id": 21825,
              "nodeType": "Block",
              "src": "5518:169:100",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 21811,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26481,
                              "src": "5555:10:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 21812,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5555:12:100",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21813,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21803,
                            "src": "5569:7:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 21810,
                          "name": "_isApprovedOrOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21914,
                          "src": "5536:18:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 21814,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5536:41:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
                        "id": 21815,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5579:51:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
                          "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
                        },
                        "value": "ERC721: transfer caller is not owner nor approved"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
                          "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\""
                        }
                      ],
                      "id": 21809,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5528:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21816,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5528:103:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21817,
                  "nodeType": "ExpressionStatement",
                  "src": "5528:103:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21819,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21799,
                        "src": "5655:4:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21820,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21801,
                        "src": "5661:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21821,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21803,
                        "src": "5665:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 21822,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21805,
                        "src": "5674:5:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21818,
                      "name": "_safeTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21855,
                      "src": "5641:13:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,bytes memory)"
                      }
                    },
                    "id": 21823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5641:39:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21824,
                  "nodeType": "ExpressionStatement",
                  "src": "5641:39:100"
                }
              ]
            },
            "documentation": {
              "id": 21797,
              "nodeType": "StructuredDocumentation",
              "src": "5307:55:100",
              "text": " @dev See {IERC721-safeTransferFrom}."
            },
            "functionSelector": "b88d4fde",
            "id": 21826,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "safeTransferFrom",
            "nameLocation": "5376:16:100",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21807,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5509:8:100"
            },
            "parameters": {
              "id": 21806,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21799,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "5410:4:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21826,
                  "src": "5402:12:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21798,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5402:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21801,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "5432:2:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21826,
                  "src": "5424:10:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21800,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5424:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21803,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "5452:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21826,
                  "src": "5444:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21802,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5444:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21805,
                  "mutability": "mutable",
                  "name": "_data",
                  "nameLocation": "5482:5:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21826,
                  "src": "5469:18:100",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 21804,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5469:5:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5392:101:100"
            },
            "returnParameters": {
              "id": 21808,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5518:0:100"
            },
            "scope": 22300,
            "src": "5367:320:100",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21854,
              "nodeType": "Block",
              "src": "6690:166:100",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21839,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21829,
                        "src": "6710:4:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21840,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21831,
                        "src": "6716:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21841,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21833,
                        "src": "6720:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21838,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22159,
                      "src": "6700:9:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21842,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6700:28:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21843,
                  "nodeType": "ExpressionStatement",
                  "src": "6700:28:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 21846,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21829,
                            "src": "6769:4:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21847,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21831,
                            "src": "6775:2:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21848,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21833,
                            "src": "6779:7:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21849,
                            "name": "_data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21835,
                            "src": "6788:5:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 21845,
                          "name": "_checkOnERC721Received",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22277,
                          "src": "6746:22:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256,bytes memory) returns (bool)"
                          }
                        },
                        "id": 21850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6746:48:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                        "id": 21851,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6796:52:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        },
                        "value": "ERC721: transfer to non ERC721Receiver implementer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        }
                      ],
                      "id": 21844,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6738:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21852,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6738:111:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21853,
                  "nodeType": "ExpressionStatement",
                  "src": "6738:111:100"
                }
              ]
            },
            "documentation": {
              "id": 21827,
              "nodeType": "StructuredDocumentation",
              "src": "5693:851:100",
              "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `_data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
            },
            "id": 21855,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_safeTransfer",
            "nameLocation": "6558:13:100",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21836,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21829,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "6589:4:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21855,
                  "src": "6581:12:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21828,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6581:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21831,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "6611:2:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21855,
                  "src": "6603:10:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21830,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6603:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21833,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "6631:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21855,
                  "src": "6623:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21832,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6623:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21835,
                  "mutability": "mutable",
                  "name": "_data",
                  "nameLocation": "6661:5:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21855,
                  "src": "6648:18:100",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 21834,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6648:5:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6571:101:100"
            },
            "returnParameters": {
              "id": 21837,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6690:0:100"
            },
            "scope": 22300,
            "src": "6549:307:100",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21872,
              "nodeType": "Block",
              "src": "7230:54:100",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 21870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 21863,
                        "name": "_owners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21466,
                        "src": "7247:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 21865,
                      "indexExpression": {
                        "id": 21864,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21858,
                        "src": "7255:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7247:16:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 21868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7275:1:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 21867,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7267:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 21866,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7267:7:100",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 21869,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7267:10:100",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "7247:30:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 21862,
                  "id": 21871,
                  "nodeType": "Return",
                  "src": "7240:37:100"
                }
              ]
            },
            "documentation": {
              "id": 21856,
              "nodeType": "StructuredDocumentation",
              "src": "6862:292:100",
              "text": " @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."
            },
            "id": 21873,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_exists",
            "nameLocation": "7168:7:100",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21859,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21858,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "7184:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21873,
                  "src": "7176:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21857,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7176:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7175:17:100"
            },
            "returnParameters": {
              "id": 21862,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21861,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 21873,
                  "src": "7224:4:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21860,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7224:4:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7223:6:100"
            },
            "scope": 22300,
            "src": "7159:125:100",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21913,
              "nodeType": "Block",
              "src": "7541:245:100",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 21885,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21878,
                            "src": "7567:7:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 21884,
                          "name": "_exists",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21873,
                          "src": "7559:7:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 21886,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7559:16:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e",
                        "id": 21887,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7577:46:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c",
                          "typeString": "literal_string \"ERC721: operator query for nonexistent token\""
                        },
                        "value": "ERC721: operator query for nonexistent token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c",
                          "typeString": "literal_string \"ERC721: operator query for nonexistent token\""
                        }
                      ],
                      "id": 21883,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7551:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21888,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7551:73:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21889,
                  "nodeType": "ExpressionStatement",
                  "src": "7551:73:100"
                },
                {
                  "assignments": [
                    21891
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21891,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "7642:5:100",
                      "nodeType": "VariableDeclaration",
                      "scope": 21913,
                      "src": "7634:13:100",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 21890,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7634:7:100",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 21896,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 21894,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21878,
                        "src": "7665:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 21892,
                        "name": "ERC721",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22300,
                        "src": "7650:6:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721_$22300_$",
                          "typeString": "type(contract ERC721)"
                        }
                      },
                      "id": 21893,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21580,
                      "src": "7650:14:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view returns (address)"
                      }
                    },
                    "id": 21895,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7650:23:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7634:39:100"
                },
                {
                  "expression": {
                    "components": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 21910,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 21905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 21899,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21897,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21876,
                              "src": "7691:7:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 21898,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21891,
                              "src": "7702:5:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "7691:16:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 21904,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 21901,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21878,
                                  "src": "7723:7:100",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 21900,
                                "name": "getApproved",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21715,
                                "src": "7711:11:100",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                  "typeString": "function (uint256) view returns (address)"
                                }
                              },
                              "id": 21902,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7711:20:100",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 21903,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21876,
                              "src": "7735:7:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "7711:31:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7691:51:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 21907,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21891,
                              "src": "7763:5:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 21908,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21876,
                              "src": "7770:7:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 21906,
                            "name": "isApprovedForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21750,
                            "src": "7746:16:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 21909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7746:32:100",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7691:87:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 21911,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7690:89:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 21882,
                  "id": 21912,
                  "nodeType": "Return",
                  "src": "7683:96:100"
                }
              ]
            },
            "documentation": {
              "id": 21874,
              "nodeType": "StructuredDocumentation",
              "src": "7290:147:100",
              "text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."
            },
            "id": 21914,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_isApprovedOrOwner",
            "nameLocation": "7451:18:100",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21879,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21876,
                  "mutability": "mutable",
                  "name": "spender",
                  "nameLocation": "7478:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21914,
                  "src": "7470:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21875,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7470:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21878,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "7495:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21914,
                  "src": "7487:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21877,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7487:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7469:34:100"
            },
            "returnParameters": {
              "id": 21882,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21881,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 21914,
                  "src": "7535:4:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21880,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7535:4:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7534:6:100"
            },
            "scope": 22300,
            "src": "7442:344:100",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21928,
              "nodeType": "Block",
              "src": "8181:43:100",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21923,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21917,
                        "src": "8201:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21924,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21919,
                        "src": "8205:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 21925,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8214:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 21922,
                      "name": "_safeMint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        21929,
                        21958
                      ],
                      "referencedDeclaration": 21958,
                      "src": "8191:9:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,bytes memory)"
                      }
                    },
                    "id": 21926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8191:26:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21927,
                  "nodeType": "ExpressionStatement",
                  "src": "8191:26:100"
                }
              ]
            },
            "documentation": {
              "id": 21915,
              "nodeType": "StructuredDocumentation",
              "src": "7792:319:100",
              "text": " @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
            },
            "id": 21929,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_safeMint",
            "nameLocation": "8125:9:100",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21920,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21917,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "8143:2:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21929,
                  "src": "8135:10:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21916,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8135:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21919,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "8155:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21929,
                  "src": "8147:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21918,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8147:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8134:29:100"
            },
            "returnParameters": {
              "id": 21921,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8181:0:100"
            },
            "scope": 22300,
            "src": "8116:108:100",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21957,
              "nodeType": "Block",
              "src": "8560:196:100",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21940,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21932,
                        "src": "8576:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21941,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21934,
                        "src": "8580:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21939,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22024,
                      "src": "8570:5:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 21942,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8570:18:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21943,
                  "nodeType": "ExpressionStatement",
                  "src": "8570:18:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 21948,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8650:1:100",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 21947,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8642:7:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 21946,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8642:7:100",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 21949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8642:10:100",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21950,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21932,
                            "src": "8654:2:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21951,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21934,
                            "src": "8658:7:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21952,
                            "name": "_data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21936,
                            "src": "8667:5:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 21945,
                          "name": "_checkOnERC721Received",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22277,
                          "src": "8619:22:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256,bytes memory) returns (bool)"
                          }
                        },
                        "id": 21953,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8619:54:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                        "id": 21954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8687:52:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        },
                        "value": "ERC721: transfer to non ERC721Receiver implementer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        }
                      ],
                      "id": 21944,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "8598:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21955,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8598:151:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21956,
                  "nodeType": "ExpressionStatement",
                  "src": "8598:151:100"
                }
              ]
            },
            "documentation": {
              "id": 21930,
              "nodeType": "StructuredDocumentation",
              "src": "8230:210:100",
              "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."
            },
            "id": 21958,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_safeMint",
            "nameLocation": "8454:9:100",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21937,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21932,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "8481:2:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21958,
                  "src": "8473:10:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21931,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8473:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21934,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "8501:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21958,
                  "src": "8493:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21933,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8493:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21936,
                  "mutability": "mutable",
                  "name": "_data",
                  "nameLocation": "8531:5:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 21958,
                  "src": "8518:18:100",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 21935,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8518:5:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8463:79:100"
            },
            "returnParameters": {
              "id": 21938,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8560:0:100"
            },
            "scope": 22300,
            "src": "8445:311:100",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 22023,
              "nodeType": "Block",
              "src": "9139:366:100",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 21972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 21967,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21961,
                          "src": "9157:2:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 21970,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9171:1:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 21969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9163:7:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 21968,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9163:7:100",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 21971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9163:10:100",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "9157:16:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                        "id": 21973,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9175:34:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
                          "typeString": "literal_string \"ERC721: mint to the zero address\""
                        },
                        "value": "ERC721: mint to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
                          "typeString": "literal_string \"ERC721: mint to the zero address\""
                        }
                      ],
                      "id": 21966,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9149:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21974,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9149:61:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21975,
                  "nodeType": "ExpressionStatement",
                  "src": "9149:61:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 21980,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "9228:17:100",
                        "subExpression": {
                          "arguments": [
                            {
                              "id": 21978,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21963,
                              "src": "9237:7:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21977,
                            "name": "_exists",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21873,
                            "src": "9229:7:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256) view returns (bool)"
                            }
                          },
                          "id": 21979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9229:16:100",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                        "id": 21981,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9247:30:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
                          "typeString": "literal_string \"ERC721: token already minted\""
                        },
                        "value": "ERC721: token already minted"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
                          "typeString": "literal_string \"ERC721: token already minted\""
                        }
                      ],
                      "id": 21976,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9220:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9220:58:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21983,
                  "nodeType": "ExpressionStatement",
                  "src": "9220:58:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 21987,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9318:1:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 21986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9310:7:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 21985,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9310:7:100",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 21988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9310:10:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21989,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21961,
                        "src": "9322:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 21990,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21963,
                        "src": "9326:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21984,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22288,
                      "src": "9289:20:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9289:45:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21992,
                  "nodeType": "ExpressionStatement",
                  "src": "9289:45:100"
                },
                {
                  "expression": {
                    "id": 21997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 21993,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21470,
                        "src": "9345:9:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 21995,
                      "indexExpression": {
                        "id": 21994,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21961,
                        "src": "9355:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9345:13:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "31",
                      "id": 21996,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9362:1:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "9345:18:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 21998,
                  "nodeType": "ExpressionStatement",
                  "src": "9345:18:100"
                },
                {
                  "expression": {
                    "id": 22003,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 21999,
                        "name": "_owners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21466,
                        "src": "9373:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 22001,
                      "indexExpression": {
                        "id": 22000,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21963,
                        "src": "9381:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9373:16:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 22002,
                      "name": "to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21961,
                      "src": "9392:2:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9373:21:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 22004,
                  "nodeType": "ExpressionStatement",
                  "src": "9373:21:100"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 22008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9427:1:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 22007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9419:7:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 22006,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9419:7:100",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 22009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9419:10:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22010,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21961,
                        "src": "9431:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22011,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21963,
                        "src": "9435:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 22005,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19028,
                      "src": "9410:8:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 22012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9410:33:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22013,
                  "nodeType": "EmitStatement",
                  "src": "9405:38:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 22017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9482:1:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 22016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9474:7:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 22015,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9474:7:100",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 22018,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9474:10:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22019,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21961,
                        "src": "9486:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22020,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21963,
                        "src": "9490:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 22014,
                      "name": "_afterTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22299,
                      "src": "9454:19:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 22021,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9454:44:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22022,
                  "nodeType": "ExpressionStatement",
                  "src": "9454:44:100"
                }
              ]
            },
            "documentation": {
              "id": 21959,
              "nodeType": "StructuredDocumentation",
              "src": "8762:311:100",
              "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."
            },
            "id": 22024,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mint",
            "nameLocation": "9087:5:100",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21964,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21961,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "9101:2:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22024,
                  "src": "9093:10:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21960,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9093:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21963,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "9113:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22024,
                  "src": "9105:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21962,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9105:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9092:29:100"
            },
            "returnParameters": {
              "id": 21965,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9139:0:100"
            },
            "scope": 22300,
            "src": "9078:427:100",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 22083,
              "nodeType": "Block",
              "src": "9771:357:100",
              "statements": [
                {
                  "assignments": [
                    22031
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 22031,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "9789:5:100",
                      "nodeType": "VariableDeclaration",
                      "scope": 22083,
                      "src": "9781:13:100",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 22030,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9781:7:100",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 22036,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 22034,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22027,
                        "src": "9812:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 22032,
                        "name": "ERC721",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22300,
                        "src": "9797:6:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721_$22300_$",
                          "typeString": "type(contract ERC721)"
                        }
                      },
                      "id": 22033,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21580,
                      "src": "9797:14:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view returns (address)"
                      }
                    },
                    "id": 22035,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9797:23:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9781:39:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 22038,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22031,
                        "src": "9852:5:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 22041,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9867:1:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 22040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9859:7:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 22039,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9859:7:100",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 22042,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9859:10:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22043,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22027,
                        "src": "9871:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 22037,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22288,
                      "src": "9831:20:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 22044,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9831:48:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22045,
                  "nodeType": "ExpressionStatement",
                  "src": "9831:48:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 22049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9934:1:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 22048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9926:7:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 22047,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9926:7:100",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 22050,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9926:10:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22051,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22027,
                        "src": "9938:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 22046,
                      "name": "_approve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22183,
                      "src": "9917:8:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 22052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9917:29:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22053,
                  "nodeType": "ExpressionStatement",
                  "src": "9917:29:100"
                },
                {
                  "expression": {
                    "id": 22058,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 22054,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21470,
                        "src": "9957:9:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 22056,
                      "indexExpression": {
                        "id": 22055,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22031,
                        "src": "9967:5:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9957:16:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "hexValue": "31",
                      "id": 22057,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9977:1:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "9957:21:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 22059,
                  "nodeType": "ExpressionStatement",
                  "src": "9957:21:100"
                },
                {
                  "expression": {
                    "id": 22063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "9988:23:100",
                    "subExpression": {
                      "baseExpression": {
                        "id": 22060,
                        "name": "_owners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21466,
                        "src": "9995:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 22062,
                      "indexExpression": {
                        "id": 22061,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22027,
                        "src": "10003:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9995:16:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22064,
                  "nodeType": "ExpressionStatement",
                  "src": "9988:23:100"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 22066,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22031,
                        "src": "10036:5:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 22069,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10051:1:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 22068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10043:7:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 22067,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10043:7:100",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 22070,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10043:10:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22071,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22027,
                        "src": "10055:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 22065,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19028,
                      "src": "10027:8:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 22072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10027:36:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22073,
                  "nodeType": "EmitStatement",
                  "src": "10022:41:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 22075,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22031,
                        "src": "10094:5:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 22078,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10109:1:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 22077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10101:7:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 22076,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10101:7:100",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 22079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10101:10:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22080,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22027,
                        "src": "10113:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 22074,
                      "name": "_afterTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22299,
                      "src": "10074:19:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 22081,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10074:47:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22082,
                  "nodeType": "ExpressionStatement",
                  "src": "10074:47:100"
                }
              ]
            },
            "documentation": {
              "id": 22025,
              "nodeType": "StructuredDocumentation",
              "src": "9511:206:100",
              "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."
            },
            "id": 22084,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_burn",
            "nameLocation": "9731:5:100",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22028,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22027,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "9745:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22084,
                  "src": "9737:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22026,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9737:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9736:17:100"
            },
            "returnParameters": {
              "id": 22029,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9771:0:100"
            },
            "scope": 22300,
            "src": "9722:406:100",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 22158,
              "nodeType": "Block",
              "src": "10561:496:100",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 22100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 22097,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22091,
                              "src": "10594:7:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 22095,
                              "name": "ERC721",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22300,
                              "src": "10579:6:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC721_$22300_$",
                                "typeString": "type(contract ERC721)"
                              }
                            },
                            "id": 22096,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21580,
                            "src": "10579:14:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 22098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10579:23:100",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 22099,
                          "name": "from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22087,
                          "src": "10606:4:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "10579:31:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572",
                        "id": 22101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10612:39:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
                          "typeString": "literal_string \"ERC721: transfer from incorrect owner\""
                        },
                        "value": "ERC721: transfer from incorrect owner"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
                          "typeString": "literal_string \"ERC721: transfer from incorrect owner\""
                        }
                      ],
                      "id": 22094,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "10571:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 22102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10571:81:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22103,
                  "nodeType": "ExpressionStatement",
                  "src": "10571:81:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 22110,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 22105,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22089,
                          "src": "10670:2:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 22108,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10684:1:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 22107,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10676:7:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 22106,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10676:7:100",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 22109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10676:10:100",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "10670:16:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373",
                        "id": 22111,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10688:38:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
                          "typeString": "literal_string \"ERC721: transfer to the zero address\""
                        },
                        "value": "ERC721: transfer to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
                          "typeString": "literal_string \"ERC721: transfer to the zero address\""
                        }
                      ],
                      "id": 22104,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "10662:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 22112,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10662:65:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22113,
                  "nodeType": "ExpressionStatement",
                  "src": "10662:65:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 22115,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22087,
                        "src": "10759:4:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22116,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22089,
                        "src": "10765:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22117,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22091,
                        "src": "10769:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 22114,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22288,
                      "src": "10738:20:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 22118,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10738:39:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22119,
                  "nodeType": "ExpressionStatement",
                  "src": "10738:39:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 22123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10856:1:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 22122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10848:7:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 22121,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10848:7:100",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 22124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10848:10:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22125,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22091,
                        "src": "10860:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 22120,
                      "name": "_approve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22183,
                      "src": "10839:8:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 22126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10839:29:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22127,
                  "nodeType": "ExpressionStatement",
                  "src": "10839:29:100"
                },
                {
                  "expression": {
                    "id": 22132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 22128,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21470,
                        "src": "10879:9:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 22130,
                      "indexExpression": {
                        "id": 22129,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22087,
                        "src": "10889:4:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10879:15:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "hexValue": "31",
                      "id": 22131,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10898:1:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "10879:20:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 22133,
                  "nodeType": "ExpressionStatement",
                  "src": "10879:20:100"
                },
                {
                  "expression": {
                    "id": 22138,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 22134,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21470,
                        "src": "10909:9:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 22136,
                      "indexExpression": {
                        "id": 22135,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22089,
                        "src": "10919:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10909:13:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "31",
                      "id": 22137,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10926:1:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "10909:18:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 22139,
                  "nodeType": "ExpressionStatement",
                  "src": "10909:18:100"
                },
                {
                  "expression": {
                    "id": 22144,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 22140,
                        "name": "_owners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21466,
                        "src": "10937:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 22142,
                      "indexExpression": {
                        "id": 22141,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22091,
                        "src": "10945:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10937:16:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 22143,
                      "name": "to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22089,
                      "src": "10956:2:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10937:21:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 22145,
                  "nodeType": "ExpressionStatement",
                  "src": "10937:21:100"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 22147,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22087,
                        "src": "10983:4:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22148,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22089,
                        "src": "10989:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22149,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22091,
                        "src": "10993:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 22146,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19028,
                      "src": "10974:8:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 22150,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10974:27:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22151,
                  "nodeType": "EmitStatement",
                  "src": "10969:32:100"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 22153,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22087,
                        "src": "11032:4:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22154,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22089,
                        "src": "11038:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22155,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22091,
                        "src": "11042:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 22152,
                      "name": "_afterTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22299,
                      "src": "11012:19:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 22156,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11012:38:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22157,
                  "nodeType": "ExpressionStatement",
                  "src": "11012:38:100"
                }
              ]
            },
            "documentation": {
              "id": 22085,
              "nodeType": "StructuredDocumentation",
              "src": "10134:313:100",
              "text": " @dev Transfers `tokenId` from `from` to `to`.\n  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."
            },
            "id": 22159,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_transfer",
            "nameLocation": "10461:9:100",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22092,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22087,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "10488:4:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22159,
                  "src": "10480:12:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22086,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10480:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22089,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "10510:2:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22159,
                  "src": "10502:10:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22088,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10502:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22091,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "10530:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22159,
                  "src": "10522:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22090,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10522:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10470:73:100"
            },
            "returnParameters": {
              "id": 22093,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10561:0:100"
            },
            "scope": 22300,
            "src": "10452:605:100",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 22182,
              "nodeType": "Block",
              "src": "11232:107:100",
              "statements": [
                {
                  "expression": {
                    "id": 22171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 22167,
                        "name": "_tokenApprovals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21474,
                        "src": "11242:15:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 22169,
                      "indexExpression": {
                        "id": 22168,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22164,
                        "src": "11258:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11242:24:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 22170,
                      "name": "to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22162,
                      "src": "11269:2:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "11242:29:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 22172,
                  "nodeType": "ExpressionStatement",
                  "src": "11242:29:100"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 22176,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22164,
                            "src": "11310:7:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 22174,
                            "name": "ERC721",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22300,
                            "src": "11295:6:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ERC721_$22300_$",
                              "typeString": "type(contract ERC721)"
                            }
                          },
                          "id": 22175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "ownerOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 21580,
                          "src": "11295:14:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                            "typeString": "function (uint256) view returns (address)"
                          }
                        },
                        "id": 22177,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11295:23:100",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22178,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22162,
                        "src": "11320:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22179,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22164,
                        "src": "11324:7:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 22173,
                      "name": "Approval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19037,
                      "src": "11286:8:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 22180,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11286:46:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22181,
                  "nodeType": "EmitStatement",
                  "src": "11281:51:100"
                }
              ]
            },
            "documentation": {
              "id": 22160,
              "nodeType": "StructuredDocumentation",
              "src": "11063:100:100",
              "text": " @dev Approve `to` to operate on `tokenId`\n Emits a {Approval} event."
            },
            "id": 22183,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_approve",
            "nameLocation": "11177:8:100",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22165,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22162,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "11194:2:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22183,
                  "src": "11186:10:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22161,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11186:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22164,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "11206:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22183,
                  "src": "11198:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22163,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11198:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11185:29:100"
            },
            "returnParameters": {
              "id": 22166,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11232:0:100"
            },
            "scope": 22300,
            "src": "11168:171:100",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 22214,
              "nodeType": "Block",
              "src": "11597:184:100",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 22196,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 22194,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22186,
                          "src": "11615:5:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "id": 22195,
                          "name": "operator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22188,
                          "src": "11624:8:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "11615:17:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                        "id": 22197,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11634:27:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                          "typeString": "literal_string \"ERC721: approve to caller\""
                        },
                        "value": "ERC721: approve to caller"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                          "typeString": "literal_string \"ERC721: approve to caller\""
                        }
                      ],
                      "id": 22193,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11607:7:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 22198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11607:55:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22199,
                  "nodeType": "ExpressionStatement",
                  "src": "11607:55:100"
                },
                {
                  "expression": {
                    "id": 22206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 22200,
                          "name": "_operatorApprovals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21480,
                          "src": "11672:18:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                            "typeString": "mapping(address => mapping(address => bool))"
                          }
                        },
                        "id": 22203,
                        "indexExpression": {
                          "id": 22201,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22186,
                          "src": "11691:5:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11672:25:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 22204,
                      "indexExpression": {
                        "id": 22202,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22188,
                        "src": "11698:8:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11672:35:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 22205,
                      "name": "approved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22190,
                      "src": "11710:8:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11672:46:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 22207,
                  "nodeType": "ExpressionStatement",
                  "src": "11672:46:100"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 22209,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22186,
                        "src": "11748:5:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22210,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22188,
                        "src": "11755:8:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 22211,
                        "name": "approved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22190,
                        "src": "11765:8:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 22208,
                      "name": "ApprovalForAll",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19046,
                      "src": "11733:14:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,address,bool)"
                      }
                    },
                    "id": 22212,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11733:41:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22213,
                  "nodeType": "EmitStatement",
                  "src": "11728:46:100"
                }
              ]
            },
            "documentation": {
              "id": 22184,
              "nodeType": "StructuredDocumentation",
              "src": "11345:124:100",
              "text": " @dev Approve `operator` to operate on all of `owner` tokens\n Emits a {ApprovalForAll} event."
            },
            "id": 22215,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setApprovalForAll",
            "nameLocation": "11483:18:100",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22191,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22186,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "11519:5:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22215,
                  "src": "11511:13:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22185,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11511:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22188,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "11542:8:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22215,
                  "src": "11534:16:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22187,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11534:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22190,
                  "mutability": "mutable",
                  "name": "approved",
                  "nameLocation": "11565:8:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22215,
                  "src": "11560:13:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22189,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11560:4:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11501:78:100"
            },
            "returnParameters": {
              "id": 22192,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11597:0:100"
            },
            "scope": 22300,
            "src": "11474:307:100",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 22276,
              "nodeType": "Block",
              "src": "12490:622:100",
              "statements": [
                {
                  "condition": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 22229,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22220,
                        "src": "12504:2:100",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 22230,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24067,
                      "src": "12504:13:100",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 22231,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12504:15:100",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 22274,
                    "nodeType": "Block",
                    "src": "13070:36:100",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 22272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13091:4:100",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 22228,
                        "id": 22273,
                        "nodeType": "Return",
                        "src": "13084:11:100"
                      }
                    ]
                  },
                  "id": 22275,
                  "nodeType": "IfStatement",
                  "src": "12500:606:100",
                  "trueBody": {
                    "id": 22271,
                    "nodeType": "Block",
                    "src": "12521:543:100",
                    "statements": [
                      {
                        "clauses": [
                          {
                            "block": {
                              "id": 22251,
                              "nodeType": "Block",
                              "src": "12636:91:100",
                              "statements": [
                                {
                                  "expression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 22249,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 22245,
                                      "name": "retval",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22243,
                                      "src": "12661:6:100",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "expression": {
                                          "id": 22246,
                                          "name": "IERC721Receiver",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 27230,
                                          "src": "12671:15:100",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$27230_$",
                                            "typeString": "type(contract IERC721Receiver)"
                                          }
                                        },
                                        "id": 22247,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "onERC721Received",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 27229,
                                        "src": "12671:32:100",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                          "typeString": "function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"
                                        }
                                      },
                                      "id": 22248,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "selector",
                                      "nodeType": "MemberAccess",
                                      "src": "12671:41:100",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "12661:51:100",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "functionReturnParameters": 22228,
                                  "id": 22250,
                                  "nodeType": "Return",
                                  "src": "12654:58:100"
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 22252,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 22244,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 22243,
                                  "mutability": "mutable",
                                  "name": "retval",
                                  "nameLocation": "12628:6:100",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22252,
                                  "src": "12621:13:100",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 22242,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12621:6:100",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "src": "12620:15:100"
                            },
                            "src": "12612:115:100"
                          },
                          {
                            "block": {
                              "id": 22268,
                              "nodeType": "Block",
                              "src": "12756:298:100",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 22259,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 22256,
                                        "name": "reason",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22254,
                                        "src": "12778:6:100",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 22257,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "12778:13:100",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 22258,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12795:1:100",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "12778:18:100",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 22266,
                                    "nodeType": "Block",
                                    "src": "12905:135:100",
                                    "statements": [
                                      {
                                        "AST": {
                                          "nodeType": "YulBlock",
                                          "src": "12936:86:100",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "12973:2:100",
                                                        "type": "",
                                                        "value": "32"
                                                      },
                                                      {
                                                        "name": "reason",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12977:6:100"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "12969:3:100"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12969:15:100"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "reason",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12992:6:100"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "12986:5:100"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12986:13:100"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "revert",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12962:6:100"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12962:38:100"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "12962:38:100"
                                            }
                                          ]
                                        },
                                        "evmVersion": "istanbul",
                                        "externalReferences": [
                                          {
                                            "declaration": 22254,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "12977:6:100",
                                            "valueSize": 1
                                          },
                                          {
                                            "declaration": 22254,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "12992:6:100",
                                            "valueSize": 1
                                          }
                                        ],
                                        "id": 22265,
                                        "nodeType": "InlineAssembly",
                                        "src": "12927:95:100"
                                      }
                                    ]
                                  },
                                  "id": 22267,
                                  "nodeType": "IfStatement",
                                  "src": "12774:266:100",
                                  "trueBody": {
                                    "id": 22264,
                                    "nodeType": "Block",
                                    "src": "12798:101:100",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                                              "id": 22261,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "12827:52:100",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                                "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                                              },
                                              "value": "ERC721: transfer to non ERC721Receiver implementer"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                                "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                                              }
                                            ],
                                            "id": 22260,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -19,
                                              -19
                                            ],
                                            "referencedDeclaration": -19,
                                            "src": "12820:6:100",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 22262,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12820:60:100",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 22263,
                                        "nodeType": "ExpressionStatement",
                                        "src": "12820:60:100"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 22269,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 22255,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 22254,
                                  "mutability": "mutable",
                                  "name": "reason",
                                  "nameLocation": "12748:6:100",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22269,
                                  "src": "12735:19:100",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 22253,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12735:5:100",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "src": "12734:21:100"
                            },
                            "src": "12728:326:100"
                          }
                        ],
                        "externalCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 22236,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26481,
                                "src": "12576:10:100",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 22237,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12576:12:100",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22238,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22218,
                              "src": "12590:4:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22239,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22222,
                              "src": "12596:7:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 22240,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22224,
                              "src": "12605:5:100",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 22233,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22220,
                                  "src": "12555:2:100",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 22232,
                                "name": "IERC721Receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27230,
                                "src": "12539:15:100",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$27230_$",
                                  "typeString": "type(contract IERC721Receiver)"
                                }
                              },
                              "id": 22234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12539:19:100",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC721Receiver_$27230",
                                "typeString": "contract IERC721Receiver"
                              }
                            },
                            "id": 22235,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "onERC721Received",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27229,
                            "src": "12539:36:100",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                            }
                          },
                          "id": 22241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12539:72:100",
                          "tryCall": true,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 22270,
                        "nodeType": "TryStatement",
                        "src": "12535:519:100"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 22216,
              "nodeType": "StructuredDocumentation",
              "src": "11787:542:100",
              "text": " @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param _data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"
            },
            "id": 22277,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkOnERC721Received",
            "nameLocation": "12343:22:100",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22225,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22218,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "12383:4:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22277,
                  "src": "12375:12:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22217,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12375:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22220,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "12405:2:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22277,
                  "src": "12397:10:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22219,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12397:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22222,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "12425:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22277,
                  "src": "12417:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22221,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12417:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22224,
                  "mutability": "mutable",
                  "name": "_data",
                  "nameLocation": "12455:5:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22277,
                  "src": "12442:18:100",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 22223,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "12442:5:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12365:101:100"
            },
            "returnParameters": {
              "id": 22228,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22227,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 22277,
                  "src": "12484:4:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22226,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12484:4:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12483:6:100"
            },
            "scope": 22300,
            "src": "12334:778:100",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 22287,
              "nodeType": "Block",
              "src": "13788:2:100",
              "statements": []
            },
            "documentation": {
              "id": 22278,
              "nodeType": "StructuredDocumentation",
              "src": "13118:545:100",
              "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
            },
            "id": 22288,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_beforeTokenTransfer",
            "nameLocation": "13677:20:100",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22285,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22280,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "13715:4:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22288,
                  "src": "13707:12:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22279,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13707:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22282,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "13737:2:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22288,
                  "src": "13729:10:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22281,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13729:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22284,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "13757:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22288,
                  "src": "13749:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22283,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13749:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13697:73:100"
            },
            "returnParameters": {
              "id": 22286,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13788:0:100"
            },
            "scope": 22300,
            "src": "13668:122:100",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 22298,
              "nodeType": "Block",
              "src": "14281:2:100",
              "statements": []
            },
            "documentation": {
              "id": 22289,
              "nodeType": "StructuredDocumentation",
              "src": "13796:361:100",
              "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
            },
            "id": 22299,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_afterTokenTransfer",
            "nameLocation": "14171:19:100",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22296,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22291,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "14208:4:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22299,
                  "src": "14200:12:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22290,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14200:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22293,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "14230:2:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22299,
                  "src": "14222:10:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22292,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14222:7:100",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22295,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "14250:7:100",
                  "nodeType": "VariableDeclaration",
                  "scope": 22299,
                  "src": "14242:15:100",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22294,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14242:7:100",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14190:73:100"
            },
            "returnParameters": {
              "id": 22297,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14281:0:100"
            },
            "scope": 22300,
            "src": "14162:121:100",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          }
        ],
        "scope": 22301,
        "src": "628:13657:100",
        "usedErrors": []
      }
    ],
    "src": "107:14179:100"
  },
  "bytecode": "60806040523480156200001157600080fd5b50604051620014ed380380620014ed8339810160408190526200003491620001c5565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000282565b82805462000076906200022f565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b600082601f8301126200012057600080fd5b81516001600160401b03808211156200013d576200013d6200026c565b604051601f8301601f19908116603f011681019082821181831017156200016857620001686200026c565b816040528381526020925086838588010111156200018557600080fd5b600091505b83821015620001a957858201830151818301840152908201906200018a565b83821115620001bb5760008385830101525b9695505050505050565b60008060408385031215620001d957600080fd5b82516001600160401b0380821115620001f157600080fd5b620001ff868387016200010e565b935060208501519150808211156200021657600080fd5b5062000225858286016200010e565b9150509250929050565b600181811c908216806200024457607f821691505b602082108114156200026657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61125b80620002926000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610f3a565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190611025565b61012461011f366004610f74565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610f10565b6103a6565b005b61014f61015f366004610dbc565b6104bc565b61014f610172366004610dbc565b6104ed565b610124610185366004610f74565b610508565b61019d610198366004610d6e565b61057f565b6040519081526020016100f3565b610104610606565b61014f6101c1366004610ed4565b610615565b61014f6101d4366004610df8565b610624565b6101046101e7366004610f74565b61065c565b6100e76101fa366004610d89565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102899061114a565b80601f01602080910402602001604051908101604052809291908181526020018280546102b59061114a565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661038a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006103b182610508565b9050806001600160a01b0316836001600160a01b0316141561041f5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610381565b336001600160a01b038216148061043b575061043b81336101fa565b6104ad5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610381565b6104b78383610744565b505050565b6104c633826107b2565b6104e25760405162461bcd60e51b81526004016103819061108a565b6104b78383836108a9565b6104b783838360405180602001604052806000815250610624565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610381565b60006001600160a01b0382166105ea5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610381565b506001600160a01b031660009081526003602052604090205490565b6060600180546102899061114a565b610620338383610a45565b5050565b61062e33836107b2565b61064a5760405162461bcd60e51b81526004016103819061108a565b61065684848484610b14565b50505050565b6000818152600260205260409020546060906001600160a01b03166106db5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610381565b60006106f260408051602081019091526000815290565b90506000815111610712576040518060200160405280600081525061073d565b8061071c84610b47565b60405160200161072d929190610fb9565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061077982610508565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661082b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610381565b600061083683610508565b9050806001600160a01b0316846001600160a01b031614806108715750836001600160a01b03166108668461030c565b6001600160a01b0316145b806108a157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166108bc82610508565b6001600160a01b0316146109205760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610381565b6001600160a01b0382166109825760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610381565b61098d600082610744565b6001600160a01b03831660009081526003602052604081208054600192906109b6908490611107565b90915550506001600160a01b03821660009081526003602052604081208054600192906109e49084906110db565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03161415610aa75760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610381565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b1f8484846108a9565b610b2b84848484610c45565b6106565760405162461bcd60e51b815260040161038190611038565b606081610b6b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610b955780610b7f81611185565b9150610b8e9050600a836110f3565b9150610b6f565b60008167ffffffffffffffff811115610bb057610bb06111f6565b6040519080825280601f01601f191660200182016040528015610bda576020820181803683370190505b5090505b84156108a157610bef600183611107565b9150610bfc600a866111a0565b610c079060306110db565b60f81b818381518110610c1c57610c1c6111e0565b60200101906001600160f81b031916908160001a905350610c3e600a866110f3565b9450610bde565b60006001600160a01b0384163b15610d4757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c89903390899088908890600401610fe8565b602060405180830381600087803b158015610ca357600080fd5b505af1925050508015610cd3575060408051601f3d908101601f19168201909252610cd091810190610f57565b60015b610d2d573d808015610d01576040519150601f19603f3d011682016040523d82523d6000602084013e610d06565b606091505b508051610d255760405162461bcd60e51b815260040161038190611038565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506108a1565b506001949350505050565b80356001600160a01b0381168114610d6957600080fd5b919050565b600060208284031215610d8057600080fd5b61073d82610d52565b60008060408385031215610d9c57600080fd5b610da583610d52565b9150610db360208401610d52565b90509250929050565b600080600060608486031215610dd157600080fd5b610dda84610d52565b9250610de860208501610d52565b9150604084013590509250925092565b60008060008060808587031215610e0e57600080fd5b610e1785610d52565b9350610e2560208601610d52565b925060408501359150606085013567ffffffffffffffff80821115610e4957600080fd5b818701915087601f830112610e5d57600080fd5b813581811115610e6f57610e6f6111f6565b604051601f8201601f19908116603f01168101908382118183101715610e9757610e976111f6565b816040528281528a6020848701011115610eb057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ee757600080fd5b610ef083610d52565b915060208301358015158114610f0557600080fd5b809150509250929050565b60008060408385031215610f2357600080fd5b610f2c83610d52565b946020939093013593505050565b600060208284031215610f4c57600080fd5b813561073d8161120c565b600060208284031215610f6957600080fd5b815161073d8161120c565b600060208284031215610f8657600080fd5b5035919050565b60008151808452610fa581602086016020860161111e565b601f01601f19169290920160200192915050565b60008351610fcb81846020880161111e565b835190830190610fdf81836020880161111e565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061101b90830184610f8d565b9695505050505050565b60208152600061073d6020830184610f8d565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082198211156110ee576110ee6111b4565b500190565b600082611102576111026111ca565b500490565b600082821015611119576111196111b4565b500390565b60005b83811015611139578181015183820152602001611121565b838111156106565750506000910152565b600181811c9082168061115e57607f821691505b6020821081141561117f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611199576111996111b4565b5060010190565b6000826111af576111af6111ca565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461122257600080fd5b5056fea2646970667358221220cc95a51a8a5c12a45a273d353775b6bb57b3a1027a73d97ff15cf780f7323bc564736f6c63430008060033",
  "bytecodeSha1": "928799b19b61011710f1b81bf69f880cb6977426",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.6+commit.11564f7e"
  },
  "contractName": "ERC721",
  "coverageMap": {
    "branches": {
      "100": {
        "ERC721._safeTransfer": {
          "61": [
            6746,
            6794,
            true
          ]
        },
        "ERC721._setApprovalForAll": {
          "60": [
            11615,
            11632,
            true
          ]
        },
        "ERC721._transfer": {
          "58": [
            10579,
            10610,
            true
          ],
          "59": [
            10670,
            10686,
            true
          ]
        },
        "ERC721.approve": {
          "50": [
            3674,
            3685,
            true
          ],
          "51": [
            3755,
            3776,
            true
          ],
          "52": [
            3780,
            3817,
            true
          ]
        },
        "ERC721.balanceOf": {
          "55": [
            2028,
            2047,
            true
          ]
        },
        "ERC721.ownerOf": {
          "54": [
            2332,
            2351,
            true
          ]
        },
        "ERC721.safeTransferFrom": {
          "56": [
            5536,
            5577,
            true
          ]
        },
        "ERC721.tokenURI": {
          "57": [
            3054,
            3079,
            true
          ]
        },
        "ERC721.transferFrom": {
          "53": [
            4915,
            4956,
            true
          ]
        }
      },
      "101": {},
      "102": {},
      "103": {},
      "104": {},
      "105": {},
      "107": {
        "Strings.toString": {
          "62": [
            601,
            611,
            false
          ]
        }
      },
      "108": {},
      "109": {}
    },
    "statements": {
      "100": {
        "ERC721._approve": {
          "24": [
            11242,
            11271
          ],
          "25": [
            11281,
            11332
          ]
        },
        "ERC721._baseURI": {
          "22": [
            3464,
            3473
          ]
        },
        "ERC721._checkOnERC721Received": {
          "47": [
            12820,
            12880
          ],
          "48": [
            12654,
            12712
          ],
          "49": [
            13084,
            13095
          ]
        },
        "ERC721._exists": {
          "4": [
            7240,
            7277
          ]
        },
        "ERC721._isApprovedOrOwner": {
          "26": [
            7551,
            7624
          ],
          "27": [
            7683,
            7779
          ]
        },
        "ERC721._safeTransfer": {
          "38": [
            6700,
            6728
          ],
          "39": [
            6738,
            6849
          ]
        },
        "ERC721._setApprovalForAll": {
          "35": [
            11607,
            11662
          ],
          "36": [
            11672,
            11718
          ],
          "37": [
            11728,
            11774
          ]
        },
        "ERC721._transfer": {
          "28": [
            10571,
            10652
          ],
          "29": [
            10662,
            10727
          ],
          "30": [
            10839,
            10868
          ],
          "31": [
            10879,
            10899
          ],
          "32": [
            10909,
            10927
          ],
          "33": [
            10937,
            10958
          ],
          "34": [
            10969,
            11001
          ]
        },
        "ERC721.approve": {
          "7": [
            3666,
            3723
          ],
          "9": [
            3734,
            3899
          ],
          "10": [
            3910,
            3931
          ]
        },
        "ERC721.balanceOf": {
          "15": [
            2020,
            2094
          ],
          "16": [
            2104,
            2127
          ]
        },
        "ERC721.getApproved": {
          "5": [
            4094,
            4167
          ],
          "6": [
            4178,
            4209
          ]
        },
        "ERC721.isApprovedForAll": {
          "0": [
            4615,
            4657
          ]
        },
        "ERC721.name": {
          "3": [
            2567,
            2579
          ]
        },
        "ERC721.ownerOf": {
          "14": [
            2324,
            2397
          ]
        },
        "ERC721.safeTransferFrom": {
          "13": [
            5255,
            5294
          ],
          "19": [
            5528,
            5631
          ],
          "20": [
            5641,
            5680
          ]
        },
        "ERC721.setApprovalForAll": {
          "18": [
            4377,
            4429
          ]
        },
        "ERC721.supportsInterface": {
          "1": [
            1688,
            1863
          ]
        },
        "ERC721.symbol": {
          "17": [
            2731,
            2745
          ]
        },
        "ERC721.tokenURI": {
          "21": [
            2916,
            2992
          ],
          "23": [
            3047,
            3140
          ]
        },
        "ERC721.transferFrom": {
          "11": [
            4907,
            5010
          ],
          "12": [
            5021,
            5049
          ]
        }
      },
      "101": {},
      "102": {},
      "103": {},
      "104": {
        "Address.isContract": {
          "46": [
            1458,
            1488
          ]
        }
      },
      "105": {
        "Context._msgSender": {
          "8": [
            712,
            729
          ]
        }
      },
      "107": {
        "Strings.toString": {
          "40": [
            627,
            637
          ],
          "41": [
            743,
            751
          ],
          "42": [
            765,
            775
          ],
          "43": [
            877,
            888
          ],
          "44": [
            902,
            958
          ],
          "45": [
            972,
            983
          ]
        }
      },
      "108": {
        "ERC165.supportsInterface": {
          "2": [
            930,
            977
          ]
        }
      },
      "109": {}
    }
  },
  "dependencies": [
    "Address",
    "Context",
    "ERC165",
    "IERC165",
    "IERC721",
    "IERC721Metadata",
    "IERC721Receiver",
    "Strings"
  ],
  "deployedBytecode": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610f3a565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190611025565b61012461011f366004610f74565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610f10565b6103a6565b005b61014f61015f366004610dbc565b6104bc565b61014f610172366004610dbc565b6104ed565b610124610185366004610f74565b610508565b61019d610198366004610d6e565b61057f565b6040519081526020016100f3565b610104610606565b61014f6101c1366004610ed4565b610615565b61014f6101d4366004610df8565b610624565b6101046101e7366004610f74565b61065c565b6100e76101fa366004610d89565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102899061114a565b80601f01602080910402602001604051908101604052809291908181526020018280546102b59061114a565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661038a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006103b182610508565b9050806001600160a01b0316836001600160a01b0316141561041f5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610381565b336001600160a01b038216148061043b575061043b81336101fa565b6104ad5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610381565b6104b78383610744565b505050565b6104c633826107b2565b6104e25760405162461bcd60e51b81526004016103819061108a565b6104b78383836108a9565b6104b783838360405180602001604052806000815250610624565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610381565b60006001600160a01b0382166105ea5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610381565b506001600160a01b031660009081526003602052604090205490565b6060600180546102899061114a565b610620338383610a45565b5050565b61062e33836107b2565b61064a5760405162461bcd60e51b81526004016103819061108a565b61065684848484610b14565b50505050565b6000818152600260205260409020546060906001600160a01b03166106db5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610381565b60006106f260408051602081019091526000815290565b90506000815111610712576040518060200160405280600081525061073d565b8061071c84610b47565b60405160200161072d929190610fb9565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061077982610508565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661082b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610381565b600061083683610508565b9050806001600160a01b0316846001600160a01b031614806108715750836001600160a01b03166108668461030c565b6001600160a01b0316145b806108a157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166108bc82610508565b6001600160a01b0316146109205760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610381565b6001600160a01b0382166109825760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610381565b61098d600082610744565b6001600160a01b03831660009081526003602052604081208054600192906109b6908490611107565b90915550506001600160a01b03821660009081526003602052604081208054600192906109e49084906110db565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03161415610aa75760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610381565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b1f8484846108a9565b610b2b84848484610c45565b6106565760405162461bcd60e51b815260040161038190611038565b606081610b6b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610b955780610b7f81611185565b9150610b8e9050600a836110f3565b9150610b6f565b60008167ffffffffffffffff811115610bb057610bb06111f6565b6040519080825280601f01601f191660200182016040528015610bda576020820181803683370190505b5090505b84156108a157610bef600183611107565b9150610bfc600a866111a0565b610c079060306110db565b60f81b818381518110610c1c57610c1c6111e0565b60200101906001600160f81b031916908160001a905350610c3e600a866110f3565b9450610bde565b60006001600160a01b0384163b15610d4757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c89903390899088908890600401610fe8565b602060405180830381600087803b158015610ca357600080fd5b505af1925050508015610cd3575060408051601f3d908101601f19168201909252610cd091810190610f57565b60015b610d2d573d808015610d01576040519150601f19603f3d011682016040523d82523d6000602084013e610d06565b606091505b508051610d255760405162461bcd60e51b815260040161038190611038565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506108a1565b506001949350505050565b80356001600160a01b0381168114610d6957600080fd5b919050565b600060208284031215610d8057600080fd5b61073d82610d52565b60008060408385031215610d9c57600080fd5b610da583610d52565b9150610db360208401610d52565b90509250929050565b600080600060608486031215610dd157600080fd5b610dda84610d52565b9250610de860208501610d52565b9150604084013590509250925092565b60008060008060808587031215610e0e57600080fd5b610e1785610d52565b9350610e2560208601610d52565b925060408501359150606085013567ffffffffffffffff80821115610e4957600080fd5b818701915087601f830112610e5d57600080fd5b813581811115610e6f57610e6f6111f6565b604051601f8201601f19908116603f01168101908382118183101715610e9757610e976111f6565b816040528281528a6020848701011115610eb057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ee757600080fd5b610ef083610d52565b915060208301358015158114610f0557600080fd5b809150509250929050565b60008060408385031215610f2357600080fd5b610f2c83610d52565b946020939093013593505050565b600060208284031215610f4c57600080fd5b813561073d8161120c565b600060208284031215610f6957600080fd5b815161073d8161120c565b600060208284031215610f8657600080fd5b5035919050565b60008151808452610fa581602086016020860161111e565b601f01601f19169290920160200192915050565b60008351610fcb81846020880161111e565b835190830190610fdf81836020880161111e565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061101b90830184610f8d565b9695505050505050565b60208152600061073d6020830184610f8d565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082198211156110ee576110ee6111b4565b500190565b600082611102576111026111ca565b500490565b600082821015611119576111196111b4565b500390565b60005b83811015611139578181015183820152602001611121565b838111156106565750506000910152565b600181811c9082168061115e57607f821691505b6020821081141561117f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611199576111996111b4565b5060010190565b6000826111af576111af6111ca565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461122257600080fd5b5056fea2646970667358221220cc95a51a8a5c12a45a273d353775b6bb57b3a1027a73d97ff15cf780f7323bc564736f6c63430008060033",
  "deployedSourceMap": "628:13657:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300;;;;;;:::i;:::-;;:::i;:::-;;;5027:14:114;;5020:22;5002:41;;4990:2;4975:18;1570:300:100;;;;;;;;2488:98;;;:::i;:::-;;;;;;;:::i;3999:217::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;4325:32:114;;;4307:51;;4295:2;4280:18;3999:217:100;4262:102:114;3537:401:100;;;;;;:::i;:::-;;:::i;:::-;;4726:330;;;;;;:::i;:::-;;:::i;5122:179::-;;;;;;:::i;:::-;;:::i;2191:235::-;;;;;;:::i;:::-;;:::i;1929:205::-;;;;;;:::i;:::-;;:::i;:::-;;;10316:25:114;;;10304:2;10289:18;1929:205:100;10271:76:114;2650:102:100;;;:::i;4283:153::-;;;;;;:::i;:::-;;:::i;5367:320::-;;;;;;:::i;:::-;;:::i;2818:329::-;;;;;;:::i;:::-;;:::i;4502:162::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4622:25:100;;;4599:4;4622:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4502:162;1570:300;1672:4;-1:-1:-1;;;;;;1707:40:100;;-1:-1:-1;;;1707:40:100;;:104;;-1:-1:-1;;;;;;;1763:48:100;;-1:-1:-1;;;1763:48:100;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:108;;;1827:36:100;1688:175;1570:300;-1:-1:-1;;1570:300:100:o;2488:98::-;2542:13;2574:5;2567:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:98;:::o;3999:217::-;4075:7;7247:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7247:16:100;4094:73;;;;-1:-1:-1;;;4094:73:100;;8723:2:114;4094:73:100;;;8705:21:114;8762:2;8742:18;;;8735:30;8801:34;8781:18;;;8774:62;-1:-1:-1;;;8852:18:114;;;8845:42;8904:19;;4094:73:100;;;;;;;;;-1:-1:-1;4185:24:100;;;;:15;:24;;;;;;-1:-1:-1;;;;;4185:24:100;;3999:217::o;3537:401::-;3617:13;3633:23;3648:7;3633:14;:23::i;:::-;3617:39;;3680:5;-1:-1:-1;;;;;3674:11:100;:2;-1:-1:-1;;;;;3674:11:100;;;3666:57;;;;-1:-1:-1;;;3666:57:100;;9552:2:114;3666:57:100;;;9534:21:114;9591:2;9571:18;;;9564:30;9630:34;9610:18;;;9603:62;-1:-1:-1;;;9681:18:114;;;9674:31;9722:19;;3666:57:100;9524:223:114;3666:57:100;719:10:105;-1:-1:-1;;;;;3755:21:100;;;;:62;;-1:-1:-1;3780:37:100;3797:5;719:10:105;4502:162:100;:::i;3780:37::-;3734:165;;;;-1:-1:-1;;;3734:165:100;;7477:2:114;3734:165:100;;;7459:21:114;7516:2;7496:18;;;7489:30;7555:34;7535:18;;;7528:62;7626:26;7606:18;;;7599:54;7670:19;;3734:165:100;7449:246:114;3734:165:100;3910:21;3919:2;3923:7;3910:8;:21::i;:::-;3607:331;3537:401;;:::o;4726:330::-;4915:41;719:10:105;4948:7:100;4915:18;:41::i;:::-;4907:103;;;;-1:-1:-1;;;4907:103:100;;;;;;;:::i;:::-;5021:28;5031:4;5037:2;5041:7;5021:9;:28::i;5122:179::-;5255:39;5272:4;5278:2;5282:7;5255:39;;;;;;;;;;;;:16;:39::i;2191:235::-;2263:7;2298:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2298:16:100;2332:19;2324:73;;;;-1:-1:-1;;;2324:73:100;;8313:2:114;2324:73:100;;;8295:21:114;8352:2;8332:18;;;8325:30;8391:34;8371:18;;;8364:62;-1:-1:-1;;;8442:18:114;;;8435:39;8491:19;;2324:73:100;8285:231:114;1929:205:100;2001:7;-1:-1:-1;;;;;2028:19:100;;2020:74;;;;-1:-1:-1;;;2020:74:100;;7902:2:114;2020:74:100;;;7884:21:114;7941:2;7921:18;;;7914:30;7980:34;7960:18;;;7953:62;-1:-1:-1;;;8031:18:114;;;8024:40;8081:19;;2020:74:100;7874:232:114;2020:74:100;-1:-1:-1;;;;;;2111:16:100;;;;;:9;:16;;;;;;;1929:205::o;2650:102::-;2706:13;2738:7;2731:14;;;;;:::i;4283:153::-;4377:52;719:10:105;4410:8:100;4420;4377:18;:52::i;:::-;4283:153;;:::o;5367:320::-;5536:41;719:10:105;5569:7:100;5536:18;:41::i;:::-;5528:103;;;;-1:-1:-1;;;5528:103:100;;;;;;;:::i;:::-;5641:39;5655:4;5661:2;5665:7;5674:5;5641:13;:39::i;:::-;5367:320;;;;:::o;2818:329::-;7224:4;7247:16;;;:7;:16;;;;;;2891:13;;-1:-1:-1;;;;;7247:16:100;2916:76;;;;-1:-1:-1;;;2916:76:100;;9136:2:114;2916:76:100;;;9118:21:114;9175:2;9155:18;;;9148:30;9214:34;9194:18;;;9187:62;-1:-1:-1;;;9265:18:114;;;9258:45;9320:19;;2916:76:100;9108:237:114;2916:76:100;3003:21;3027:10;3464:9;;;;;;;;;-1:-1:-1;3464:9:100;;;3388:92;3027:10;3003:34;;3078:1;3060:7;3054:21;:25;:86;;;;;;;;;;;;;;;;;3106:7;3115:18;:7;:16;:18::i;:::-;3089:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3054:86;3047:93;2818:329;-1:-1:-1;;;2818:329:100:o;11168:171::-;11242:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11242:29:100;-1:-1:-1;;;;;11242:29:100;;;;;;;;:24;;11295:23;11242:24;11295:14;:23::i;:::-;-1:-1:-1;;;;;11286:46:100;;;;;;;;;;;11168:171;;:::o;7442:344::-;7535:4;7247:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7247:16:100;7551:73;;;;-1:-1:-1;;;7551:73:100;;7064:2:114;7551:73:100;;;7046:21:114;7103:2;7083:18;;;7076:30;7142:34;7122:18;;;7115:62;-1:-1:-1;;;7193:18:114;;;7186:42;7245:19;;7551:73:100;7036:234:114;7551:73:100;7634:13;7650:23;7665:7;7650:14;:23::i;:::-;7634:39;;7702:5;-1:-1:-1;;;;;7691:16:100;:7;-1:-1:-1;;;;;7691:16:100;;:51;;;;7735:7;-1:-1:-1;;;;;7711:31:100;:20;7723:7;7711:11;:20::i;:::-;-1:-1:-1;;;;;7711:31:100;;7691:51;:87;;;-1:-1:-1;;;;;;4622:25:100;;;4599:4;4622:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7746:32;7683:96;7442:344;-1:-1:-1;;;;7442:344:100:o;10452:605::-;10606:4;-1:-1:-1;;;;;10579:31:100;:23;10594:7;10579:14;:23::i;:::-;-1:-1:-1;;;;;10579:31:100;;10571:81;;;;-1:-1:-1;;;10571:81:100;;5899:2:114;10571:81:100;;;5881:21:114;5938:2;5918:18;;;5911:30;5977:34;5957:18;;;5950:62;-1:-1:-1;;;6028:18:114;;;6021:35;6073:19;;10571:81:100;5871:227:114;10571:81:100;-1:-1:-1;;;;;10670:16:100;;10662:65;;;;-1:-1:-1;;;10662:65:100;;6305:2:114;10662:65:100;;;6287:21:114;6344:2;6324:18;;;6317:30;6383:34;6363:18;;;6356:62;-1:-1:-1;;;6434:18:114;;;6427:34;6478:19;;10662:65:100;6277:226:114;10662:65:100;10839:29;10856:1;10860:7;10839:8;:29::i;:::-;-1:-1:-1;;;;;10879:15:100;;;;;;:9;:15;;;;;:20;;10898:1;;10879:15;:20;;10898:1;;10879:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10909:13:100;;;;;;:9;:13;;;;;:18;;10926:1;;10909:13;:18;;10926:1;;10909:18;:::i;:::-;;;;-1:-1:-1;;10937:16:100;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10937:21:100;-1:-1:-1;;;;;10937:21:100;;;;;;;;;10974:27;;10937:16;;10974:27;;;;;;;3607:331;3537:401;;:::o;11474:307::-;11624:8;-1:-1:-1;;;;;11615:17:100;:5;-1:-1:-1;;;;;11615:17:100;;;11607:55;;;;-1:-1:-1;;;11607:55:100;;6710:2:114;11607:55:100;;;6692:21:114;6749:2;6729:18;;;6722:30;6788:27;6768:18;;;6761:55;6833:18;;11607:55:100;6682:175:114;11607:55:100;-1:-1:-1;;;;;11672:25:100;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11672:46:100;;;;;;;;;;11733:41;;5002::114;;;11733::100;;4975:18:114;11733:41:100;;;;;;;11474:307;;;:::o;6549:::-;6700:28;6710:4;6716:2;6720:7;6700:9;:28::i;:::-;6746:48;6769:4;6775:2;6779:7;6788:5;6746:22;:48::i;:::-;6738:111;;;;-1:-1:-1;;;6738:111:100;;;;;;;:::i;328:703:107:-;384:13;601:10;597:51;;-1:-1:-1;;627:10:107;;;;;;;;;;;;-1:-1:-1;;;627:10:107;;;;;328:703::o;597:51::-;672:5;657:12;711:75;718:9;;711:75;;743:8;;;;:::i;:::-;;-1:-1:-1;765:10:107;;-1:-1:-1;773:2:107;765:10;;:::i;:::-;;;711:75;;;795:19;827:6;817:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:17:107;;795:39;;844:150;851:10;;844:150;;877:11;887:1;877:11;;:::i;:::-;;-1:-1:-1;945:10:107;953:2;945:5;:10;:::i;:::-;932:24;;:2;:24;:::i;:::-;919:39;;902:6;909;902:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;902:56:107;;;;;;;;-1:-1:-1;972:11:107;981:2;972:11;;:::i;:::-;;;844:150;;12334:778:100;12484:4;-1:-1:-1;;;;;12504:13:100;;1465:19:104;:23;12500:606:100;;12539:72;;-1:-1:-1;;;12539:72:100;;-1:-1:-1;;;;;12539:36:100;;;;;:72;;719:10:105;;12590:4:100;;12596:7;;12605:5;;12539:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12539:72:100;;;;;;;;-1:-1:-1;;12539:72:100;;;;;;;;;;;;:::i;:::-;;;12535:519;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12778:13:100;;12774:266;;12820:60;;-1:-1:-1;;;12820:60:100;;;;;;;:::i;12774:266::-;12992:6;12986:13;12977:6;12973:2;12969:15;12962:38;12535:519;-1:-1:-1;;;;;;12661:51:100;-1:-1:-1;;;12661:51:100;;-1:-1:-1;12654:58:100;;12500:606;-1:-1:-1;13091:4:100;12334:778;;;;;;:::o;14:173:114:-;82:20;;-1:-1:-1;;;;;131:31:114;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;320:1;317;310:12;272:2;343:29;362:9;343:29;:::i;383:260::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:2;;;528:1;525;518:12;480:2;551:29;570:9;551:29;:::i;:::-;541:39;;599:38;633:2;622:9;618:18;599:38;:::i;:::-;589:48;;470:173;;;;;:::o;648:328::-;725:6;733;741;794:2;782:9;773:7;769:23;765:32;762:2;;;810:1;807;800:12;762:2;833:29;852:9;833:29;:::i;:::-;823:39;;881:38;915:2;904:9;900:18;881:38;:::i;:::-;871:48;;966:2;955:9;951:18;938:32;928:42;;752:224;;;;;:::o;981:1138::-;1076:6;1084;1092;1100;1153:3;1141:9;1132:7;1128:23;1124:33;1121:2;;;1170:1;1167;1160:12;1121:2;1193:29;1212:9;1193:29;:::i;:::-;1183:39;;1241:38;1275:2;1264:9;1260:18;1241:38;:::i;:::-;1231:48;;1326:2;1315:9;1311:18;1298:32;1288:42;;1381:2;1370:9;1366:18;1353:32;1404:18;1445:2;1437:6;1434:14;1431:2;;;1461:1;1458;1451:12;1431:2;1499:6;1488:9;1484:22;1474:32;;1544:7;1537:4;1533:2;1529:13;1525:27;1515:2;;1566:1;1563;1556:12;1515:2;1602;1589:16;1624:2;1620;1617:10;1614:2;;;1630:18;;:::i;:::-;1705:2;1699:9;1673:2;1759:13;;-1:-1:-1;;1755:22:114;;;1779:2;1751:31;1747:40;1735:53;;;1803:18;;;1823:22;;;1800:46;1797:2;;;1849:18;;:::i;:::-;1889:10;1885:2;1878:22;1924:2;1916:6;1909:18;1964:7;1959:2;1954;1950;1946:11;1942:20;1939:33;1936:2;;;1985:1;1982;1975:12;1936:2;2041;2036;2032;2028:11;2023:2;2015:6;2011:15;1998:46;2086:1;2081:2;2076;2068:6;2064:15;2060:24;2053:35;2107:6;2097:16;;;;;;;1111:1008;;;;;;;:::o;2124:347::-;2189:6;2197;2250:2;2238:9;2229:7;2225:23;2221:32;2218:2;;;2266:1;2263;2256:12;2218:2;2289:29;2308:9;2289:29;:::i;:::-;2279:39;;2368:2;2357:9;2353:18;2340:32;2415:5;2408:13;2401:21;2394:5;2391:32;2381:2;;2437:1;2434;2427:12;2381:2;2460:5;2450:15;;;2208:263;;;;;:::o;2476:254::-;2544:6;2552;2605:2;2593:9;2584:7;2580:23;2576:32;2573:2;;;2621:1;2618;2611:12;2573:2;2644:29;2663:9;2644:29;:::i;:::-;2634:39;2720:2;2705:18;;;;2692:32;;-1:-1:-1;;;2563:167:114:o;2735:245::-;2793:6;2846:2;2834:9;2825:7;2821:23;2817:32;2814:2;;;2862:1;2859;2852:12;2814:2;2901:9;2888:23;2920:30;2944:5;2920:30;:::i;2985:249::-;3054:6;3107:2;3095:9;3086:7;3082:23;3078:32;3075:2;;;3123:1;3120;3113:12;3075:2;3155:9;3149:16;3174:30;3198:5;3174:30;:::i;3239:180::-;3298:6;3351:2;3339:9;3330:7;3326:23;3322:32;3319:2;;;3367:1;3364;3357:12;3319:2;-1:-1:-1;3390:23:114;;3309:110;-1:-1:-1;3309:110:114:o;3424:257::-;3465:3;3503:5;3497:12;3530:6;3525:3;3518:19;3546:63;3602:6;3595:4;3590:3;3586:14;3579:4;3572:5;3568:16;3546:63;:::i;:::-;3663:2;3642:15;-1:-1:-1;;3638:29:114;3629:39;;;;3670:4;3625:50;;3473:208;-1:-1:-1;;3473:208:114:o;3686:470::-;3865:3;3903:6;3897:13;3919:53;3965:6;3960:3;3953:4;3945:6;3941:17;3919:53;:::i;:::-;4035:13;;3994:16;;;;4057:57;4035:13;3994:16;4091:4;4079:17;;4057:57;:::i;:::-;4130:20;;3873:283;-1:-1:-1;;;;3873:283:114:o;4369:488::-;-1:-1:-1;;;;;4638:15:114;;;4620:34;;4690:15;;4685:2;4670:18;;4663:43;4737:2;4722:18;;4715:34;;;4785:3;4780:2;4765:18;;4758:31;;;4563:4;;4806:45;;4831:19;;4823:6;4806:45;:::i;:::-;4798:53;4572:285;-1:-1:-1;;;;;;4572:285:114:o;5054:219::-;5203:2;5192:9;5185:21;5166:4;5223:44;5263:2;5252:9;5248:18;5240:6;5223:44;:::i;5278:414::-;5480:2;5462:21;;;5519:2;5499:18;;;5492:30;5558:34;5553:2;5538:18;;5531:62;-1:-1:-1;;;5624:2:114;5609:18;;5602:48;5682:3;5667:19;;5452:240::o;9752:413::-;9954:2;9936:21;;;9993:2;9973:18;;;9966:30;10032:34;10027:2;10012:18;;10005:62;-1:-1:-1;;;10098:2:114;10083:18;;10076:47;10155:3;10140:19;;9926:239::o;10352:128::-;10392:3;10423:1;10419:6;10416:1;10413:13;10410:2;;;10429:18;;:::i;:::-;-1:-1:-1;10465:9:114;;10400:80::o;10485:120::-;10525:1;10551;10541:2;;10556:18;;:::i;:::-;-1:-1:-1;10590:9:114;;10531:74::o;10610:125::-;10650:4;10678:1;10675;10672:8;10669:2;;;10683:18;;:::i;:::-;-1:-1:-1;10720:9:114;;10659:76::o;10740:258::-;10812:1;10822:113;10836:6;10833:1;10830:13;10822:113;;;10912:11;;;10906:18;10893:11;;;10886:39;10858:2;10851:10;10822:113;;;10953:6;10950:1;10947:13;10944:2;;;-1:-1:-1;;10988:1:114;10970:16;;10963:27;10793:205::o;11003:380::-;11082:1;11078:12;;;;11125;;;11146:2;;11200:4;11192:6;11188:17;11178:27;;11146:2;11253;11245:6;11242:14;11222:18;11219:38;11216:2;;;11299:10;11294:3;11290:20;11287:1;11280:31;11334:4;11331:1;11324:15;11362:4;11359:1;11352:15;11216:2;;11058:325;;;:::o;11388:135::-;11427:3;-1:-1:-1;;11448:17:114;;11445:2;;;11468:18;;:::i;:::-;-1:-1:-1;11515:1:114;11504:13;;11435:88::o;11528:112::-;11560:1;11586;11576:2;;11591:18;;:::i;:::-;-1:-1:-1;11625:9:114;;11566:74::o;11645:127::-;11706:10;11701:3;11697:20;11694:1;11687:31;11737:4;11734:1;11727:15;11761:4;11758:1;11751:15;11777:127;11838:10;11833:3;11829:20;11826:1;11819:31;11869:4;11866:1;11859:15;11893:4;11890:1;11883:15;11909:127;11970:10;11965:3;11961:20;11958:1;11951:31;12001:4;11998:1;11991:15;12025:4;12022:1;12015:15;12041:127;12102:10;12097:3;12093:20;12090:1;12083:31;12133:4;12130:1;12123:15;12157:4;12154:1;12147:15;12173:131;-1:-1:-1;;;;;;12247:32:114;;12237:43;;12227:2;;12294:1;12291;12284:12;12227:2;12217:87;:::o",
  "language": "Solidity",
  "natspec": {
    "details": "Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.",
    "kind": "dev",
    "methods": {
      "approve(address,uint256)": {
        "details": "See {IERC721-approve}."
      },
      "balanceOf(address)": {
        "details": "See {IERC721-balanceOf}."
      },
      "constructor": {
        "details": "Initializes the contract by setting a `name` and a `symbol` to the token collection."
      },
      "getApproved(uint256)": {
        "details": "See {IERC721-getApproved}."
      },
      "isApprovedForAll(address,address)": {
        "details": "See {IERC721-isApprovedForAll}."
      },
      "name()": {
        "details": "See {IERC721Metadata-name}."
      },
      "ownerOf(uint256)": {
        "details": "See {IERC721-ownerOf}."
      },
      "safeTransferFrom(address,address,uint256)": {
        "details": "See {IERC721-safeTransferFrom}."
      },
      "safeTransferFrom(address,address,uint256,bytes)": {
        "details": "See {IERC721-safeTransferFrom}."
      },
      "setApprovalForAll(address,bool)": {
        "details": "See {IERC721-setApprovalForAll}."
      },
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}."
      },
      "symbol()": {
        "details": "See {IERC721Metadata-symbol}."
      },
      "tokenURI(uint256)": {
        "details": "See {IERC721Metadata-tokenURI}."
      },
      "transferFrom(address,address,uint256)": {
        "details": "See {IERC721-transferFrom}."
      }
    },
    "version": 1
  },
  "offset": [
    628,
    14285
  ],
  "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x164 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE7 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0xF3A JUMP JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x104 PUSH2 0x27A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0x1025 JUMP JUMPDEST PUSH2 0x124 PUSH2 0x11F CALLDATASIZE PUSH1 0x4 PUSH2 0xF74 JUMP JUMPDEST PUSH2 0x30C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0xF10 JUMP JUMPDEST PUSH2 0x3A6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14F PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xDBC JUMP JUMPDEST PUSH2 0x4BC JUMP JUMPDEST PUSH2 0x14F PUSH2 0x172 CALLDATASIZE PUSH1 0x4 PUSH2 0xDBC JUMP JUMPDEST PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x124 PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0xF74 JUMP JUMPDEST PUSH2 0x508 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xD6E JUMP JUMPDEST PUSH2 0x57F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x104 PUSH2 0x606 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0xED4 JUMP JUMPDEST PUSH2 0x615 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1D4 CALLDATASIZE PUSH1 0x4 PUSH2 0xDF8 JUMP JUMPDEST PUSH2 0x624 JUMP JUMPDEST PUSH2 0x104 PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0xF74 JUMP JUMPDEST PUSH2 0x65C JUMP JUMPDEST PUSH2 0xE7 PUSH2 0x1FA CALLDATASIZE PUSH1 0x4 PUSH2 0xD89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 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 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x259 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x274 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x289 SWAP1 PUSH2 0x114A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2B5 SWAP1 PUSH2 0x114A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x302 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x302 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 0x2E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x38A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76656420717565727920666F72206E6F6E6578 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x34B9BA32B73A103A37B5B2B7 PUSH1 0xA1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B1 DUP3 PUSH2 0x508 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x41F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x381 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x43B JUMPI POP PUSH2 0x43B DUP2 CALLER PUSH2 0x1FA JUMP JUMPDEST PUSH2 0x4AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F74206F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E6572206E6F7220617070726F76656420666F7220616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x381 JUMP JUMPDEST PUSH2 0x4B7 DUP4 DUP4 PUSH2 0x744 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x4C6 CALLER DUP3 PUSH2 0x7B2 JUMP JUMPDEST PUSH2 0x4E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x381 SWAP1 PUSH2 0x108A JUMP JUMPDEST PUSH2 0x4B7 DUP4 DUP4 DUP4 PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x4B7 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x624 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x274 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206F776E657220717565727920666F72206E6F6E6578697374 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x32B73A103A37B5B2B7 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x381 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x5EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2062616C616E636520717565727920666F7220746865207A65 PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x726F2061646472657373 PUSH1 0xB0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x381 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x289 SWAP1 PUSH2 0x114A JUMP JUMPDEST PUSH2 0x620 CALLER DUP4 DUP4 PUSH2 0xA45 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x62E CALLER DUP4 PUSH2 0x7B2 JUMP JUMPDEST PUSH2 0x64A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x381 SWAP1 PUSH2 0x108A JUMP JUMPDEST PUSH2 0x656 DUP5 DUP5 DUP5 DUP5 PUSH2 0xB14 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x3732BC34B9BA32B73A103A37B5B2B7 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x381 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6F2 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x712 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x73D JUMP JUMPDEST DUP1 PUSH2 0x71C DUP5 PUSH2 0xB47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x72D SWAP3 SWAP2 SWAP1 PUSH2 0xFB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x779 DUP3 PUSH2 0x508 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x82B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206F70657261746F7220717565727920666F72206E6F6E6578 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x34B9BA32B73A103A37B5B2B7 PUSH1 0xA1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x381 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x836 DUP4 PUSH2 0x508 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x871 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x866 DUP5 PUSH2 0x30C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0x8A1 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8BC DUP3 PUSH2 0x508 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x920 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x381 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x982 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x381 JUMP JUMPDEST PUSH2 0x98D PUSH1 0x0 DUP3 PUSH2 0x744 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x9B6 SWAP1 DUP5 SWAP1 PUSH2 0x1107 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x9E4 SWAP1 DUP5 SWAP1 PUSH2 0x10DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 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 DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xAA7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x381 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xB1F DUP5 DUP5 DUP5 PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0xB2B DUP5 DUP5 DUP5 DUP5 PUSH2 0xC45 JUMP JUMPDEST PUSH2 0x656 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x381 SWAP1 PUSH2 0x1038 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0xB6B JUMPI POP 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 SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0xB95 JUMPI DUP1 PUSH2 0xB7F DUP2 PUSH2 0x1185 JUMP JUMPDEST SWAP2 POP PUSH2 0xB8E SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x10F3 JUMP JUMPDEST SWAP2 POP PUSH2 0xB6F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBB0 JUMPI PUSH2 0xBB0 PUSH2 0x11F6 JUMP JUMPDEST 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 0xBDA JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x8A1 JUMPI PUSH2 0xBEF PUSH1 0x1 DUP4 PUSH2 0x1107 JUMP JUMPDEST SWAP2 POP PUSH2 0xBFC PUSH1 0xA DUP7 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0xC07 SWAP1 PUSH1 0x30 PUSH2 0x10DB JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xC1C JUMPI PUSH2 0xC1C PUSH2 0x11E0 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0xC3E PUSH1 0xA DUP7 PUSH2 0x10F3 JUMP JUMPDEST SWAP5 POP PUSH2 0xBDE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xD47 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xC89 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xFE8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xCD3 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xCD0 SWAP2 DUP2 ADD SWAP1 PUSH2 0xF57 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xD2D JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xD01 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xD06 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH2 0xD25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x381 SWAP1 PUSH2 0x1038 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x8A1 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x73D DUP3 PUSH2 0xD52 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDA5 DUP4 PUSH2 0xD52 JUMP JUMPDEST SWAP2 POP PUSH2 0xDB3 PUSH1 0x20 DUP5 ADD PUSH2 0xD52 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xDD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDDA DUP5 PUSH2 0xD52 JUMP JUMPDEST SWAP3 POP PUSH2 0xDE8 PUSH1 0x20 DUP6 ADD PUSH2 0xD52 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE17 DUP6 PUSH2 0xD52 JUMP JUMPDEST SWAP4 POP PUSH2 0xE25 PUSH1 0x20 DUP7 ADD PUSH2 0xD52 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE6F JUMPI PUSH2 0xE6F PUSH2 0x11F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xE97 JUMPI PUSH2 0xE97 PUSH2 0x11F6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xEB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEF0 DUP4 PUSH2 0xD52 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xF05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF2C DUP4 PUSH2 0xD52 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x73D DUP2 PUSH2 0x120C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x73D DUP2 PUSH2 0x120C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xFA5 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x111E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0xFCB DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x111E JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0xFDF DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x111E JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x101B SWAP1 DUP4 ADD DUP5 PUSH2 0xF8D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x73D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xF8D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x31 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722063616C6C6572206973206E6F74206F PUSH1 0x40 DUP3 ADD MSTORE PUSH17 0x1DDB995C881B9BDC88185C1C1C9BDD9959 PUSH1 0x7A SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x10EE JUMPI PUSH2 0x10EE PUSH2 0x11B4 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1102 JUMPI PUSH2 0x1102 PUSH2 0x11CA JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1119 JUMPI PUSH2 0x1119 PUSH2 0x11B4 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1139 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1121 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x656 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x115E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x117F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x1199 JUMPI PUSH2 0x1199 PUSH2 0x11B4 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x11AF JUMPI PUSH2 0x11AF PUSH2 0x11CA JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCC SWAP6 0xA5 BYTE DUP11 0x5C SLT LOG4 GAS 0x27 RETURNDATASIZE CALLDATALOAD CALLDATACOPY PUSH22 0xB6BB57B3A1027A73D97FF15CF780F7323BC564736F6C PUSH4 0x43000806 STOP CALLER ",
  "pcMap": {
    "0": {
      "offset": [
        628,
        14285
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x80"
    },
    "2": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "4": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "5": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "CALLVALUE",
      "path": "100"
    },
    "6": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "7": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "ISZERO",
      "path": "100"
    },
    "8": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x10"
    },
    "11": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "12": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "14": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "15": {
      "dev": "Cannot send ether to nonpayable function",
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "REVERT",
      "path": "100"
    },
    "16": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "17": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "POP",
      "path": "100"
    },
    "18": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "20": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "CALLDATASIZE",
      "path": "100"
    },
    "21": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "LT",
      "path": "100"
    },
    "22": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xCF"
    },
    "25": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "26": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "28": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "CALLDATALOAD",
      "path": "100"
    },
    "29": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0xE0"
    },
    "31": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "SHR",
      "path": "100"
    },
    "32": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "33": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0x6352211E"
    },
    "38": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "GT",
      "path": "100"
    },
    "39": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x8C"
    },
    "42": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "43": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "44": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0xA22CB465"
    },
    "49": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "GT",
      "path": "100"
    },
    "50": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x66"
    },
    "53": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "54": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "55": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0xA22CB465"
    },
    "60": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "EQ",
      "path": "100"
    },
    "61": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x1B3"
    },
    "64": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "65": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "66": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0xB88D4FDE"
    },
    "71": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "EQ",
      "path": "100"
    },
    "72": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x1C6"
    },
    "75": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "76": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "77": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0xC87B56DD"
    },
    "82": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "EQ",
      "path": "100"
    },
    "83": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x1D9"
    },
    "86": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "87": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "88": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0xE985E9C5"
    },
    "93": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "EQ",
      "path": "100"
    },
    "94": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x1EC"
    },
    "97": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "98": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "100": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "101": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "REVERT",
      "path": "100"
    },
    "102": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "103": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "104": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0x6352211E"
    },
    "109": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "EQ",
      "path": "100"
    },
    "110": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x177"
    },
    "113": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "114": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "115": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0x70A08231"
    },
    "120": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "EQ",
      "path": "100"
    },
    "121": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x18A"
    },
    "124": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "125": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "126": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0x95D89B41"
    },
    "131": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "EQ",
      "path": "100"
    },
    "132": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x1AB"
    },
    "135": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "136": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "138": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "139": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "REVERT",
      "path": "100"
    },
    "140": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "141": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "142": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0x1FFC9A7"
    },
    "147": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "EQ",
      "path": "100"
    },
    "148": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xD4"
    },
    "151": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "152": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "153": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0x6FDDE03"
    },
    "158": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "EQ",
      "path": "100"
    },
    "159": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xFC"
    },
    "162": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "163": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "164": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0x81812FC"
    },
    "169": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "EQ",
      "path": "100"
    },
    "170": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x111"
    },
    "173": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "174": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "175": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0x95EA7B3"
    },
    "180": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "EQ",
      "path": "100"
    },
    "181": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x13C"
    },
    "184": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "185": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "186": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0x23B872DD"
    },
    "191": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "EQ",
      "path": "100"
    },
    "192": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x151"
    },
    "195": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "196": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "197": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0x42842E0E"
    },
    "202": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "EQ",
      "path": "100"
    },
    "203": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x164"
    },
    "206": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "207": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "208": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "210": {
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "DUP1",
      "path": "100"
    },
    "211": {
      "first_revert": true,
      "fn": null,
      "offset": [
        628,
        14285
      ],
      "op": "REVERT",
      "path": "100"
    },
    "212": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "213": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xE7"
    },
    "216": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xE2"
    },
    "219": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "CALLDATASIZE",
      "path": "100"
    },
    "220": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "222": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xF3A"
    },
    "225": {
      "fn": "ERC721.supportsInterface",
      "jump": "i",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMP",
      "path": "100"
    },
    "226": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "227": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x228"
    },
    "230": {
      "fn": "ERC721.supportsInterface",
      "jump": "i",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMP",
      "path": "100"
    },
    "231": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "232": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "234": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "235": {
      "op": "SWAP1"
    },
    "236": {
      "op": "ISZERO"
    },
    "237": {
      "op": "ISZERO"
    },
    "238": {
      "op": "DUP2"
    },
    "239": {
      "op": "MSTORE"
    },
    "240": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "242": {
      "op": "ADD"
    },
    "243": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "244": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "246": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "247": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "DUP1",
      "path": "100"
    },
    "248": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "249": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "SUB",
      "path": "100"
    },
    "250": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "251": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "RETURN",
      "path": "100"
    },
    "252": {
      "fn": "ERC721.name",
      "offset": [
        2488,
        2586
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "253": {
      "fn": "ERC721.name",
      "offset": [
        2488,
        2586
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x104"
    },
    "256": {
      "fn": "ERC721.name",
      "offset": [
        2488,
        2586
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x27A"
    },
    "259": {
      "fn": "ERC721.name",
      "jump": "i",
      "offset": [
        2488,
        2586
      ],
      "op": "JUMP",
      "path": "100"
    },
    "260": {
      "fn": "ERC721.name",
      "offset": [
        2488,
        2586
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "261": {
      "fn": "ERC721.name",
      "offset": [
        2488,
        2586
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "263": {
      "fn": "ERC721.name",
      "offset": [
        2488,
        2586
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "264": {
      "fn": "ERC721.name",
      "offset": [
        2488,
        2586
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xF3"
    },
    "267": {
      "fn": "ERC721.name",
      "offset": [
        2488,
        2586
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "268": {
      "fn": "ERC721.name",
      "offset": [
        2488,
        2586
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "269": {
      "fn": "ERC721.name",
      "offset": [
        2488,
        2586
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x1025"
    },
    "272": {
      "fn": "ERC721.name",
      "jump": "i",
      "offset": [
        2488,
        2586
      ],
      "op": "JUMP",
      "path": "100"
    },
    "273": {
      "fn": "ERC721.getApproved",
      "offset": [
        3999,
        4216
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "274": {
      "fn": "ERC721.getApproved",
      "offset": [
        3999,
        4216
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x124"
    },
    "277": {
      "fn": "ERC721.getApproved",
      "offset": [
        3999,
        4216
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x11F"
    },
    "280": {
      "fn": "ERC721.getApproved",
      "offset": [
        3999,
        4216
      ],
      "op": "CALLDATASIZE",
      "path": "100"
    },
    "281": {
      "fn": "ERC721.getApproved",
      "offset": [
        3999,
        4216
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "283": {
      "fn": "ERC721.getApproved",
      "offset": [
        3999,
        4216
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xF74"
    },
    "286": {
      "fn": "ERC721.getApproved",
      "jump": "i",
      "offset": [
        3999,
        4216
      ],
      "op": "JUMP",
      "path": "100"
    },
    "287": {
      "fn": "ERC721.getApproved",
      "offset": [
        3999,
        4216
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "288": {
      "fn": "ERC721.getApproved",
      "offset": [
        3999,
        4216
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x30C"
    },
    "291": {
      "fn": "ERC721.getApproved",
      "jump": "i",
      "offset": [
        3999,
        4216
      ],
      "op": "JUMP",
      "path": "100"
    },
    "292": {
      "fn": "ERC721.getApproved",
      "offset": [
        3999,
        4216
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "293": {
      "fn": "ERC721.getApproved",
      "offset": [
        3999,
        4216
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "295": {
      "fn": "ERC721.getApproved",
      "offset": [
        3999,
        4216
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "296": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "298": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "300": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "302": {
      "op": "SHL"
    },
    "303": {
      "op": "SUB"
    },
    "304": {
      "op": "SWAP1"
    },
    "305": {
      "op": "SWAP2"
    },
    "306": {
      "op": "AND"
    },
    "307": {
      "op": "DUP2"
    },
    "308": {
      "op": "MSTORE"
    },
    "309": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "311": {
      "op": "ADD"
    },
    "312": {
      "fn": "ERC721.getApproved",
      "offset": [
        3999,
        4216
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xF3"
    },
    "315": {
      "op": "JUMP"
    },
    "316": {
      "fn": "ERC721.approve",
      "offset": [
        3537,
        3938
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "317": {
      "fn": "ERC721.approve",
      "offset": [
        3537,
        3938
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x14F"
    },
    "320": {
      "fn": "ERC721.approve",
      "offset": [
        3537,
        3938
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x14A"
    },
    "323": {
      "fn": "ERC721.approve",
      "offset": [
        3537,
        3938
      ],
      "op": "CALLDATASIZE",
      "path": "100"
    },
    "324": {
      "fn": "ERC721.approve",
      "offset": [
        3537,
        3938
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "326": {
      "fn": "ERC721.approve",
      "offset": [
        3537,
        3938
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xF10"
    },
    "329": {
      "fn": "ERC721.approve",
      "jump": "i",
      "offset": [
        3537,
        3938
      ],
      "op": "JUMP",
      "path": "100"
    },
    "330": {
      "fn": "ERC721.approve",
      "offset": [
        3537,
        3938
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "331": {
      "fn": "ERC721.approve",
      "offset": [
        3537,
        3938
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x3A6"
    },
    "334": {
      "fn": "ERC721.approve",
      "jump": "i",
      "offset": [
        3537,
        3938
      ],
      "op": "JUMP",
      "path": "100"
    },
    "335": {
      "fn": "ERC721.approve",
      "offset": [
        3537,
        3938
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "336": {
      "fn": "ERC721.approve",
      "offset": [
        3537,
        3938
      ],
      "op": "STOP",
      "path": "100"
    },
    "337": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4726,
        5056
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "338": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4726,
        5056
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x14F"
    },
    "341": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4726,
        5056
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x15F"
    },
    "344": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4726,
        5056
      ],
      "op": "CALLDATASIZE",
      "path": "100"
    },
    "345": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4726,
        5056
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "347": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4726,
        5056
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xDBC"
    },
    "350": {
      "fn": "ERC721.transferFrom",
      "jump": "i",
      "offset": [
        4726,
        5056
      ],
      "op": "JUMP",
      "path": "100"
    },
    "351": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4726,
        5056
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "352": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4726,
        5056
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x4BC"
    },
    "355": {
      "fn": "ERC721.transferFrom",
      "jump": "i",
      "offset": [
        4726,
        5056
      ],
      "op": "JUMP",
      "path": "100"
    },
    "356": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5122,
        5301
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "357": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5122,
        5301
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x14F"
    },
    "360": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5122,
        5301
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x172"
    },
    "363": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5122,
        5301
      ],
      "op": "CALLDATASIZE",
      "path": "100"
    },
    "364": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5122,
        5301
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "366": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5122,
        5301
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xDBC"
    },
    "369": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5122,
        5301
      ],
      "op": "JUMP",
      "path": "100"
    },
    "370": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5122,
        5301
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "371": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5122,
        5301
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x4ED"
    },
    "374": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5122,
        5301
      ],
      "op": "JUMP",
      "path": "100"
    },
    "375": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2191,
        2426
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "376": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2191,
        2426
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x124"
    },
    "379": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2191,
        2426
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x185"
    },
    "382": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2191,
        2426
      ],
      "op": "CALLDATASIZE",
      "path": "100"
    },
    "383": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2191,
        2426
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "385": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2191,
        2426
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xF74"
    },
    "388": {
      "fn": "ERC721.ownerOf",
      "jump": "i",
      "offset": [
        2191,
        2426
      ],
      "op": "JUMP",
      "path": "100"
    },
    "389": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2191,
        2426
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "390": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2191,
        2426
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x508"
    },
    "393": {
      "fn": "ERC721.ownerOf",
      "jump": "i",
      "offset": [
        2191,
        2426
      ],
      "op": "JUMP",
      "path": "100"
    },
    "394": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2134
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "395": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2134
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x19D"
    },
    "398": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2134
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x198"
    },
    "401": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2134
      ],
      "op": "CALLDATASIZE",
      "path": "100"
    },
    "402": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2134
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "404": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2134
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xD6E"
    },
    "407": {
      "fn": "ERC721.balanceOf",
      "jump": "i",
      "offset": [
        1929,
        2134
      ],
      "op": "JUMP",
      "path": "100"
    },
    "408": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2134
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "409": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2134
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x57F"
    },
    "412": {
      "fn": "ERC721.balanceOf",
      "jump": "i",
      "offset": [
        1929,
        2134
      ],
      "op": "JUMP",
      "path": "100"
    },
    "413": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2134
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "414": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2134
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "416": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2134
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "417": {
      "op": "SWAP1"
    },
    "418": {
      "op": "DUP2"
    },
    "419": {
      "op": "MSTORE"
    },
    "420": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "422": {
      "op": "ADD"
    },
    "423": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2134
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xF3"
    },
    "426": {
      "op": "JUMP"
    },
    "427": {
      "fn": "ERC721.symbol",
      "offset": [
        2650,
        2752
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "428": {
      "fn": "ERC721.symbol",
      "offset": [
        2650,
        2752
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x104"
    },
    "431": {
      "fn": "ERC721.symbol",
      "offset": [
        2650,
        2752
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x606"
    },
    "434": {
      "fn": "ERC721.symbol",
      "jump": "i",
      "offset": [
        2650,
        2752
      ],
      "op": "JUMP",
      "path": "100"
    },
    "435": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4283,
        4436
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "436": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4283,
        4436
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x14F"
    },
    "439": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4283,
        4436
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x1C1"
    },
    "442": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4283,
        4436
      ],
      "op": "CALLDATASIZE",
      "path": "100"
    },
    "443": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4283,
        4436
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "445": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4283,
        4436
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xED4"
    },
    "448": {
      "fn": "ERC721.setApprovalForAll",
      "jump": "i",
      "offset": [
        4283,
        4436
      ],
      "op": "JUMP",
      "path": "100"
    },
    "449": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4283,
        4436
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "450": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4283,
        4436
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x615"
    },
    "453": {
      "fn": "ERC721.setApprovalForAll",
      "jump": "i",
      "offset": [
        4283,
        4436
      ],
      "op": "JUMP",
      "path": "100"
    },
    "454": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5367,
        5687
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "455": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5367,
        5687
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x14F"
    },
    "458": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5367,
        5687
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x1D4"
    },
    "461": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5367,
        5687
      ],
      "op": "CALLDATASIZE",
      "path": "100"
    },
    "462": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5367,
        5687
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "464": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5367,
        5687
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xDF8"
    },
    "467": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5367,
        5687
      ],
      "op": "JUMP",
      "path": "100"
    },
    "468": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5367,
        5687
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "469": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5367,
        5687
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x624"
    },
    "472": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5367,
        5687
      ],
      "op": "JUMP",
      "path": "100"
    },
    "473": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2818,
        3147
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "474": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2818,
        3147
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x104"
    },
    "477": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2818,
        3147
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x1E7"
    },
    "480": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2818,
        3147
      ],
      "op": "CALLDATASIZE",
      "path": "100"
    },
    "481": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2818,
        3147
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "483": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2818,
        3147
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xF74"
    },
    "486": {
      "fn": "ERC721.tokenURI",
      "jump": "i",
      "offset": [
        2818,
        3147
      ],
      "op": "JUMP",
      "path": "100"
    },
    "487": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2818,
        3147
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "488": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2818,
        3147
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x65C"
    },
    "491": {
      "fn": "ERC721.tokenURI",
      "jump": "i",
      "offset": [
        2818,
        3147
      ],
      "op": "JUMP",
      "path": "100"
    },
    "492": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4502,
        4664
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "493": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4502,
        4664
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xE7"
    },
    "496": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4502,
        4664
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x1FA"
    },
    "499": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4502,
        4664
      ],
      "op": "CALLDATASIZE",
      "path": "100"
    },
    "500": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4502,
        4664
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "502": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4502,
        4664
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xD89"
    },
    "505": {
      "fn": "ERC721.isApprovedForAll",
      "jump": "i",
      "offset": [
        4502,
        4664
      ],
      "op": "JUMP",
      "path": "100"
    },
    "506": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4502,
        4664
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "507": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "509": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "511": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "513": {
      "op": "SHL"
    },
    "514": {
      "op": "SUB"
    },
    "515": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "SWAP2",
      "path": "100",
      "statement": 0
    },
    "516": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "DUP3",
      "path": "100"
    },
    "517": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "AND",
      "path": "100"
    },
    "518": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4599,
        4603
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "520": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "521": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "DUP2",
      "path": "100"
    },
    "522": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "523": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4640
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x5"
    },
    "525": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "527": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "528": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "DUP2",
      "path": "100"
    },
    "529": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "530": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "532": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "DUP1",
      "path": "100"
    },
    "533": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "DUP4",
      "path": "100"
    },
    "534": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "535": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "SWAP4",
      "path": "100"
    },
    "536": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "537": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "SWAP5",
      "path": "100"
    },
    "538": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "AND",
      "path": "100"
    },
    "539": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "DUP3",
      "path": "100"
    },
    "540": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "541": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "542": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "543": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "544": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "545": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "546": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "547": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0xFF"
    },
    "549": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "AND",
      "path": "100"
    },
    "550": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "551": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4502,
        4664
      ],
      "op": "JUMP",
      "path": "100"
    },
    "552": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "553": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1672,
        1676
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "555": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "557": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "559": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "561": {
      "op": "SHL"
    },
    "562": {
      "op": "SUB"
    },
    "563": {
      "op": "NOT"
    },
    "564": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1747
      ],
      "op": "DUP3",
      "path": "100",
      "statement": 1
    },
    "565": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1747
      ],
      "op": "AND",
      "path": "100"
    },
    "566": {
      "op": "PUSH4",
      "value": "0x80AC58CD"
    },
    "571": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "573": {
      "op": "SHL"
    },
    "574": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1747
      ],
      "op": "EQ",
      "path": "100"
    },
    "575": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1747
      ],
      "op": "DUP1",
      "path": "100"
    },
    "576": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1811
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x259"
    },
    "579": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1811
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "580": {
      "op": "POP"
    },
    "581": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "583": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "585": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "587": {
      "op": "SHL"
    },
    "588": {
      "op": "SUB"
    },
    "589": {
      "op": "NOT"
    },
    "590": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1763,
        1811
      ],
      "op": "DUP3",
      "path": "100"
    },
    "591": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1763,
        1811
      ],
      "op": "AND",
      "path": "100"
    },
    "592": {
      "op": "PUSH4",
      "value": "0x5B5E139F"
    },
    "597": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "599": {
      "op": "SHL"
    },
    "600": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1763,
        1811
      ],
      "op": "EQ",
      "path": "100"
    },
    "601": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1811
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "602": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1863
      ],
      "op": "DUP1",
      "path": "100"
    },
    "603": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1863
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x274"
    },
    "606": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1863
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "607": {
      "op": "POP"
    },
    "608": {
      "op": "PUSH4",
      "value": "0x1FFC9A7"
    },
    "613": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "615": {
      "op": "SHL"
    },
    "616": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "618": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "620": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "622": {
      "op": "SHL"
    },
    "623": {
      "op": "SUB"
    },
    "624": {
      "op": "NOT"
    },
    "625": {
      "fn": "ERC165.supportsInterface",
      "offset": [
        937,
        977
      ],
      "op": "DUP4",
      "path": "108",
      "statement": 2
    },
    "626": {
      "fn": "ERC165.supportsInterface",
      "offset": [
        937,
        977
      ],
      "op": "AND",
      "path": "108"
    },
    "627": {
      "fn": "ERC165.supportsInterface",
      "offset": [
        937,
        977
      ],
      "op": "EQ",
      "path": "108"
    },
    "628": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1827,
        1863
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "629": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1688,
        1863
      ],
      "op": "SWAP3",
      "path": "100"
    },
    "630": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "631": {
      "op": "POP"
    },
    "632": {
      "op": "POP"
    },
    "633": {
      "fn": "ERC721.supportsInterface",
      "jump": "o",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMP",
      "path": "100"
    },
    "634": {
      "fn": "ERC721.name",
      "offset": [
        2488,
        2586
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "635": {
      "fn": "ERC721.name",
      "offset": [
        2542,
        2555
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x60"
    },
    "637": {
      "fn": "ERC721.name",
      "offset": [
        2574,
        2579
      ],
      "op": "PUSH1",
      "path": "100",
      "statement": 3,
      "value": "0x0"
    },
    "639": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP1",
      "path": "100"
    },
    "640": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "641": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x289"
    },
    "644": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "645": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x114A"
    },
    "648": {
      "fn": "ERC721.name",
      "jump": "i",
      "offset": [
        2567,
        2579
      ],
      "op": "JUMP",
      "path": "100"
    },
    "649": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "650": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP1",
      "path": "100"
    },
    "651": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x1F"
    },
    "653": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "ADD",
      "path": "100"
    },
    "654": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "656": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP1",
      "path": "100"
    },
    "657": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "658": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DIV",
      "path": "100"
    },
    "659": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "MUL",
      "path": "100"
    },
    "660": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "662": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "ADD",
      "path": "100"
    },
    "663": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "665": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "666": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "667": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP2",
      "path": "100"
    },
    "668": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "ADD",
      "path": "100"
    },
    "669": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "671": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "672": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP1",
      "path": "100"
    },
    "673": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP3",
      "path": "100"
    },
    "674": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "675": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "676": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP2",
      "path": "100"
    },
    "677": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP2",
      "path": "100"
    },
    "678": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "679": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "681": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "ADD",
      "path": "100"
    },
    "682": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP3",
      "path": "100"
    },
    "683": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP1",
      "path": "100"
    },
    "684": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "685": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x2B5"
    },
    "688": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "689": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x114A"
    },
    "692": {
      "fn": "ERC721.name",
      "jump": "i",
      "offset": [
        2567,
        2579
      ],
      "op": "JUMP",
      "path": "100"
    },
    "693": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "694": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP1",
      "path": "100"
    },
    "695": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "ISZERO",
      "path": "100"
    },
    "696": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x302"
    },
    "699": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "700": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP1",
      "path": "100"
    },
    "701": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x1F"
    },
    "703": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "LT",
      "path": "100"
    },
    "704": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x2D7"
    },
    "707": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "708": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x100"
    },
    "711": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP1",
      "path": "100"
    },
    "712": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP4",
      "path": "100"
    },
    "713": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "714": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DIV",
      "path": "100"
    },
    "715": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "MUL",
      "path": "100"
    },
    "716": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP4",
      "path": "100"
    },
    "717": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "718": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "719": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "721": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "ADD",
      "path": "100"
    },
    "722": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "723": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x302"
    },
    "726": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "JUMP",
      "path": "100"
    },
    "727": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "728": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP3",
      "path": "100"
    },
    "729": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "ADD",
      "path": "100"
    },
    "730": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "731": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "732": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "734": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "735": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "737": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "739": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "740": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "741": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "742": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP2",
      "path": "100"
    },
    "743": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "744": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP2",
      "path": "100"
    },
    "745": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "746": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "747": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x1"
    },
    "749": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "ADD",
      "path": "100"
    },
    "750": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "751": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "753": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "ADD",
      "path": "100"
    },
    "754": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP1",
      "path": "100"
    },
    "755": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP4",
      "path": "100"
    },
    "756": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "GT",
      "path": "100"
    },
    "757": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x2E5"
    },
    "760": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "761": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP3",
      "path": "100"
    },
    "762": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "763": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SUB",
      "path": "100"
    },
    "764": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x1F"
    },
    "766": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "AND",
      "path": "100"
    },
    "767": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "DUP3",
      "path": "100"
    },
    "768": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "ADD",
      "path": "100"
    },
    "769": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "770": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "771": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "POP",
      "path": "100"
    },
    "772": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "POP",
      "path": "100"
    },
    "773": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "POP",
      "path": "100"
    },
    "774": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "POP",
      "path": "100"
    },
    "775": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "POP",
      "path": "100"
    },
    "776": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "777": {
      "fn": "ERC721.name",
      "offset": [
        2567,
        2579
      ],
      "op": "POP",
      "path": "100"
    },
    "778": {
      "fn": "ERC721.name",
      "offset": [
        2488,
        2586
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "779": {
      "fn": "ERC721.name",
      "jump": "o",
      "offset": [
        2488,
        2586
      ],
      "op": "JUMP",
      "path": "100"
    },
    "780": {
      "fn": "ERC721.getApproved",
      "offset": [
        3999,
        4216
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "781": {
      "fn": "ERC721.getApproved",
      "offset": [
        4075,
        4082
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "783": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "DUP2",
      "path": "100",
      "statement": 4
    },
    "784": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "DUP2",
      "path": "100"
    },
    "785": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "786": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7254
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x2"
    },
    "788": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "790": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "791": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "793": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "DUP2",
      "path": "100"
    },
    "794": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "795": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "796": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "798": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "800": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "802": {
      "op": "SHL"
    },
    "803": {
      "op": "SUB"
    },
    "804": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "AND",
      "path": "100"
    },
    "805": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "PUSH2",
      "path": "100",
      "statement": 5,
      "value": "0x38A"
    },
    "808": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "809": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "811": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "812": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "816": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "818": {
      "op": "SHL"
    },
    "819": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "DUP2",
      "path": "100"
    },
    "820": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "821": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "823": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "825": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "DUP3",
      "path": "100"
    },
    "826": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "ADD",
      "path": "100"
    },
    "827": {
      "op": "MSTORE"
    },
    "828": {
      "op": "PUSH1",
      "value": "0x2C"
    },
    "830": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "832": {
      "op": "DUP3"
    },
    "833": {
      "op": "ADD"
    },
    "834": {
      "op": "MSTORE"
    },
    "835": {
      "op": "PUSH32",
      "value": "0x4552433732313A20617070726F76656420717565727920666F72206E6F6E6578"
    },
    "868": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "870": {
      "op": "DUP3"
    },
    "871": {
      "op": "ADD"
    },
    "872": {
      "op": "MSTORE"
    },
    "873": {
      "op": "PUSH12",
      "value": "0x34B9BA32B73A103A37B5B2B7"
    },
    "886": {
      "op": "PUSH1",
      "value": "0xA1"
    },
    "888": {
      "op": "SHL"
    },
    "889": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "891": {
      "op": "DUP3"
    },
    "892": {
      "op": "ADD"
    },
    "893": {
      "op": "MSTORE"
    },
    "894": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "896": {
      "op": "ADD"
    },
    "897": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "898": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "900": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "901": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "DUP1",
      "path": "100"
    },
    "902": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "903": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "SUB",
      "path": "100"
    },
    "904": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "905": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "REVERT",
      "optimizer_revert": true,
      "path": "100"
    },
    "906": {
      "fn": "ERC721.getApproved",
      "offset": [
        4094,
        4167
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "907": {
      "op": "POP"
    },
    "908": {
      "fn": "ERC721.getApproved",
      "offset": [
        4185,
        4209
      ],
      "op": "PUSH1",
      "path": "100",
      "statement": 6,
      "value": "0x0"
    },
    "910": {
      "fn": "ERC721.getApproved",
      "offset": [
        4185,
        4209
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "911": {
      "fn": "ERC721.getApproved",
      "offset": [
        4185,
        4209
      ],
      "op": "DUP2",
      "path": "100"
    },
    "912": {
      "fn": "ERC721.getApproved",
      "offset": [
        4185,
        4209
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "913": {
      "fn": "ERC721.getApproved",
      "offset": [
        4185,
        4200
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "915": {
      "fn": "ERC721.getApproved",
      "offset": [
        4185,
        4209
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "917": {
      "fn": "ERC721.getApproved",
      "offset": [
        4185,
        4209
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "918": {
      "fn": "ERC721.getApproved",
      "offset": [
        4185,
        4209
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "920": {
      "fn": "ERC721.getApproved",
      "offset": [
        4185,
        4209
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "921": {
      "fn": "ERC721.getApproved",
      "offset": [
        4185,
        4209
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "922": {
      "fn": "ERC721.getApproved",
      "offset": [
        4185,
        4209
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "923": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "925": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "927": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "929": {
      "op": "SHL"
    },
    "930": {
      "op": "SUB"
    },
    "931": {
      "fn": "ERC721.getApproved",
      "offset": [
        4185,
        4209
      ],
      "op": "AND",
      "path": "100"
    },
    "932": {
      "fn": "ERC721.getApproved",
      "offset": [
        4185,
        4209
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "933": {
      "fn": "ERC721.getApproved",
      "jump": "o",
      "offset": [
        3999,
        4216
      ],
      "op": "JUMP",
      "path": "100"
    },
    "934": {
      "fn": "ERC721.approve",
      "offset": [
        3537,
        3938
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "935": {
      "fn": "ERC721.approve",
      "offset": [
        3617,
        3630
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "937": {
      "fn": "ERC721.approve",
      "offset": [
        3633,
        3656
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x3B1"
    },
    "940": {
      "fn": "ERC721.approve",
      "offset": [
        3648,
        3655
      ],
      "op": "DUP3",
      "path": "100"
    },
    "941": {
      "fn": "ERC721.approve",
      "offset": [
        3633,
        3647
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x508"
    },
    "944": {
      "fn": "ERC721.approve",
      "jump": "i",
      "offset": [
        3633,
        3656
      ],
      "op": "JUMP",
      "path": "100"
    },
    "945": {
      "fn": "ERC721.approve",
      "offset": [
        3633,
        3656
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "946": {
      "fn": "ERC721.approve",
      "offset": [
        3617,
        3656
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "947": {
      "fn": "ERC721.approve",
      "offset": [
        3617,
        3656
      ],
      "op": "POP",
      "path": "100"
    },
    "948": {
      "fn": "ERC721.approve",
      "offset": [
        3680,
        3685
      ],
      "op": "DUP1",
      "path": "100",
      "statement": 7
    },
    "949": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "951": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "953": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "955": {
      "op": "SHL"
    },
    "956": {
      "op": "SUB"
    },
    "957": {
      "fn": "ERC721.approve",
      "offset": [
        3674,
        3685
      ],
      "op": "AND",
      "path": "100"
    },
    "958": {
      "fn": "ERC721.approve",
      "offset": [
        3674,
        3676
      ],
      "op": "DUP4",
      "path": "100"
    },
    "959": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "961": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "963": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "965": {
      "op": "SHL"
    },
    "966": {
      "op": "SUB"
    },
    "967": {
      "fn": "ERC721.approve",
      "offset": [
        3674,
        3685
      ],
      "op": "AND",
      "path": "100"
    },
    "968": {
      "fn": "ERC721.approve",
      "offset": [
        3674,
        3685
      ],
      "op": "EQ",
      "path": "100"
    },
    "969": {
      "branch": 50,
      "fn": "ERC721.approve",
      "offset": [
        3674,
        3685
      ],
      "op": "ISZERO",
      "path": "100"
    },
    "970": {
      "fn": "ERC721.approve",
      "offset": [
        3666,
        3723
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x41F"
    },
    "973": {
      "branch": 50,
      "fn": "ERC721.approve",
      "offset": [
        3666,
        3723
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "974": {
      "fn": "ERC721.approve",
      "offset": [
        3666,
        3723
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "976": {
      "fn": "ERC721.approve",
      "offset": [
        3666,
        3723
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "977": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "981": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "983": {
      "op": "SHL"
    },
    "984": {
      "fn": "ERC721.approve",
      "offset": [
        3666,
        3723
      ],
      "op": "DUP2",
      "path": "100"
    },
    "985": {
      "fn": "ERC721.approve",
      "offset": [
        3666,
        3723
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "986": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "988": {
      "fn": "ERC721.approve",
      "offset": [
        3666,
        3723
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "990": {
      "fn": "ERC721.approve",
      "offset": [
        3666,
        3723
      ],
      "op": "DUP3",
      "path": "100"
    },
    "991": {
      "fn": "ERC721.approve",
      "offset": [
        3666,
        3723
      ],
      "op": "ADD",
      "path": "100"
    },
    "992": {
      "op": "MSTORE"
    },
    "993": {
      "op": "PUSH1",
      "value": "0x21"
    },
    "995": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "997": {
      "op": "DUP3"
    },
    "998": {
      "op": "ADD"
    },
    "999": {
      "op": "MSTORE"
    },
    "1000": {
      "op": "PUSH32",
      "value": "0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65"
    },
    "1033": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1035": {
      "op": "DUP3"
    },
    "1036": {
      "op": "ADD"
    },
    "1037": {
      "op": "MSTORE"
    },
    "1038": {
      "op": "PUSH1",
      "value": "0x39"
    },
    "1040": {
      "op": "PUSH1",
      "value": "0xF9"
    },
    "1042": {
      "op": "SHL"
    },
    "1043": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1045": {
      "op": "DUP3"
    },
    "1046": {
      "op": "ADD"
    },
    "1047": {
      "op": "MSTORE"
    },
    "1048": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1050": {
      "op": "ADD"
    },
    "1051": {
      "fn": "ERC721.approve",
      "offset": [
        3666,
        3723
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x381"
    },
    "1054": {
      "op": "JUMP"
    },
    "1055": {
      "fn": "ERC721.approve",
      "offset": [
        3666,
        3723
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1056": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "105",
      "statement": 8
    },
    "1057": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1059": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1061": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1063": {
      "op": "SHL"
    },
    "1064": {
      "op": "SUB"
    },
    "1065": {
      "fn": "ERC721.approve",
      "offset": [
        3755,
        3776
      ],
      "op": "DUP3",
      "path": "100",
      "statement": 9
    },
    "1066": {
      "fn": "ERC721.approve",
      "offset": [
        3755,
        3776
      ],
      "op": "AND",
      "path": "100"
    },
    "1067": {
      "fn": "ERC721.approve",
      "offset": [
        3755,
        3776
      ],
      "op": "EQ",
      "path": "100"
    },
    "1068": {
      "branch": 51,
      "fn": "ERC721.approve",
      "offset": [
        3755,
        3776
      ],
      "op": "DUP1",
      "path": "100"
    },
    "1069": {
      "fn": "ERC721.approve",
      "offset": [
        3755,
        3817
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x43B"
    },
    "1072": {
      "branch": 51,
      "fn": "ERC721.approve",
      "offset": [
        3755,
        3817
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "1073": {
      "op": "POP"
    },
    "1074": {
      "fn": "ERC721.approve",
      "offset": [
        3780,
        3817
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x43B"
    },
    "1077": {
      "fn": "ERC721.approve",
      "offset": [
        3797,
        3802
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1078": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "105"
    },
    "1079": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4502,
        4664
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x1FA"
    },
    "1082": {
      "fn": "ERC721.isApprovedForAll",
      "jump": "i",
      "offset": [
        4502,
        4664
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1083": {
      "branch": 52,
      "fn": "ERC721.approve",
      "offset": [
        3780,
        3817
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1084": {
      "fn": "ERC721.approve",
      "offset": [
        3734,
        3899
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x4AD"
    },
    "1087": {
      "branch": 52,
      "fn": "ERC721.approve",
      "offset": [
        3734,
        3899
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "1088": {
      "fn": "ERC721.approve",
      "offset": [
        3734,
        3899
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1090": {
      "fn": "ERC721.approve",
      "offset": [
        3734,
        3899
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "1091": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1095": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1097": {
      "op": "SHL"
    },
    "1098": {
      "fn": "ERC721.approve",
      "offset": [
        3734,
        3899
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1099": {
      "fn": "ERC721.approve",
      "offset": [
        3734,
        3899
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1100": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1102": {
      "fn": "ERC721.approve",
      "offset": [
        3734,
        3899
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "1104": {
      "fn": "ERC721.approve",
      "offset": [
        3734,
        3899
      ],
      "op": "DUP3",
      "path": "100"
    },
    "1105": {
      "fn": "ERC721.approve",
      "offset": [
        3734,
        3899
      ],
      "op": "ADD",
      "path": "100"
    },
    "1106": {
      "op": "MSTORE"
    },
    "1107": {
      "op": "PUSH1",
      "value": "0x38"
    },
    "1109": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1111": {
      "op": "DUP3"
    },
    "1112": {
      "op": "ADD"
    },
    "1113": {
      "op": "MSTORE"
    },
    "1114": {
      "op": "PUSH32",
      "value": "0x4552433732313A20617070726F76652063616C6C6572206973206E6F74206F77"
    },
    "1147": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1149": {
      "op": "DUP3"
    },
    "1150": {
      "op": "ADD"
    },
    "1151": {
      "op": "MSTORE"
    },
    "1152": {
      "op": "PUSH32",
      "value": "0x6E6572206E6F7220617070726F76656420666F7220616C6C0000000000000000"
    },
    "1185": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1187": {
      "op": "DUP3"
    },
    "1188": {
      "op": "ADD"
    },
    "1189": {
      "op": "MSTORE"
    },
    "1190": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1192": {
      "op": "ADD"
    },
    "1193": {
      "fn": "ERC721.approve",
      "offset": [
        3734,
        3899
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x381"
    },
    "1196": {
      "op": "JUMP"
    },
    "1197": {
      "fn": "ERC721.approve",
      "offset": [
        3734,
        3899
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1198": {
      "fn": "ERC721.approve",
      "offset": [
        3910,
        3931
      ],
      "op": "PUSH2",
      "path": "100",
      "statement": 10,
      "value": "0x4B7"
    },
    "1201": {
      "fn": "ERC721.approve",
      "offset": [
        3919,
        3921
      ],
      "op": "DUP4",
      "path": "100"
    },
    "1202": {
      "fn": "ERC721.approve",
      "offset": [
        3923,
        3930
      ],
      "op": "DUP4",
      "path": "100"
    },
    "1203": {
      "fn": "ERC721.approve",
      "offset": [
        3910,
        3918
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x744"
    },
    "1206": {
      "fn": "ERC721.approve",
      "jump": "i",
      "offset": [
        3910,
        3931
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1207": {
      "fn": "ERC721.approve",
      "offset": [
        3910,
        3931
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1208": {
      "fn": "ERC721.approve",
      "offset": [
        3607,
        3938
      ],
      "op": "POP",
      "path": "100"
    },
    "1209": {
      "fn": "ERC721.approve",
      "offset": [
        3537,
        3938
      ],
      "op": "POP",
      "path": "100"
    },
    "1210": {
      "fn": "ERC721.approve",
      "offset": [
        3537,
        3938
      ],
      "op": "POP",
      "path": "100"
    },
    "1211": {
      "fn": "ERC721.approve",
      "jump": "o",
      "offset": [
        3537,
        3938
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1212": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4726,
        5056
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1213": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4915,
        4956
      ],
      "op": "PUSH2",
      "path": "100",
      "statement": 11,
      "value": "0x4C6"
    },
    "1216": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "105"
    },
    "1217": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4948,
        4955
      ],
      "op": "DUP3",
      "path": "100"
    },
    "1218": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4915,
        4933
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x7B2"
    },
    "1221": {
      "fn": "ERC721.transferFrom",
      "jump": "i",
      "offset": [
        4915,
        4956
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1222": {
      "branch": 53,
      "fn": "ERC721.transferFrom",
      "offset": [
        4915,
        4956
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1223": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4907,
        5010
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x4E2"
    },
    "1226": {
      "branch": 53,
      "fn": "ERC721.transferFrom",
      "offset": [
        4907,
        5010
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "1227": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4907,
        5010
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1229": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4907,
        5010
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "1230": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1234": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1236": {
      "op": "SHL"
    },
    "1237": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4907,
        5010
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1238": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4907,
        5010
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1239": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4907,
        5010
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "1241": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4907,
        5010
      ],
      "op": "ADD",
      "path": "100"
    },
    "1242": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4907,
        5010
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x381"
    },
    "1245": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4907,
        5010
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1246": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4907,
        5010
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x108A"
    },
    "1249": {
      "fn": "ERC721.transferFrom",
      "jump": "i",
      "offset": [
        4907,
        5010
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1250": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4907,
        5010
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1251": {
      "fn": "ERC721.transferFrom",
      "offset": [
        5021,
        5049
      ],
      "op": "PUSH2",
      "path": "100",
      "statement": 12,
      "value": "0x4B7"
    },
    "1254": {
      "fn": "ERC721.transferFrom",
      "offset": [
        5031,
        5035
      ],
      "op": "DUP4",
      "path": "100"
    },
    "1255": {
      "fn": "ERC721.transferFrom",
      "offset": [
        5037,
        5039
      ],
      "op": "DUP4",
      "path": "100"
    },
    "1256": {
      "fn": "ERC721.transferFrom",
      "offset": [
        5041,
        5048
      ],
      "op": "DUP4",
      "path": "100"
    },
    "1257": {
      "fn": "ERC721.transferFrom",
      "offset": [
        5021,
        5030
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x8A9"
    },
    "1260": {
      "fn": "ERC721.transferFrom",
      "jump": "i",
      "offset": [
        5021,
        5049
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1261": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5122,
        5301
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1262": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5255,
        5294
      ],
      "op": "PUSH2",
      "path": "100",
      "statement": 13,
      "value": "0x4B7"
    },
    "1265": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5272,
        5276
      ],
      "op": "DUP4",
      "path": "100"
    },
    "1266": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5278,
        5280
      ],
      "op": "DUP4",
      "path": "100"
    },
    "1267": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5282,
        5289
      ],
      "op": "DUP4",
      "path": "100"
    },
    "1268": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5255,
        5294
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1270": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5255,
        5294
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "1271": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5255,
        5294
      ],
      "op": "DUP1",
      "path": "100"
    },
    "1272": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5255,
        5294
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "1274": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5255,
        5294
      ],
      "op": "ADD",
      "path": "100"
    },
    "1275": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5255,
        5294
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1277": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5255,
        5294
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1278": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5255,
        5294
      ],
      "op": "DUP1",
      "path": "100"
    },
    "1279": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5255,
        5294
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "1281": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5255,
        5294
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1282": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5255,
        5294
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1283": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5255,
        5294
      ],
      "op": "POP",
      "path": "100"
    },
    "1284": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5255,
        5271
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x624"
    },
    "1287": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5255,
        5294
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1288": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2191,
        2426
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1289": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2263,
        2270
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "1291": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2298,
        2314
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1292": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2298,
        2314
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1293": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2298,
        2314
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1294": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2298,
        2305
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x2"
    },
    "1296": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2298,
        2314
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "1298": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2298,
        2314
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1299": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2298,
        2314
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1301": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2298,
        2314
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1302": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2298,
        2314
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "1303": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2298,
        2314
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "1304": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1306": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1308": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1310": {
      "op": "SHL"
    },
    "1311": {
      "op": "SUB"
    },
    "1312": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2298,
        2314
      ],
      "op": "AND",
      "path": "100"
    },
    "1313": {
      "branch": 54,
      "fn": "ERC721.ownerOf",
      "offset": [
        2332,
        2351
      ],
      "op": "DUP1",
      "path": "100",
      "statement": 14
    },
    "1314": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2397
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x274"
    },
    "1317": {
      "branch": 54,
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2397
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "1318": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2397
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1320": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2397
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "1321": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1325": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1327": {
      "op": "SHL"
    },
    "1328": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2397
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1329": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2397
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1330": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1332": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2397
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "1334": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2397
      ],
      "op": "DUP3",
      "path": "100"
    },
    "1335": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2397
      ],
      "op": "ADD",
      "path": "100"
    },
    "1336": {
      "op": "MSTORE"
    },
    "1337": {
      "op": "PUSH1",
      "value": "0x29"
    },
    "1339": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1341": {
      "op": "DUP3"
    },
    "1342": {
      "op": "ADD"
    },
    "1343": {
      "op": "MSTORE"
    },
    "1344": {
      "op": "PUSH32",
      "value": "0x4552433732313A206F776E657220717565727920666F72206E6F6E6578697374"
    },
    "1377": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1379": {
      "op": "DUP3"
    },
    "1380": {
      "op": "ADD"
    },
    "1381": {
      "op": "MSTORE"
    },
    "1382": {
      "op": "PUSH9",
      "value": "0x32B73A103A37B5B2B7"
    },
    "1392": {
      "op": "PUSH1",
      "value": "0xB9"
    },
    "1394": {
      "op": "SHL"
    },
    "1395": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1397": {
      "op": "DUP3"
    },
    "1398": {
      "op": "ADD"
    },
    "1399": {
      "op": "MSTORE"
    },
    "1400": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1402": {
      "op": "ADD"
    },
    "1403": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2397
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x381"
    },
    "1406": {
      "op": "JUMP"
    },
    "1407": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2134
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1408": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2001,
        2008
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "1410": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1412": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1414": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1416": {
      "op": "SHL"
    },
    "1417": {
      "op": "SUB"
    },
    "1418": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2028,
        2047
      ],
      "op": "DUP3",
      "path": "100",
      "statement": 15
    },
    "1419": {
      "branch": 55,
      "fn": "ERC721.balanceOf",
      "offset": [
        2028,
        2047
      ],
      "op": "AND",
      "path": "100"
    },
    "1420": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2094
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x5EA"
    },
    "1423": {
      "branch": 55,
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2094
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "1424": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2094
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1426": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2094
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "1427": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1431": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1433": {
      "op": "SHL"
    },
    "1434": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2094
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1435": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2094
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1436": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1438": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2094
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "1440": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2094
      ],
      "op": "DUP3",
      "path": "100"
    },
    "1441": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2094
      ],
      "op": "ADD",
      "path": "100"
    },
    "1442": {
      "op": "MSTORE"
    },
    "1443": {
      "op": "PUSH1",
      "value": "0x2A"
    },
    "1445": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1447": {
      "op": "DUP3"
    },
    "1448": {
      "op": "ADD"
    },
    "1449": {
      "op": "MSTORE"
    },
    "1450": {
      "op": "PUSH32",
      "value": "0x4552433732313A2062616C616E636520717565727920666F7220746865207A65"
    },
    "1483": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1485": {
      "op": "DUP3"
    },
    "1486": {
      "op": "ADD"
    },
    "1487": {
      "op": "MSTORE"
    },
    "1488": {
      "op": "PUSH10",
      "value": "0x726F2061646472657373"
    },
    "1499": {
      "op": "PUSH1",
      "value": "0xB0"
    },
    "1501": {
      "op": "SHL"
    },
    "1502": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1504": {
      "op": "DUP3"
    },
    "1505": {
      "op": "ADD"
    },
    "1506": {
      "op": "MSTORE"
    },
    "1507": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1509": {
      "op": "ADD"
    },
    "1510": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2094
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x381"
    },
    "1513": {
      "op": "JUMP"
    },
    "1514": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2094
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1515": {
      "op": "POP"
    },
    "1516": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1518": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1520": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1522": {
      "op": "SHL"
    },
    "1523": {
      "op": "SUB"
    },
    "1524": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2111,
        2127
      ],
      "op": "AND",
      "path": "100",
      "statement": 16
    },
    "1525": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2111,
        2127
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "1527": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2111,
        2127
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1528": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2111,
        2127
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1529": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2111,
        2127
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1530": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2111,
        2120
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x3"
    },
    "1532": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2111,
        2127
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "1534": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2111,
        2127
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1535": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2111,
        2127
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1537": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2111,
        2127
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1538": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2111,
        2127
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "1539": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2111,
        2127
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "1540": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2111,
        2127
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1541": {
      "fn": "ERC721.balanceOf",
      "jump": "o",
      "offset": [
        1929,
        2134
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1542": {
      "fn": "ERC721.symbol",
      "offset": [
        2650,
        2752
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1543": {
      "fn": "ERC721.symbol",
      "offset": [
        2706,
        2719
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x60"
    },
    "1545": {
      "fn": "ERC721.symbol",
      "offset": [
        2738,
        2745
      ],
      "op": "PUSH1",
      "path": "100",
      "statement": 17,
      "value": "0x1"
    },
    "1547": {
      "fn": "ERC721.symbol",
      "offset": [
        2731,
        2745
      ],
      "op": "DUP1",
      "path": "100"
    },
    "1548": {
      "fn": "ERC721.symbol",
      "offset": [
        2731,
        2745
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "1549": {
      "fn": "ERC721.symbol",
      "offset": [
        2731,
        2745
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x289"
    },
    "1552": {
      "fn": "ERC721.symbol",
      "offset": [
        2731,
        2745
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1553": {
      "fn": "ERC721.symbol",
      "offset": [
        2731,
        2745
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x114A"
    },
    "1556": {
      "fn": "ERC721.symbol",
      "jump": "i",
      "offset": [
        2731,
        2745
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1557": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4283,
        4436
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1558": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4377,
        4429
      ],
      "op": "PUSH2",
      "path": "100",
      "statement": 18,
      "value": "0x620"
    },
    "1561": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "105"
    },
    "1562": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4410,
        4418
      ],
      "op": "DUP4",
      "path": "100"
    },
    "1563": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4420,
        4428
      ],
      "op": "DUP4",
      "path": "100"
    },
    "1564": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4377,
        4395
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xA45"
    },
    "1567": {
      "fn": "ERC721.setApprovalForAll",
      "jump": "i",
      "offset": [
        4377,
        4429
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1568": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4377,
        4429
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1569": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4283,
        4436
      ],
      "op": "POP",
      "path": "100"
    },
    "1570": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4283,
        4436
      ],
      "op": "POP",
      "path": "100"
    },
    "1571": {
      "fn": "ERC721.setApprovalForAll",
      "jump": "o",
      "offset": [
        4283,
        4436
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1572": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5367,
        5687
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1573": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5536,
        5577
      ],
      "op": "PUSH2",
      "path": "100",
      "statement": 19,
      "value": "0x62E"
    },
    "1576": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "105"
    },
    "1577": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5569,
        5576
      ],
      "op": "DUP4",
      "path": "100"
    },
    "1578": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5536,
        5554
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x7B2"
    },
    "1581": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5536,
        5577
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1582": {
      "branch": 56,
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5536,
        5577
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1583": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5528,
        5631
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x64A"
    },
    "1586": {
      "branch": 56,
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5528,
        5631
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "1587": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5528,
        5631
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1589": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5528,
        5631
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "1590": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1594": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1596": {
      "op": "SHL"
    },
    "1597": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5528,
        5631
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1598": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5528,
        5631
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1599": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5528,
        5631
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "1601": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5528,
        5631
      ],
      "op": "ADD",
      "path": "100"
    },
    "1602": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5528,
        5631
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x381"
    },
    "1605": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5528,
        5631
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1606": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5528,
        5631
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x108A"
    },
    "1609": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5528,
        5631
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1610": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5528,
        5631
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1611": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5641,
        5680
      ],
      "op": "PUSH2",
      "path": "100",
      "statement": 20,
      "value": "0x656"
    },
    "1614": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5655,
        5659
      ],
      "op": "DUP5",
      "path": "100"
    },
    "1615": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5661,
        5663
      ],
      "op": "DUP5",
      "path": "100"
    },
    "1616": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5665,
        5672
      ],
      "op": "DUP5",
      "path": "100"
    },
    "1617": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5674,
        5679
      ],
      "op": "DUP5",
      "path": "100"
    },
    "1618": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5641,
        5654
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xB14"
    },
    "1621": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5641,
        5680
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1622": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5641,
        5680
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1623": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5367,
        5687
      ],
      "op": "POP",
      "path": "100"
    },
    "1624": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5367,
        5687
      ],
      "op": "POP",
      "path": "100"
    },
    "1625": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5367,
        5687
      ],
      "op": "POP",
      "path": "100"
    },
    "1626": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5367,
        5687
      ],
      "op": "POP",
      "path": "100"
    },
    "1627": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "o",
      "offset": [
        5367,
        5687
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1628": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2818,
        3147
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1629": {
      "fn": "ERC721._exists",
      "offset": [
        7224,
        7228
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "1631": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1632": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1633": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1634": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7254
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x2"
    },
    "1636": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "1638": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1639": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1641": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1642": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "1643": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "1644": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2891,
        2904
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x60"
    },
    "1646": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2891,
        2904
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1647": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1649": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1651": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1653": {
      "op": "SHL"
    },
    "1654": {
      "op": "SUB"
    },
    "1655": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "AND",
      "path": "100"
    },
    "1656": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2916,
        2992
      ],
      "op": "PUSH2",
      "path": "100",
      "statement": 21,
      "value": "0x6DB"
    },
    "1659": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2916,
        2992
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "1660": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2916,
        2992
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1662": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2916,
        2992
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "1663": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1667": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1669": {
      "op": "SHL"
    },
    "1670": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2916,
        2992
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1671": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2916,
        2992
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1672": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1674": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2916,
        2992
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "1676": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2916,
        2992
      ],
      "op": "DUP3",
      "path": "100"
    },
    "1677": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2916,
        2992
      ],
      "op": "ADD",
      "path": "100"
    },
    "1678": {
      "op": "MSTORE"
    },
    "1679": {
      "op": "PUSH1",
      "value": "0x2F"
    },
    "1681": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1683": {
      "op": "DUP3"
    },
    "1684": {
      "op": "ADD"
    },
    "1685": {
      "op": "MSTORE"
    },
    "1686": {
      "op": "PUSH32",
      "value": "0x4552433732314D657461646174613A2055524920717565727920666F72206E6F"
    },
    "1719": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1721": {
      "op": "DUP3"
    },
    "1722": {
      "op": "ADD"
    },
    "1723": {
      "op": "MSTORE"
    },
    "1724": {
      "op": "PUSH15",
      "value": "0x3732BC34B9BA32B73A103A37B5B2B7"
    },
    "1740": {
      "op": "PUSH1",
      "value": "0x89"
    },
    "1742": {
      "op": "SHL"
    },
    "1743": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1745": {
      "op": "DUP3"
    },
    "1746": {
      "op": "ADD"
    },
    "1747": {
      "op": "MSTORE"
    },
    "1748": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1750": {
      "op": "ADD"
    },
    "1751": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2916,
        2992
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x381"
    },
    "1754": {
      "op": "JUMP"
    },
    "1755": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2916,
        2992
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1756": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3003,
        3024
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "1758": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3027,
        3037
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x6F2"
    },
    "1761": {
      "fn": "ERC721._baseURI",
      "offset": [
        3464,
        3473
      ],
      "op": "PUSH1",
      "path": "100",
      "statement": 22,
      "value": "0x40"
    },
    "1763": {
      "fn": "ERC721._baseURI",
      "offset": [
        3464,
        3473
      ],
      "op": "DUP1",
      "path": "100"
    },
    "1764": {
      "fn": "ERC721._baseURI",
      "offset": [
        3464,
        3473
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "1765": {
      "fn": "ERC721._baseURI",
      "offset": [
        3464,
        3473
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "1767": {
      "fn": "ERC721._baseURI",
      "offset": [
        3464,
        3473
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1768": {
      "fn": "ERC721._baseURI",
      "offset": [
        3464,
        3473
      ],
      "op": "ADD",
      "path": "100"
    },
    "1769": {
      "fn": "ERC721._baseURI",
      "offset": [
        3464,
        3473
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1770": {
      "fn": "ERC721._baseURI",
      "offset": [
        3464,
        3473
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "1771": {
      "fn": "ERC721._baseURI",
      "offset": [
        3464,
        3473
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1772": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1774": {
      "fn": "ERC721._baseURI",
      "offset": [
        3464,
        3473
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1775": {
      "fn": "ERC721._baseURI",
      "offset": [
        3464,
        3473
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1776": {
      "fn": "ERC721._baseURI",
      "offset": [
        3464,
        3473
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1777": {
      "fn": "ERC721._baseURI",
      "offset": [
        3388,
        3480
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1778": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3027,
        3037
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1779": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3003,
        3037
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1780": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3003,
        3037
      ],
      "op": "POP",
      "path": "100"
    },
    "1781": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3078,
        3079
      ],
      "op": "PUSH1",
      "path": "100",
      "statement": 23,
      "value": "0x0"
    },
    "1783": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3060,
        3067
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1784": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3075
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "1785": {
      "branch": 57,
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3079
      ],
      "op": "GT",
      "path": "100"
    },
    "1786": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x712"
    },
    "1789": {
      "branch": 57,
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "1790": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1792": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "1793": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "DUP1",
      "path": "100"
    },
    "1794": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "1796": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "ADD",
      "path": "100"
    },
    "1797": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1799": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1800": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "DUP1",
      "path": "100"
    },
    "1801": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "1803": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1804": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1805": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "POP",
      "path": "100"
    },
    "1806": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x73D"
    },
    "1809": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1810": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1811": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3106,
        3113
      ],
      "op": "DUP1",
      "path": "100"
    },
    "1812": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3115,
        3133
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x71C"
    },
    "1815": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3115,
        3122
      ],
      "op": "DUP5",
      "path": "100"
    },
    "1816": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3115,
        3131
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xB47"
    },
    "1819": {
      "fn": "ERC721.tokenURI",
      "jump": "i",
      "offset": [
        3115,
        3133
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1820": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3115,
        3133
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1821": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1823": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "1824": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "1826": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "ADD",
      "path": "100"
    },
    "1827": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x72D"
    },
    "1830": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "SWAP3",
      "path": "100"
    },
    "1831": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "1832": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1833": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xFB9"
    },
    "1836": {
      "fn": "ERC721.tokenURI",
      "jump": "i",
      "offset": [
        3089,
        3134
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1837": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1838": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1840": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "1841": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "1843": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1844": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "DUP4",
      "path": "100"
    },
    "1845": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "SUB",
      "path": "100"
    },
    "1846": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "SUB",
      "path": "100"
    },
    "1847": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1848": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1849": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1850": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1852": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3089,
        3134
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1853": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3054,
        3140
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1854": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3047,
        3140
      ],
      "op": "SWAP4",
      "path": "100"
    },
    "1855": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2818,
        3147
      ],
      "op": "SWAP3",
      "path": "100"
    },
    "1856": {
      "op": "POP"
    },
    "1857": {
      "op": "POP"
    },
    "1858": {
      "op": "POP"
    },
    "1859": {
      "fn": "ERC721.tokenURI",
      "jump": "o",
      "offset": [
        2818,
        3147
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1860": {
      "fn": "ERC721._approve",
      "offset": [
        11168,
        11339
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1861": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11266
      ],
      "op": "PUSH1",
      "path": "100",
      "statement": 24,
      "value": "0x0"
    },
    "1863": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11266
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1864": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11266
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1865": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11266
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1866": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11257
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "1868": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11266
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "1870": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11266
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1871": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11266
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1873": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11266
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1874": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11266
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "1875": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11271
      ],
      "op": "DUP1",
      "path": "100"
    },
    "1876": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11271
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "1877": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1879": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1881": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1883": {
      "op": "SHL"
    },
    "1884": {
      "op": "SUB"
    },
    "1885": {
      "op": "NOT"
    },
    "1886": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11271
      ],
      "op": "AND",
      "path": "100"
    },
    "1887": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1889": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1891": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1893": {
      "op": "SHL"
    },
    "1894": {
      "op": "SUB"
    },
    "1895": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11271
      ],
      "op": "DUP5",
      "path": "100"
    },
    "1896": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11271
      ],
      "op": "AND",
      "path": "100"
    },
    "1897": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11271
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1898": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11271
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1899": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11271
      ],
      "op": "OR",
      "path": "100"
    },
    "1900": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11271
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1901": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11271
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "1902": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11271
      ],
      "op": "SSTORE",
      "path": "100"
    },
    "1903": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11266
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1904": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11266
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1905": {
      "fn": "ERC721._approve",
      "offset": [
        11295,
        11318
      ],
      "op": "PUSH2",
      "path": "100",
      "statement": 25,
      "value": "0x779"
    },
    "1908": {
      "fn": "ERC721._approve",
      "offset": [
        11242,
        11266
      ],
      "op": "DUP3",
      "path": "100"
    },
    "1909": {
      "fn": "ERC721._approve",
      "offset": [
        11295,
        11309
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x508"
    },
    "1912": {
      "fn": "ERC721._approve",
      "jump": "i",
      "offset": [
        11295,
        11318
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1913": {
      "fn": "ERC721._approve",
      "offset": [
        11295,
        11318
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1914": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1916": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1918": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1920": {
      "op": "SHL"
    },
    "1921": {
      "op": "SUB"
    },
    "1922": {
      "fn": "ERC721._approve",
      "offset": [
        11286,
        11332
      ],
      "op": "AND",
      "path": "100"
    },
    "1923": {
      "fn": "ERC721._approve",
      "offset": [
        11286,
        11332
      ],
      "op": "PUSH32",
      "path": "100",
      "value": "0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925"
    },
    "1956": {
      "fn": "ERC721._approve",
      "offset": [
        11286,
        11332
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1958": {
      "fn": "ERC721._approve",
      "offset": [
        11286,
        11332
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "1959": {
      "fn": "ERC721._approve",
      "offset": [
        11286,
        11332
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1961": {
      "fn": "ERC721._approve",
      "offset": [
        11286,
        11332
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "1962": {
      "fn": "ERC721._approve",
      "offset": [
        11286,
        11332
      ],
      "op": "DUP1",
      "path": "100"
    },
    "1963": {
      "fn": "ERC721._approve",
      "offset": [
        11286,
        11332
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "1964": {
      "fn": "ERC721._approve",
      "offset": [
        11286,
        11332
      ],
      "op": "SUB",
      "path": "100"
    },
    "1965": {
      "fn": "ERC721._approve",
      "offset": [
        11286,
        11332
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "1966": {
      "fn": "ERC721._approve",
      "offset": [
        11286,
        11332
      ],
      "op": "LOG4",
      "path": "100"
    },
    "1967": {
      "fn": "ERC721._approve",
      "offset": [
        11168,
        11339
      ],
      "op": "POP",
      "path": "100"
    },
    "1968": {
      "fn": "ERC721._approve",
      "offset": [
        11168,
        11339
      ],
      "op": "POP",
      "path": "100"
    },
    "1969": {
      "fn": "ERC721._approve",
      "jump": "o",
      "offset": [
        11168,
        11339
      ],
      "op": "JUMP",
      "path": "100"
    },
    "1970": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7442,
        7786
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "1971": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7535,
        7539
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "1973": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1974": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1975": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1976": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7254
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x2"
    },
    "1978": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "1980": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "1981": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "1983": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "DUP2",
      "path": "100"
    },
    "1984": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "1985": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "1986": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1988": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1990": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1992": {
      "op": "SHL"
    },
    "1993": {
      "op": "SUB"
    },
    "1994": {
      "fn": "ERC721._exists",
      "offset": [
        7247,
        7263
      ],
      "op": "AND",
      "path": "100"
    },
    "1995": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7551,
        7624
      ],
      "op": "PUSH2",
      "path": "100",
      "statement": 26,
      "value": "0x82B"
    },
    "1998": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7551,
        7624
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "1999": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7551,
        7624
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "2001": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7551,
        7624
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "2002": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2006": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2008": {
      "op": "SHL"
    },
    "2009": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7551,
        7624
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2010": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7551,
        7624
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2011": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2013": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7551,
        7624
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "2015": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7551,
        7624
      ],
      "op": "DUP3",
      "path": "100"
    },
    "2016": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7551,
        7624
      ],
      "op": "ADD",
      "path": "100"
    },
    "2017": {
      "op": "MSTORE"
    },
    "2018": {
      "op": "PUSH1",
      "value": "0x2C"
    },
    "2020": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "2022": {
      "op": "DUP3"
    },
    "2023": {
      "op": "ADD"
    },
    "2024": {
      "op": "MSTORE"
    },
    "2025": {
      "op": "PUSH32",
      "value": "0x4552433732313A206F70657261746F7220717565727920666F72206E6F6E6578"
    },
    "2058": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "2060": {
      "op": "DUP3"
    },
    "2061": {
      "op": "ADD"
    },
    "2062": {
      "op": "MSTORE"
    },
    "2063": {
      "op": "PUSH12",
      "value": "0x34B9BA32B73A103A37B5B2B7"
    },
    "2076": {
      "op": "PUSH1",
      "value": "0xA1"
    },
    "2078": {
      "op": "SHL"
    },
    "2079": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "2081": {
      "op": "DUP3"
    },
    "2082": {
      "op": "ADD"
    },
    "2083": {
      "op": "MSTORE"
    },
    "2084": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "2086": {
      "op": "ADD"
    },
    "2087": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7551,
        7624
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x381"
    },
    "2090": {
      "op": "JUMP"
    },
    "2091": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7551,
        7624
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2092": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7634,
        7647
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "2094": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7650,
        7673
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x836"
    },
    "2097": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7665,
        7672
      ],
      "op": "DUP4",
      "path": "100"
    },
    "2098": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7650,
        7664
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x508"
    },
    "2101": {
      "fn": "ERC721._isApprovedOrOwner",
      "jump": "i",
      "offset": [
        7650,
        7673
      ],
      "op": "JUMP",
      "path": "100"
    },
    "2102": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7650,
        7673
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2103": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7634,
        7673
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2104": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7634,
        7673
      ],
      "op": "POP",
      "path": "100"
    },
    "2105": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7702,
        7707
      ],
      "op": "DUP1",
      "path": "100",
      "statement": 27
    },
    "2106": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2108": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2110": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2112": {
      "op": "SHL"
    },
    "2113": {
      "op": "SUB"
    },
    "2114": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7691,
        7707
      ],
      "op": "AND",
      "path": "100"
    },
    "2115": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7691,
        7698
      ],
      "op": "DUP5",
      "path": "100"
    },
    "2116": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2118": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2120": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2122": {
      "op": "SHL"
    },
    "2123": {
      "op": "SUB"
    },
    "2124": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7691,
        7707
      ],
      "op": "AND",
      "path": "100"
    },
    "2125": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7691,
        7707
      ],
      "op": "EQ",
      "path": "100"
    },
    "2126": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7691,
        7742
      ],
      "op": "DUP1",
      "path": "100"
    },
    "2127": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7691,
        7742
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x871"
    },
    "2130": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7691,
        7742
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "2131": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7691,
        7742
      ],
      "op": "POP",
      "path": "100"
    },
    "2132": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7735,
        7742
      ],
      "op": "DUP4",
      "path": "100"
    },
    "2133": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2135": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2137": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2139": {
      "op": "SHL"
    },
    "2140": {
      "op": "SUB"
    },
    "2141": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7711,
        7742
      ],
      "op": "AND",
      "path": "100"
    },
    "2142": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7711,
        7731
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x866"
    },
    "2145": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7723,
        7730
      ],
      "op": "DUP5",
      "path": "100"
    },
    "2146": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7711,
        7722
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x30C"
    },
    "2149": {
      "fn": "ERC721._isApprovedOrOwner",
      "jump": "i",
      "offset": [
        7711,
        7731
      ],
      "op": "JUMP",
      "path": "100"
    },
    "2150": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7711,
        7731
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2151": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2153": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2155": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2157": {
      "op": "SHL"
    },
    "2158": {
      "op": "SUB"
    },
    "2159": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7711,
        7742
      ],
      "op": "AND",
      "path": "100"
    },
    "2160": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7711,
        7742
      ],
      "op": "EQ",
      "path": "100"
    },
    "2161": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7691,
        7742
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2162": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7691,
        7778
      ],
      "op": "DUP1",
      "path": "100"
    },
    "2163": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7691,
        7778
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x8A1"
    },
    "2166": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7691,
        7778
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "2167": {
      "op": "POP"
    },
    "2168": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2170": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2172": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2174": {
      "op": "SHL"
    },
    "2175": {
      "op": "SUB"
    },
    "2176": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "DUP1",
      "path": "100"
    },
    "2177": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "DUP3",
      "path": "100"
    },
    "2178": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "AND",
      "path": "100"
    },
    "2179": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4599,
        4603
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "2181": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2182": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2183": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2184": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4640
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x5"
    },
    "2186": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "2188": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2189": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2190": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2191": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "2193": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "DUP1",
      "path": "100"
    },
    "2194": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "DUP4",
      "path": "100"
    },
    "2195": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4647
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "2196": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "SWAP4",
      "path": "100"
    },
    "2197": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "DUP9",
      "path": "100"
    },
    "2198": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "AND",
      "path": "100"
    },
    "2199": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "DUP4",
      "path": "100"
    },
    "2200": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2201": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "SWAP3",
      "path": "100"
    },
    "2202": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2203": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2204": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "2205": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "2206": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0xFF"
    },
    "2208": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4622,
        4657
      ],
      "op": "AND",
      "path": "100"
    },
    "2209": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7746,
        7778
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2210": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7683,
        7779
      ],
      "op": "SWAP5",
      "path": "100"
    },
    "2211": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7442,
        7786
      ],
      "op": "SWAP4",
      "path": "100"
    },
    "2212": {
      "op": "POP"
    },
    "2213": {
      "op": "POP"
    },
    "2214": {
      "op": "POP"
    },
    "2215": {
      "op": "POP"
    },
    "2216": {
      "fn": "ERC721._isApprovedOrOwner",
      "jump": "o",
      "offset": [
        7442,
        7786
      ],
      "op": "JUMP",
      "path": "100"
    },
    "2217": {
      "fn": "ERC721._transfer",
      "offset": [
        10452,
        11057
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2218": {
      "fn": "ERC721._transfer",
      "offset": [
        10606,
        10610
      ],
      "op": "DUP3",
      "path": "100",
      "statement": 28
    },
    "2219": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2221": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2223": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2225": {
      "op": "SHL"
    },
    "2226": {
      "op": "SUB"
    },
    "2227": {
      "fn": "ERC721._transfer",
      "offset": [
        10579,
        10610
      ],
      "op": "AND",
      "path": "100"
    },
    "2228": {
      "fn": "ERC721._transfer",
      "offset": [
        10579,
        10602
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x8BC"
    },
    "2231": {
      "fn": "ERC721._transfer",
      "offset": [
        10594,
        10601
      ],
      "op": "DUP3",
      "path": "100"
    },
    "2232": {
      "fn": "ERC721._transfer",
      "offset": [
        10579,
        10593
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x508"
    },
    "2235": {
      "fn": "ERC721._transfer",
      "jump": "i",
      "offset": [
        10579,
        10602
      ],
      "op": "JUMP",
      "path": "100"
    },
    "2236": {
      "fn": "ERC721._transfer",
      "offset": [
        10579,
        10602
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2237": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2239": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2241": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2243": {
      "op": "SHL"
    },
    "2244": {
      "op": "SUB"
    },
    "2245": {
      "fn": "ERC721._transfer",
      "offset": [
        10579,
        10610
      ],
      "op": "AND",
      "path": "100"
    },
    "2246": {
      "branch": 58,
      "fn": "ERC721._transfer",
      "offset": [
        10579,
        10610
      ],
      "op": "EQ",
      "path": "100"
    },
    "2247": {
      "fn": "ERC721._transfer",
      "offset": [
        10571,
        10652
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x920"
    },
    "2250": {
      "branch": 58,
      "fn": "ERC721._transfer",
      "offset": [
        10571,
        10652
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "2251": {
      "fn": "ERC721._transfer",
      "offset": [
        10571,
        10652
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "2253": {
      "fn": "ERC721._transfer",
      "offset": [
        10571,
        10652
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "2254": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2258": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2260": {
      "op": "SHL"
    },
    "2261": {
      "fn": "ERC721._transfer",
      "offset": [
        10571,
        10652
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2262": {
      "fn": "ERC721._transfer",
      "offset": [
        10571,
        10652
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2263": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2265": {
      "fn": "ERC721._transfer",
      "offset": [
        10571,
        10652
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "2267": {
      "fn": "ERC721._transfer",
      "offset": [
        10571,
        10652
      ],
      "op": "DUP3",
      "path": "100"
    },
    "2268": {
      "fn": "ERC721._transfer",
      "offset": [
        10571,
        10652
      ],
      "op": "ADD",
      "path": "100"
    },
    "2269": {
      "op": "MSTORE"
    },
    "2270": {
      "op": "PUSH1",
      "value": "0x25"
    },
    "2272": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "2274": {
      "op": "DUP3"
    },
    "2275": {
      "op": "ADD"
    },
    "2276": {
      "op": "MSTORE"
    },
    "2277": {
      "op": "PUSH32",
      "value": "0x4552433732313A207472616E736665722066726F6D20696E636F727265637420"
    },
    "2310": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "2312": {
      "op": "DUP3"
    },
    "2313": {
      "op": "ADD"
    },
    "2314": {
      "op": "MSTORE"
    },
    "2315": {
      "op": "PUSH5",
      "value": "0x37BBB732B9"
    },
    "2321": {
      "op": "PUSH1",
      "value": "0xD9"
    },
    "2323": {
      "op": "SHL"
    },
    "2324": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "2326": {
      "op": "DUP3"
    },
    "2327": {
      "op": "ADD"
    },
    "2328": {
      "op": "MSTORE"
    },
    "2329": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "2331": {
      "op": "ADD"
    },
    "2332": {
      "fn": "ERC721._transfer",
      "offset": [
        10571,
        10652
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x381"
    },
    "2335": {
      "op": "JUMP"
    },
    "2336": {
      "fn": "ERC721._transfer",
      "offset": [
        10571,
        10652
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2337": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2339": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2341": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2343": {
      "op": "SHL"
    },
    "2344": {
      "op": "SUB"
    },
    "2345": {
      "fn": "ERC721._transfer",
      "offset": [
        10670,
        10686
      ],
      "op": "DUP3",
      "path": "100",
      "statement": 29
    },
    "2346": {
      "branch": 59,
      "fn": "ERC721._transfer",
      "offset": [
        10670,
        10686
      ],
      "op": "AND",
      "path": "100"
    },
    "2347": {
      "fn": "ERC721._transfer",
      "offset": [
        10662,
        10727
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x982"
    },
    "2350": {
      "branch": 59,
      "fn": "ERC721._transfer",
      "offset": [
        10662,
        10727
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "2351": {
      "fn": "ERC721._transfer",
      "offset": [
        10662,
        10727
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "2353": {
      "fn": "ERC721._transfer",
      "offset": [
        10662,
        10727
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "2354": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2358": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2360": {
      "op": "SHL"
    },
    "2361": {
      "fn": "ERC721._transfer",
      "offset": [
        10662,
        10727
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2362": {
      "fn": "ERC721._transfer",
      "offset": [
        10662,
        10727
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2363": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2365": {
      "fn": "ERC721._transfer",
      "offset": [
        10662,
        10727
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "2367": {
      "fn": "ERC721._transfer",
      "offset": [
        10662,
        10727
      ],
      "op": "DUP3",
      "path": "100"
    },
    "2368": {
      "fn": "ERC721._transfer",
      "offset": [
        10662,
        10727
      ],
      "op": "ADD",
      "path": "100"
    },
    "2369": {
      "op": "MSTORE"
    },
    "2370": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "2372": {
      "op": "DUP1"
    },
    "2373": {
      "op": "DUP3"
    },
    "2374": {
      "op": "ADD"
    },
    "2375": {
      "op": "MSTORE"
    },
    "2376": {
      "op": "PUSH32",
      "value": "0x4552433732313A207472616E7366657220746F20746865207A65726F20616464"
    },
    "2409": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "2411": {
      "op": "DUP3"
    },
    "2412": {
      "op": "ADD"
    },
    "2413": {
      "op": "MSTORE"
    },
    "2414": {
      "op": "PUSH4",
      "value": "0x72657373"
    },
    "2419": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "2421": {
      "op": "SHL"
    },
    "2422": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "2424": {
      "op": "DUP3"
    },
    "2425": {
      "op": "ADD"
    },
    "2426": {
      "op": "MSTORE"
    },
    "2427": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "2429": {
      "op": "ADD"
    },
    "2430": {
      "fn": "ERC721._transfer",
      "offset": [
        10662,
        10727
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x381"
    },
    "2433": {
      "op": "JUMP"
    },
    "2434": {
      "fn": "ERC721._transfer",
      "offset": [
        10662,
        10727
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2435": {
      "fn": "ERC721._transfer",
      "offset": [
        10839,
        10868
      ],
      "op": "PUSH2",
      "path": "100",
      "statement": 30,
      "value": "0x98D"
    },
    "2438": {
      "fn": "ERC721._transfer",
      "offset": [
        10856,
        10857
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "2440": {
      "fn": "ERC721._transfer",
      "offset": [
        10860,
        10867
      ],
      "op": "DUP3",
      "path": "100"
    },
    "2441": {
      "fn": "ERC721._transfer",
      "offset": [
        10839,
        10847
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x744"
    },
    "2444": {
      "fn": "ERC721._transfer",
      "jump": "i",
      "offset": [
        10839,
        10868
      ],
      "op": "JUMP",
      "path": "100"
    },
    "2445": {
      "fn": "ERC721._transfer",
      "offset": [
        10839,
        10868
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2446": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2448": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2450": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2452": {
      "op": "SHL"
    },
    "2453": {
      "op": "SUB"
    },
    "2454": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10894
      ],
      "op": "DUP4",
      "path": "100",
      "statement": 31
    },
    "2455": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10894
      ],
      "op": "AND",
      "path": "100"
    },
    "2456": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10894
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "2458": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10894
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2459": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10894
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2460": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10894
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2461": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10888
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x3"
    },
    "2463": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10894
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "2465": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10894
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2466": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10894
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "2468": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10894
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2469": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10894
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "2470": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10899
      ],
      "op": "DUP1",
      "path": "100"
    },
    "2471": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10899
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "2472": {
      "fn": "ERC721._transfer",
      "offset": [
        10898,
        10899
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x1"
    },
    "2474": {
      "fn": "ERC721._transfer",
      "offset": [
        10898,
        10899
      ],
      "op": "SWAP3",
      "path": "100"
    },
    "2475": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10894
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2476": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10899
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x9B6"
    },
    "2479": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10899
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2480": {
      "fn": "ERC721._transfer",
      "offset": [
        10898,
        10899
      ],
      "op": "DUP5",
      "path": "100"
    },
    "2481": {
      "fn": "ERC721._transfer",
      "offset": [
        10898,
        10899
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2482": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10899
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x1107"
    },
    "2485": {
      "fn": "ERC721._transfer",
      "jump": "i",
      "offset": [
        10879,
        10899
      ],
      "op": "JUMP",
      "path": "100"
    },
    "2486": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10899
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2487": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10899
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2488": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10899
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "2489": {
      "fn": "ERC721._transfer",
      "offset": [
        10879,
        10899
      ],
      "op": "SSTORE",
      "path": "100"
    },
    "2490": {
      "op": "POP"
    },
    "2491": {
      "op": "POP"
    },
    "2492": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2494": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2496": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2498": {
      "op": "SHL"
    },
    "2499": {
      "op": "SUB"
    },
    "2500": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10922
      ],
      "op": "DUP3",
      "path": "100",
      "statement": 32
    },
    "2501": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10922
      ],
      "op": "AND",
      "path": "100"
    },
    "2502": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10922
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "2504": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10922
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2505": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10922
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2506": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10922
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2507": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10918
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x3"
    },
    "2509": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10922
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "2511": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10922
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2512": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10922
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "2514": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10922
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2515": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10922
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "2516": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10927
      ],
      "op": "DUP1",
      "path": "100"
    },
    "2517": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10927
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "2518": {
      "fn": "ERC721._transfer",
      "offset": [
        10926,
        10927
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x1"
    },
    "2520": {
      "fn": "ERC721._transfer",
      "offset": [
        10926,
        10927
      ],
      "op": "SWAP3",
      "path": "100"
    },
    "2521": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10922
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2522": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10927
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x9E4"
    },
    "2525": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10927
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2526": {
      "fn": "ERC721._transfer",
      "offset": [
        10926,
        10927
      ],
      "op": "DUP5",
      "path": "100"
    },
    "2527": {
      "fn": "ERC721._transfer",
      "offset": [
        10926,
        10927
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2528": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10927
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x10DB"
    },
    "2531": {
      "fn": "ERC721._transfer",
      "jump": "i",
      "offset": [
        10909,
        10927
      ],
      "op": "JUMP",
      "path": "100"
    },
    "2532": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10927
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2533": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10927
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2534": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10927
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "2535": {
      "fn": "ERC721._transfer",
      "offset": [
        10909,
        10927
      ],
      "op": "SSTORE",
      "path": "100"
    },
    "2536": {
      "op": "POP"
    },
    "2537": {
      "op": "POP"
    },
    "2538": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10953
      ],
      "op": "PUSH1",
      "path": "100",
      "statement": 33,
      "value": "0x0"
    },
    "2540": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10953
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2541": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10953
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2542": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10953
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2543": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10944
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x2"
    },
    "2545": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10953
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "2547": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10953
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2548": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10953
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "2550": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10953
      ],
      "op": "DUP1",
      "path": "100"
    },
    "2551": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10953
      ],
      "op": "DUP3",
      "path": "100"
    },
    "2552": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10953
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "2553": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10958
      ],
      "op": "DUP1",
      "path": "100"
    },
    "2554": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10958
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "2555": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2557": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2559": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2561": {
      "op": "SHL"
    },
    "2562": {
      "op": "SUB"
    },
    "2563": {
      "op": "NOT"
    },
    "2564": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10958
      ],
      "op": "AND",
      "path": "100"
    },
    "2565": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2567": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2569": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2571": {
      "op": "SHL"
    },
    "2572": {
      "op": "SUB"
    },
    "2573": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10958
      ],
      "op": "DUP7",
      "path": "100"
    },
    "2574": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10958
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2575": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10958
      ],
      "op": "AND",
      "path": "100"
    },
    "2576": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10958
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "2577": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10958
      ],
      "op": "DUP3",
      "path": "100"
    },
    "2578": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10958
      ],
      "op": "OR",
      "path": "100"
    },
    "2579": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10958
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2580": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10958
      ],
      "op": "SWAP3",
      "path": "100"
    },
    "2581": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10958
      ],
      "op": "SSTORE",
      "path": "100"
    },
    "2582": {
      "fn": "ERC721._transfer",
      "offset": [
        10974,
        11001
      ],
      "op": "SWAP2",
      "path": "100",
      "statement": 34
    },
    "2583": {
      "fn": "ERC721._transfer",
      "offset": [
        10974,
        11001
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "2584": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10953
      ],
      "op": "DUP5",
      "path": "100"
    },
    "2585": {
      "fn": "ERC721._transfer",
      "offset": [
        10937,
        10953
      ],
      "op": "SWAP4",
      "path": "100"
    },
    "2586": {
      "fn": "ERC721._transfer",
      "offset": [
        10974,
        11001
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "2587": {
      "fn": "ERC721._transfer",
      "offset": [
        10974,
        11001
      ],
      "op": "DUP8",
      "path": "100"
    },
    "2588": {
      "fn": "ERC721._transfer",
      "offset": [
        10974,
        11001
      ],
      "op": "AND",
      "path": "100"
    },
    "2589": {
      "fn": "ERC721._transfer",
      "offset": [
        10974,
        11001
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "2590": {
      "fn": "ERC721._transfer",
      "offset": [
        10974,
        11001
      ],
      "op": "PUSH32",
      "path": "100",
      "value": "0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF"
    },
    "2623": {
      "fn": "ERC721._transfer",
      "offset": [
        10974,
        11001
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "2624": {
      "fn": "ERC721._transfer",
      "offset": [
        10974,
        11001
      ],
      "op": "LOG4",
      "path": "100"
    },
    "2625": {
      "fn": "ERC721.approve",
      "offset": [
        3607,
        3938
      ],
      "op": "POP",
      "path": "100"
    },
    "2626": {
      "fn": "ERC721.approve",
      "offset": [
        3537,
        3938
      ],
      "op": "POP",
      "path": "100"
    },
    "2627": {
      "fn": "ERC721.approve",
      "offset": [
        3537,
        3938
      ],
      "op": "POP",
      "path": "100"
    },
    "2628": {
      "fn": "ERC721.approve",
      "jump": "o",
      "offset": [
        3537,
        3938
      ],
      "op": "JUMP",
      "path": "100"
    },
    "2629": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11474,
        11781
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2630": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11624,
        11632
      ],
      "op": "DUP2",
      "path": "100",
      "statement": 35
    },
    "2631": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2633": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2635": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2637": {
      "op": "SHL"
    },
    "2638": {
      "op": "SUB"
    },
    "2639": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11615,
        11632
      ],
      "op": "AND",
      "path": "100"
    },
    "2640": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11615,
        11620
      ],
      "op": "DUP4",
      "path": "100"
    },
    "2641": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2643": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2645": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2647": {
      "op": "SHL"
    },
    "2648": {
      "op": "SUB"
    },
    "2649": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11615,
        11632
      ],
      "op": "AND",
      "path": "100"
    },
    "2650": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11615,
        11632
      ],
      "op": "EQ",
      "path": "100"
    },
    "2651": {
      "branch": 60,
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11615,
        11632
      ],
      "op": "ISZERO",
      "path": "100"
    },
    "2652": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11607,
        11662
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xAA7"
    },
    "2655": {
      "branch": 60,
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11607,
        11662
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "2656": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11607,
        11662
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "2658": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11607,
        11662
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "2659": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2663": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2665": {
      "op": "SHL"
    },
    "2666": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11607,
        11662
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2667": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11607,
        11662
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2668": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2670": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11607,
        11662
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "2672": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11607,
        11662
      ],
      "op": "DUP3",
      "path": "100"
    },
    "2673": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11607,
        11662
      ],
      "op": "ADD",
      "path": "100"
    },
    "2674": {
      "op": "MSTORE"
    },
    "2675": {
      "op": "PUSH1",
      "value": "0x19"
    },
    "2677": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "2679": {
      "op": "DUP3"
    },
    "2680": {
      "op": "ADD"
    },
    "2681": {
      "op": "MSTORE"
    },
    "2682": {
      "op": "PUSH32",
      "value": "0x4552433732313A20617070726F766520746F2063616C6C657200000000000000"
    },
    "2715": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "2717": {
      "op": "DUP3"
    },
    "2718": {
      "op": "ADD"
    },
    "2719": {
      "op": "MSTORE"
    },
    "2720": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "2722": {
      "op": "ADD"
    },
    "2723": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11607,
        11662
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x381"
    },
    "2726": {
      "op": "JUMP"
    },
    "2727": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11607,
        11662
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2728": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2730": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2732": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2734": {
      "op": "SHL"
    },
    "2735": {
      "op": "SUB"
    },
    "2736": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11697
      ],
      "op": "DUP4",
      "path": "100",
      "statement": 36
    },
    "2737": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11697
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2738": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11697
      ],
      "op": "AND",
      "path": "100"
    },
    "2739": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11697
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "2741": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11697
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2742": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11697
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2743": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11697
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2744": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11690
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x5"
    },
    "2746": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11697
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "2748": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11697
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2749": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11697
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2750": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11697
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2751": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11697
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "2753": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11697
      ],
      "op": "DUP1",
      "path": "100"
    },
    "2754": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11697
      ],
      "op": "DUP4",
      "path": "100"
    },
    "2755": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11697
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "2756": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11707
      ],
      "op": "SWAP5",
      "path": "100"
    },
    "2757": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11707
      ],
      "op": "DUP8",
      "path": "100"
    },
    "2758": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11707
      ],
      "op": "AND",
      "path": "100"
    },
    "2759": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11707
      ],
      "op": "DUP1",
      "path": "100"
    },
    "2760": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11707
      ],
      "op": "DUP5",
      "path": "100"
    },
    "2761": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11707
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2762": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11707
      ],
      "op": "SWAP5",
      "path": "100"
    },
    "2763": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11707
      ],
      "op": "DUP3",
      "path": "100"
    },
    "2764": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11707
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2765": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11707
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "2766": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11707
      ],
      "op": "DUP3",
      "path": "100"
    },
    "2767": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11707
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2768": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11707
      ],
      "op": "KECCAK256",
      "path": "100"
    },
    "2769": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11718
      ],
      "op": "DUP1",
      "path": "100"
    },
    "2770": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11718
      ],
      "op": "SLOAD",
      "path": "100"
    },
    "2771": {
      "op": "PUSH1",
      "value": "0xFF"
    },
    "2773": {
      "op": "NOT"
    },
    "2774": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11718
      ],
      "op": "AND",
      "path": "100"
    },
    "2775": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11718
      ],
      "op": "DUP7",
      "path": "100"
    },
    "2776": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11718
      ],
      "op": "ISZERO",
      "path": "100"
    },
    "2777": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11718
      ],
      "op": "ISZERO",
      "path": "100"
    },
    "2778": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11718
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2779": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11718
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2780": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11718
      ],
      "op": "OR",
      "path": "100"
    },
    "2781": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11718
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2782": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11718
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "2783": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11672,
        11718
      ],
      "op": "SSTORE",
      "path": "100"
    },
    "2784": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11733,
        11774
      ],
      "op": "SWAP2",
      "path": "100",
      "statement": 37
    },
    "2785": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11733,
        11774
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "2786": {
      "op": "SWAP2"
    },
    "2787": {
      "op": "DUP3"
    },
    "2788": {
      "op": "MSTORE"
    },
    "2789": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11733,
        11774
      ],
      "op": "PUSH32",
      "path": "100",
      "value": "0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31"
    },
    "2822": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11733,
        11774
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "2823": {
      "op": "ADD"
    },
    "2824": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11733,
        11774
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "2826": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11733,
        11774
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "2827": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11733,
        11774
      ],
      "op": "DUP1",
      "path": "100"
    },
    "2828": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11733,
        11774
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "2829": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11733,
        11774
      ],
      "op": "SUB",
      "path": "100"
    },
    "2830": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11733,
        11774
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2831": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11733,
        11774
      ],
      "op": "LOG3",
      "path": "100"
    },
    "2832": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11474,
        11781
      ],
      "op": "POP",
      "path": "100"
    },
    "2833": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11474,
        11781
      ],
      "op": "POP",
      "path": "100"
    },
    "2834": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11474,
        11781
      ],
      "op": "POP",
      "path": "100"
    },
    "2835": {
      "fn": "ERC721._setApprovalForAll",
      "jump": "o",
      "offset": [
        11474,
        11781
      ],
      "op": "JUMP",
      "path": "100"
    },
    "2836": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6549,
        6856
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2837": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6700,
        6728
      ],
      "op": "PUSH2",
      "path": "100",
      "statement": 38,
      "value": "0xB1F"
    },
    "2840": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6710,
        6714
      ],
      "op": "DUP5",
      "path": "100"
    },
    "2841": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6716,
        6718
      ],
      "op": "DUP5",
      "path": "100"
    },
    "2842": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6720,
        6727
      ],
      "op": "DUP5",
      "path": "100"
    },
    "2843": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6700,
        6709
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x8A9"
    },
    "2846": {
      "fn": "ERC721._safeTransfer",
      "jump": "i",
      "offset": [
        6700,
        6728
      ],
      "op": "JUMP",
      "path": "100"
    },
    "2847": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6700,
        6728
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2848": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6746,
        6794
      ],
      "op": "PUSH2",
      "path": "100",
      "statement": 39,
      "value": "0xB2B"
    },
    "2851": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6769,
        6773
      ],
      "op": "DUP5",
      "path": "100"
    },
    "2852": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6775,
        6777
      ],
      "op": "DUP5",
      "path": "100"
    },
    "2853": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6779,
        6786
      ],
      "op": "DUP5",
      "path": "100"
    },
    "2854": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6788,
        6793
      ],
      "op": "DUP5",
      "path": "100"
    },
    "2855": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6746,
        6768
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xC45"
    },
    "2858": {
      "fn": "ERC721._safeTransfer",
      "jump": "i",
      "offset": [
        6746,
        6794
      ],
      "op": "JUMP",
      "path": "100"
    },
    "2859": {
      "branch": 61,
      "fn": "ERC721._safeTransfer",
      "offset": [
        6746,
        6794
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "2860": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6738,
        6849
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x656"
    },
    "2863": {
      "branch": 61,
      "fn": "ERC721._safeTransfer",
      "offset": [
        6738,
        6849
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "2864": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6738,
        6849
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "2866": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6738,
        6849
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "2867": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2871": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2873": {
      "op": "SHL"
    },
    "2874": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6738,
        6849
      ],
      "op": "DUP2",
      "path": "100"
    },
    "2875": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6738,
        6849
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "2876": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6738,
        6849
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "2878": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6738,
        6849
      ],
      "op": "ADD",
      "path": "100"
    },
    "2879": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6738,
        6849
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x381"
    },
    "2882": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6738,
        6849
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "2883": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6738,
        6849
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x1038"
    },
    "2886": {
      "fn": "ERC721._safeTransfer",
      "jump": "i",
      "offset": [
        6738,
        6849
      ],
      "op": "JUMP",
      "path": "100"
    },
    "2887": {
      "fn": "Strings.toString",
      "offset": [
        328,
        1031
      ],
      "op": "JUMPDEST",
      "path": "107"
    },
    "2888": {
      "fn": "Strings.toString",
      "offset": [
        384,
        397
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0x60"
    },
    "2890": {
      "branch": 62,
      "fn": "Strings.toString",
      "offset": [
        601,
        611
      ],
      "op": "DUP2",
      "path": "107"
    },
    "2891": {
      "fn": "Strings.toString",
      "offset": [
        597,
        648
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0xB6B"
    },
    "2894": {
      "branch": 62,
      "fn": "Strings.toString",
      "offset": [
        597,
        648
      ],
      "op": "JUMPI",
      "path": "107"
    },
    "2895": {
      "op": "POP"
    },
    "2896": {
      "op": "POP"
    },
    "2897": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "PUSH1",
      "path": "107",
      "statement": 40,
      "value": "0x40"
    },
    "2899": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "DUP1",
      "path": "107"
    },
    "2900": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "MLOAD",
      "path": "107"
    },
    "2901": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "DUP1",
      "path": "107"
    },
    "2902": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "DUP3",
      "path": "107"
    },
    "2903": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "ADD",
      "path": "107"
    },
    "2904": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "SWAP1",
      "path": "107"
    },
    "2905": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "SWAP2",
      "path": "107"
    },
    "2906": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "MSTORE",
      "path": "107"
    },
    "2907": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0x1"
    },
    "2909": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "DUP2",
      "path": "107"
    },
    "2910": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "MSTORE",
      "path": "107"
    },
    "2911": {
      "op": "PUSH1",
      "value": "0x3"
    },
    "2913": {
      "op": "PUSH1",
      "value": "0xFC"
    },
    "2915": {
      "op": "SHL"
    },
    "2916": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0x20"
    },
    "2918": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "DUP3",
      "path": "107"
    },
    "2919": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "ADD",
      "path": "107"
    },
    "2920": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "MSTORE",
      "path": "107"
    },
    "2921": {
      "fn": "Strings.toString",
      "offset": [
        627,
        637
      ],
      "op": "SWAP1",
      "path": "107"
    },
    "2922": {
      "fn": "Strings.toString",
      "jump": "o",
      "offset": [
        328,
        1031
      ],
      "op": "JUMP",
      "path": "107"
    },
    "2923": {
      "fn": "Strings.toString",
      "offset": [
        597,
        648
      ],
      "op": "JUMPDEST",
      "path": "107"
    },
    "2924": {
      "fn": "Strings.toString",
      "offset": [
        672,
        677
      ],
      "op": "DUP2",
      "path": "107"
    },
    "2925": {
      "fn": "Strings.toString",
      "offset": [
        657,
        669
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0x0"
    },
    "2927": {
      "fn": "Strings.toString",
      "offset": [
        711,
        786
      ],
      "op": "JUMPDEST",
      "path": "107"
    },
    "2928": {
      "fn": "Strings.toString",
      "offset": [
        718,
        727
      ],
      "op": "DUP2",
      "path": "107"
    },
    "2929": {
      "fn": "Strings.toString",
      "offset": [
        718,
        727
      ],
      "op": "ISZERO",
      "path": "107"
    },
    "2930": {
      "fn": "Strings.toString",
      "offset": [
        711,
        786
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0xB95"
    },
    "2933": {
      "fn": "Strings.toString",
      "offset": [
        711,
        786
      ],
      "op": "JUMPI",
      "path": "107"
    },
    "2934": {
      "fn": "Strings.toString",
      "offset": [
        743,
        751
      ],
      "op": "DUP1",
      "path": "107",
      "statement": 41
    },
    "2935": {
      "fn": "Strings.toString",
      "offset": [
        743,
        751
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0xB7F"
    },
    "2938": {
      "fn": "Strings.toString",
      "offset": [
        743,
        751
      ],
      "op": "DUP2",
      "path": "107"
    },
    "2939": {
      "fn": "Strings.toString",
      "offset": [
        743,
        751
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0x1185"
    },
    "2942": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        743,
        751
      ],
      "op": "JUMP",
      "path": "107"
    },
    "2943": {
      "fn": "Strings.toString",
      "offset": [
        743,
        751
      ],
      "op": "JUMPDEST",
      "path": "107"
    },
    "2944": {
      "fn": "Strings.toString",
      "offset": [
        743,
        751
      ],
      "op": "SWAP2",
      "path": "107"
    },
    "2945": {
      "op": "POP"
    },
    "2946": {
      "fn": "Strings.toString",
      "offset": [
        765,
        775
      ],
      "op": "PUSH2",
      "path": "107",
      "statement": 42,
      "value": "0xB8E"
    },
    "2949": {
      "fn": "Strings.toString",
      "offset": [
        765,
        775
      ],
      "op": "SWAP1",
      "path": "107"
    },
    "2950": {
      "op": "POP"
    },
    "2951": {
      "fn": "Strings.toString",
      "offset": [
        773,
        775
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0xA"
    },
    "2953": {
      "fn": "Strings.toString",
      "offset": [
        765,
        775
      ],
      "op": "DUP4",
      "path": "107"
    },
    "2954": {
      "fn": "Strings.toString",
      "offset": [
        765,
        775
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0x10F3"
    },
    "2957": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        765,
        775
      ],
      "op": "JUMP",
      "path": "107"
    },
    "2958": {
      "fn": "Strings.toString",
      "offset": [
        765,
        775
      ],
      "op": "JUMPDEST",
      "path": "107"
    },
    "2959": {
      "fn": "Strings.toString",
      "offset": [
        765,
        775
      ],
      "op": "SWAP2",
      "path": "107"
    },
    "2960": {
      "fn": "Strings.toString",
      "offset": [
        765,
        775
      ],
      "op": "POP",
      "path": "107"
    },
    "2961": {
      "fn": "Strings.toString",
      "offset": [
        711,
        786
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0xB6F"
    },
    "2964": {
      "fn": "Strings.toString",
      "offset": [
        711,
        786
      ],
      "op": "JUMP",
      "path": "107"
    },
    "2965": {
      "fn": "Strings.toString",
      "offset": [
        711,
        786
      ],
      "op": "JUMPDEST",
      "path": "107"
    },
    "2966": {
      "fn": "Strings.toString",
      "offset": [
        795,
        814
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0x0"
    },
    "2968": {
      "fn": "Strings.toString",
      "offset": [
        827,
        833
      ],
      "op": "DUP2",
      "path": "107"
    },
    "2969": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "PUSH8",
      "path": "107",
      "value": "0xFFFFFFFFFFFFFFFF"
    },
    "2978": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "DUP2",
      "path": "107"
    },
    "2979": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "GT",
      "path": "107"
    },
    "2980": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "ISZERO",
      "path": "107"
    },
    "2981": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0xBB0"
    },
    "2984": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "JUMPI",
      "path": "107"
    },
    "2985": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0xBB0"
    },
    "2988": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0x11F6"
    },
    "2991": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        817,
        834
      ],
      "op": "JUMP",
      "path": "107"
    },
    "2992": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "JUMPDEST",
      "path": "107"
    },
    "2993": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0x40"
    },
    "2995": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "MLOAD",
      "path": "107"
    },
    "2996": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "SWAP1",
      "path": "107"
    },
    "2997": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "DUP1",
      "path": "107"
    },
    "2998": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "DUP3",
      "path": "107"
    },
    "2999": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "MSTORE",
      "path": "107"
    },
    "3000": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "DUP1",
      "path": "107"
    },
    "3001": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0x1F"
    },
    "3003": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "ADD",
      "path": "107"
    },
    "3004": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0x1F"
    },
    "3006": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "NOT",
      "path": "107"
    },
    "3007": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "AND",
      "path": "107"
    },
    "3008": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0x20"
    },
    "3010": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "ADD",
      "path": "107"
    },
    "3011": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "DUP3",
      "path": "107"
    },
    "3012": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "ADD",
      "path": "107"
    },
    "3013": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0x40"
    },
    "3015": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "MSTORE",
      "path": "107"
    },
    "3016": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "DUP1",
      "path": "107"
    },
    "3017": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "ISZERO",
      "path": "107"
    },
    "3018": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0xBDA"
    },
    "3021": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "JUMPI",
      "path": "107"
    },
    "3022": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0x20"
    },
    "3024": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "DUP3",
      "path": "107"
    },
    "3025": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "ADD",
      "path": "107"
    },
    "3026": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "DUP2",
      "path": "107"
    },
    "3027": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "DUP1",
      "path": "107"
    },
    "3028": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "CALLDATASIZE",
      "path": "107"
    },
    "3029": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "DUP4",
      "path": "107"
    },
    "3030": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "CALLDATACOPY",
      "path": "107"
    },
    "3031": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "ADD",
      "path": "107"
    },
    "3032": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "SWAP1",
      "path": "107"
    },
    "3033": {
      "op": "POP"
    },
    "3034": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "JUMPDEST",
      "path": "107"
    },
    "3035": {
      "fn": "Strings.toString",
      "offset": [
        817,
        834
      ],
      "op": "POP",
      "path": "107"
    },
    "3036": {
      "fn": "Strings.toString",
      "offset": [
        795,
        834
      ],
      "op": "SWAP1",
      "path": "107"
    },
    "3037": {
      "fn": "Strings.toString",
      "offset": [
        795,
        834
      ],
      "op": "POP",
      "path": "107"
    },
    "3038": {
      "fn": "Strings.toString",
      "offset": [
        844,
        994
      ],
      "op": "JUMPDEST",
      "path": "107"
    },
    "3039": {
      "fn": "Strings.toString",
      "offset": [
        851,
        861
      ],
      "op": "DUP5",
      "path": "107"
    },
    "3040": {
      "fn": "Strings.toString",
      "offset": [
        851,
        861
      ],
      "op": "ISZERO",
      "path": "107"
    },
    "3041": {
      "fn": "Strings.toString",
      "offset": [
        844,
        994
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0x8A1"
    },
    "3044": {
      "fn": "Strings.toString",
      "offset": [
        844,
        994
      ],
      "op": "JUMPI",
      "path": "107"
    },
    "3045": {
      "fn": "Strings.toString",
      "offset": [
        877,
        888
      ],
      "op": "PUSH2",
      "path": "107",
      "statement": 43,
      "value": "0xBEF"
    },
    "3048": {
      "fn": "Strings.toString",
      "offset": [
        887,
        888
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0x1"
    },
    "3050": {
      "fn": "Strings.toString",
      "offset": [
        877,
        888
      ],
      "op": "DUP4",
      "path": "107"
    },
    "3051": {
      "fn": "Strings.toString",
      "offset": [
        877,
        888
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0x1107"
    },
    "3054": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        877,
        888
      ],
      "op": "JUMP",
      "path": "107"
    },
    "3055": {
      "fn": "Strings.toString",
      "offset": [
        877,
        888
      ],
      "op": "JUMPDEST",
      "path": "107"
    },
    "3056": {
      "fn": "Strings.toString",
      "offset": [
        877,
        888
      ],
      "op": "SWAP2",
      "path": "107"
    },
    "3057": {
      "op": "POP"
    },
    "3058": {
      "fn": "Strings.toString",
      "offset": [
        945,
        955
      ],
      "op": "PUSH2",
      "path": "107",
      "statement": 44,
      "value": "0xBFC"
    },
    "3061": {
      "fn": "Strings.toString",
      "offset": [
        953,
        955
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0xA"
    },
    "3063": {
      "fn": "Strings.toString",
      "offset": [
        945,
        950
      ],
      "op": "DUP7",
      "path": "107"
    },
    "3064": {
      "fn": "Strings.toString",
      "offset": [
        945,
        955
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0x11A0"
    },
    "3067": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        945,
        955
      ],
      "op": "JUMP",
      "path": "107"
    },
    "3068": {
      "fn": "Strings.toString",
      "offset": [
        945,
        955
      ],
      "op": "JUMPDEST",
      "path": "107"
    },
    "3069": {
      "fn": "Strings.toString",
      "offset": [
        932,
        956
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0xC07"
    },
    "3072": {
      "fn": "Strings.toString",
      "offset": [
        932,
        956
      ],
      "op": "SWAP1",
      "path": "107"
    },
    "3073": {
      "fn": "Strings.toString",
      "offset": [
        932,
        934
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0x30"
    },
    "3075": {
      "fn": "Strings.toString",
      "offset": [
        932,
        956
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0x10DB"
    },
    "3078": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        932,
        956
      ],
      "op": "JUMP",
      "path": "107"
    },
    "3079": {
      "fn": "Strings.toString",
      "offset": [
        932,
        956
      ],
      "op": "JUMPDEST",
      "path": "107"
    },
    "3080": {
      "fn": "Strings.toString",
      "offset": [
        919,
        958
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0xF8"
    },
    "3082": {
      "fn": "Strings.toString",
      "offset": [
        919,
        958
      ],
      "op": "SHL",
      "path": "107"
    },
    "3083": {
      "fn": "Strings.toString",
      "offset": [
        902,
        908
      ],
      "op": "DUP2",
      "path": "107"
    },
    "3084": {
      "fn": "Strings.toString",
      "offset": [
        909,
        915
      ],
      "op": "DUP4",
      "path": "107"
    },
    "3085": {
      "fn": "Strings.toString",
      "offset": [
        902,
        916
      ],
      "op": "DUP2",
      "path": "107"
    },
    "3086": {
      "fn": "Strings.toString",
      "offset": [
        902,
        916
      ],
      "op": "MLOAD",
      "path": "107"
    },
    "3087": {
      "fn": "Strings.toString",
      "offset": [
        902,
        916
      ],
      "op": "DUP2",
      "path": "107"
    },
    "3088": {
      "fn": "Strings.toString",
      "offset": [
        902,
        916
      ],
      "op": "LT",
      "path": "107"
    },
    "3089": {
      "fn": "Strings.toString",
      "offset": [
        902,
        916
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0xC1C"
    },
    "3092": {
      "fn": "Strings.toString",
      "offset": [
        902,
        916
      ],
      "op": "JUMPI",
      "path": "107"
    },
    "3093": {
      "fn": "Strings.toString",
      "offset": [
        902,
        916
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0xC1C"
    },
    "3096": {
      "fn": "Strings.toString",
      "offset": [
        902,
        916
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0x11E0"
    },
    "3099": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        902,
        916
      ],
      "op": "JUMP",
      "path": "107"
    },
    "3100": {
      "fn": "Strings.toString",
      "offset": [
        902,
        916
      ],
      "op": "JUMPDEST",
      "path": "107"
    },
    "3101": {
      "fn": "Strings.toString",
      "offset": [
        902,
        916
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0x20"
    },
    "3103": {
      "fn": "Strings.toString",
      "offset": [
        902,
        916
      ],
      "op": "ADD",
      "path": "107"
    },
    "3104": {
      "fn": "Strings.toString",
      "offset": [
        902,
        916
      ],
      "op": "ADD",
      "path": "107"
    },
    "3105": {
      "fn": "Strings.toString",
      "offset": [
        902,
        958
      ],
      "op": "SWAP1",
      "path": "107"
    },
    "3106": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3108": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3110": {
      "op": "PUSH1",
      "value": "0xF8"
    },
    "3112": {
      "op": "SHL"
    },
    "3113": {
      "op": "SUB"
    },
    "3114": {
      "fn": "Strings.toString",
      "offset": [
        902,
        958
      ],
      "op": "NOT",
      "path": "107"
    },
    "3115": {
      "fn": "Strings.toString",
      "offset": [
        902,
        958
      ],
      "op": "AND",
      "path": "107"
    },
    "3116": {
      "fn": "Strings.toString",
      "offset": [
        902,
        958
      ],
      "op": "SWAP1",
      "path": "107"
    },
    "3117": {
      "fn": "Strings.toString",
      "offset": [
        902,
        958
      ],
      "op": "DUP2",
      "path": "107"
    },
    "3118": {
      "fn": "Strings.toString",
      "offset": [
        902,
        958
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0x0"
    },
    "3120": {
      "fn": "Strings.toString",
      "offset": [
        902,
        958
      ],
      "op": "BYTE",
      "path": "107"
    },
    "3121": {
      "fn": "Strings.toString",
      "offset": [
        902,
        958
      ],
      "op": "SWAP1",
      "path": "107"
    },
    "3122": {
      "fn": "Strings.toString",
      "offset": [
        902,
        958
      ],
      "op": "MSTORE8",
      "path": "107"
    },
    "3123": {
      "op": "POP"
    },
    "3124": {
      "fn": "Strings.toString",
      "offset": [
        972,
        983
      ],
      "op": "PUSH2",
      "path": "107",
      "statement": 45,
      "value": "0xC3E"
    },
    "3127": {
      "fn": "Strings.toString",
      "offset": [
        981,
        983
      ],
      "op": "PUSH1",
      "path": "107",
      "value": "0xA"
    },
    "3129": {
      "fn": "Strings.toString",
      "offset": [
        972,
        983
      ],
      "op": "DUP7",
      "path": "107"
    },
    "3130": {
      "fn": "Strings.toString",
      "offset": [
        972,
        983
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0x10F3"
    },
    "3133": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        972,
        983
      ],
      "op": "JUMP",
      "path": "107"
    },
    "3134": {
      "fn": "Strings.toString",
      "offset": [
        972,
        983
      ],
      "op": "JUMPDEST",
      "path": "107"
    },
    "3135": {
      "fn": "Strings.toString",
      "offset": [
        972,
        983
      ],
      "op": "SWAP5",
      "path": "107"
    },
    "3136": {
      "fn": "Strings.toString",
      "offset": [
        972,
        983
      ],
      "op": "POP",
      "path": "107"
    },
    "3137": {
      "fn": "Strings.toString",
      "offset": [
        844,
        994
      ],
      "op": "PUSH2",
      "path": "107",
      "value": "0xBDE"
    },
    "3140": {
      "fn": "Strings.toString",
      "offset": [
        844,
        994
      ],
      "op": "JUMP",
      "path": "107"
    },
    "3141": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12334,
        13112
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "3142": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12484,
        12488
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "3144": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3146": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3148": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3150": {
      "op": "SHL"
    },
    "3151": {
      "op": "SUB"
    },
    "3152": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12504,
        12517
      ],
      "op": "DUP5",
      "path": "100"
    },
    "3153": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12504,
        12517
      ],
      "op": "AND",
      "path": "100"
    },
    "3154": {
      "fn": "Address.isContract",
      "offset": [
        1465,
        1484
      ],
      "op": "EXTCODESIZE",
      "path": "104",
      "statement": 46
    },
    "3155": {
      "fn": "Address.isContract",
      "offset": [
        1465,
        1488
      ],
      "op": "ISZERO",
      "path": "104"
    },
    "3156": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12500,
        13106
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xD47"
    },
    "3159": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12500,
        13106
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "3160": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "3162": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "3163": {
      "op": "PUSH4",
      "value": "0xA85BD01"
    },
    "3168": {
      "op": "PUSH1",
      "value": "0xE1"
    },
    "3170": {
      "op": "SHL"
    },
    "3171": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "DUP2",
      "path": "100"
    },
    "3172": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "3173": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3175": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3177": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3179": {
      "op": "SHL"
    },
    "3180": {
      "op": "SUB"
    },
    "3181": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12575
      ],
      "op": "DUP6",
      "path": "100"
    },
    "3182": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12575
      ],
      "op": "AND",
      "path": "100"
    },
    "3183": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12575
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "3184": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12575
      ],
      "op": "PUSH4",
      "path": "100",
      "value": "0x150B7A02"
    },
    "3189": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12575
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "3190": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xC89"
    },
    "3193": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "3194": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "105"
    },
    "3195": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "SWAP1",
      "path": "105"
    },
    "3196": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12590,
        12594
      ],
      "op": "DUP10",
      "path": "100"
    },
    "3197": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12590,
        12594
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "3198": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12596,
        12603
      ],
      "op": "DUP9",
      "path": "100"
    },
    "3199": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12596,
        12603
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "3200": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12605,
        12610
      ],
      "op": "DUP9",
      "path": "100"
    },
    "3201": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12605,
        12610
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "3202": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "3204": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "ADD",
      "path": "100"
    },
    "3205": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xFE8"
    },
    "3208": {
      "fn": "ERC721._checkOnERC721Received",
      "jump": "i",
      "offset": [
        12539,
        12611
      ],
      "op": "JUMP",
      "path": "100"
    },
    "3209": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "3210": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "3212": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "3214": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "3215": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "DUP1",
      "path": "100"
    },
    "3216": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "DUP4",
      "path": "100"
    },
    "3217": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "SUB",
      "path": "100"
    },
    "3218": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "DUP2",
      "path": "100"
    },
    "3219": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "3221": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "DUP8",
      "path": "100"
    },
    "3222": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "DUP1",
      "path": "100"
    },
    "3223": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "EXTCODESIZE",
      "path": "100"
    },
    "3224": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "ISZERO",
      "path": "100"
    },
    "3225": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "DUP1",
      "path": "100"
    },
    "3226": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "ISZERO",
      "path": "100"
    },
    "3227": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xCA3"
    },
    "3230": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "3231": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "3233": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "DUP1",
      "path": "100"
    },
    "3234": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "REVERT",
      "path": "100"
    },
    "3235": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "3236": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "POP",
      "path": "100"
    },
    "3237": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "GAS",
      "path": "100"
    },
    "3238": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "CALL",
      "path": "100"
    },
    "3239": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "SWAP3",
      "path": "100"
    },
    "3240": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "POP",
      "path": "100"
    },
    "3241": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "POP",
      "path": "100"
    },
    "3242": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "POP",
      "path": "100"
    },
    "3243": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "DUP1",
      "path": "100"
    },
    "3244": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "ISZERO",
      "path": "100"
    },
    "3245": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xCD3"
    },
    "3248": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "3249": {
      "op": "POP"
    },
    "3250": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "3252": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "DUP1",
      "path": "100"
    },
    "3253": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "3254": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x1F"
    },
    "3256": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "RETURNDATASIZE",
      "path": "100"
    },
    "3257": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "3258": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "DUP2",
      "path": "100"
    },
    "3259": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "ADD",
      "path": "100"
    },
    "3260": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3262": {
      "op": "NOT"
    },
    "3263": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "AND",
      "path": "100"
    },
    "3264": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "DUP3",
      "path": "100"
    },
    "3265": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "ADD",
      "path": "100"
    },
    "3266": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "3267": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "SWAP3",
      "path": "100"
    },
    "3268": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "3269": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xCD0"
    },
    "3272": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "3273": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "DUP2",
      "path": "100"
    },
    "3274": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "ADD",
      "path": "100"
    },
    "3275": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "3276": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xF57"
    },
    "3279": {
      "fn": "ERC721._checkOnERC721Received",
      "jump": "i",
      "offset": [
        12539,
        12611
      ],
      "op": "JUMP",
      "path": "100"
    },
    "3280": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "3281": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x1"
    },
    "3283": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12539,
        12611
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "3284": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xD2D"
    },
    "3287": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "3288": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "RETURNDATASIZE",
      "path": "100"
    },
    "3289": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "DUP1",
      "path": "100"
    },
    "3290": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "DUP1",
      "path": "100"
    },
    "3291": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "ISZERO",
      "path": "100"
    },
    "3292": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xD01"
    },
    "3295": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "3296": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "3298": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "3299": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "3300": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "POP",
      "path": "100"
    },
    "3301": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x1F"
    },
    "3303": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "NOT",
      "path": "100"
    },
    "3304": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x3F"
    },
    "3306": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "RETURNDATASIZE",
      "path": "100"
    },
    "3307": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "ADD",
      "path": "100"
    },
    "3308": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "AND",
      "path": "100"
    },
    "3309": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "DUP3",
      "path": "100"
    },
    "3310": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "ADD",
      "path": "100"
    },
    "3311": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x40"
    },
    "3313": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "3314": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "RETURNDATASIZE",
      "path": "100"
    },
    "3315": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "DUP3",
      "path": "100"
    },
    "3316": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "3317": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "RETURNDATASIZE",
      "path": "100"
    },
    "3318": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x0"
    },
    "3320": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "3322": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "DUP5",
      "path": "100"
    },
    "3323": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "ADD",
      "path": "100"
    },
    "3324": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "RETURNDATACOPY",
      "path": "100"
    },
    "3325": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xD06"
    },
    "3328": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "JUMP",
      "path": "100"
    },
    "3329": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "3330": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x60"
    },
    "3332": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "SWAP2",
      "path": "100"
    },
    "3333": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "POP",
      "path": "100"
    },
    "3334": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "3335": {
      "op": "POP"
    },
    "3336": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12778,
        12791
      ],
      "op": "DUP1",
      "path": "100"
    },
    "3337": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12778,
        12791
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "3338": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12774,
        13040
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0xD25"
    },
    "3341": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12774,
        13040
      ],
      "op": "JUMPI",
      "path": "100"
    },
    "3342": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12820,
        12880
      ],
      "op": "PUSH1",
      "path": "100",
      "statement": 47,
      "value": "0x40"
    },
    "3344": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12820,
        12880
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "3345": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "3349": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "3351": {
      "op": "SHL"
    },
    "3352": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12820,
        12880
      ],
      "op": "DUP2",
      "path": "100"
    },
    "3353": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12820,
        12880
      ],
      "op": "MSTORE",
      "path": "100"
    },
    "3354": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12820,
        12880
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x4"
    },
    "3356": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12820,
        12880
      ],
      "op": "ADD",
      "path": "100"
    },
    "3357": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12820,
        12880
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x381"
    },
    "3360": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12820,
        12880
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "3361": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12820,
        12880
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x1038"
    },
    "3364": {
      "fn": "ERC721._checkOnERC721Received",
      "jump": "i",
      "offset": [
        12820,
        12880
      ],
      "op": "JUMP",
      "path": "100"
    },
    "3365": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12774,
        13040
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "3366": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12992,
        12998
      ],
      "op": "DUP1",
      "path": "100"
    },
    "3367": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12986,
        12999
      ],
      "op": "MLOAD",
      "path": "100"
    },
    "3368": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12977,
        12983
      ],
      "op": "DUP2",
      "path": "100"
    },
    "3369": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12973,
        12975
      ],
      "op": "PUSH1",
      "path": "100",
      "value": "0x20"
    },
    "3371": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12969,
        12984
      ],
      "op": "ADD",
      "path": "100"
    },
    "3372": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12962,
        13000
      ],
      "op": "REVERT",
      "path": "100"
    },
    "3373": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12535,
        13054
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "3374": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3376": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3378": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "3380": {
      "op": "SHL"
    },
    "3381": {
      "op": "SUB"
    },
    "3382": {
      "op": "NOT"
    },
    "3383": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12661,
        12712
      ],
      "op": "AND",
      "path": "100",
      "statement": 48
    },
    "3384": {
      "op": "PUSH4",
      "value": "0xA85BD01"
    },
    "3389": {
      "op": "PUSH1",
      "value": "0xE1"
    },
    "3391": {
      "op": "SHL"
    },
    "3392": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12661,
        12712
      ],
      "op": "EQ",
      "path": "100"
    },
    "3393": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12661,
        12712
      ],
      "op": "SWAP1",
      "path": "100"
    },
    "3394": {
      "op": "POP"
    },
    "3395": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12654,
        12712
      ],
      "op": "PUSH2",
      "path": "100",
      "value": "0x8A1"
    },
    "3398": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12654,
        12712
      ],
      "op": "JUMP",
      "path": "100"
    },
    "3399": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12500,
        13106
      ],
      "op": "JUMPDEST",
      "path": "100"
    },
    "3400": {
      "op": "POP"
    },
    "3401": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        13091,
        13095
      ],
      "op": "PUSH1",
      "path": "100",
      "statement": 49,
      "value": "0x1"
    },
    "3403": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12334,
        13112
      ],
      "op": "SWAP5",
      "path": "100"
    },
    "3404": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12334,
        13112
      ],
      "op": "SWAP4",
      "path": "100"
    },
    "3405": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12334,
        13112
      ],
      "op": "POP",
      "path": "100"
    },
    "3406": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12334,
        13112
      ],
      "op": "POP",
      "path": "100"
    },
    "3407": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12334,
        13112
      ],
      "op": "POP",
      "path": "100"
    },
    "3408": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12334,
        13112
      ],
      "op": "POP",
      "path": "100"
    },
    "3409": {
      "fn": "ERC721._checkOnERC721Received",
      "jump": "o",
      "offset": [
        12334,
        13112
      ],
      "op": "JUMP",
      "path": "100"
    },
    "3410": {
      "op": "JUMPDEST"
    },
    "3411": {
      "op": "DUP1"
    },
    "3412": {
      "op": "CALLDATALOAD"
    },
    "3413": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3415": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3417": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3419": {
      "op": "SHL"
    },
    "3420": {
      "op": "SUB"
    },
    "3421": {
      "op": "DUP2"
    },
    "3422": {
      "op": "AND"
    },
    "3423": {
      "op": "DUP2"
    },
    "3424": {
      "op": "EQ"
    },
    "3425": {
      "op": "PUSH2",
      "value": "0xD69"
    },
    "3428": {
      "op": "JUMPI"
    },
    "3429": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3431": {
      "op": "DUP1"
    },
    "3432": {
      "op": "REVERT"
    },
    "3433": {
      "op": "JUMPDEST"
    },
    "3434": {
      "op": "SWAP2"
    },
    "3435": {
      "op": "SWAP1"
    },
    "3436": {
      "op": "POP"
    },
    "3437": {
      "jump": "o",
      "op": "JUMP"
    },
    "3438": {
      "op": "JUMPDEST"
    },
    "3439": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3441": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3443": {
      "op": "DUP3"
    },
    "3444": {
      "op": "DUP5"
    },
    "3445": {
      "op": "SUB"
    },
    "3446": {
      "op": "SLT"
    },
    "3447": {
      "op": "ISZERO"
    },
    "3448": {
      "op": "PUSH2",
      "value": "0xD80"
    },
    "3451": {
      "op": "JUMPI"
    },
    "3452": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3454": {
      "op": "DUP1"
    },
    "3455": {
      "op": "REVERT"
    },
    "3456": {
      "op": "JUMPDEST"
    },
    "3457": {
      "op": "PUSH2",
      "value": "0x73D"
    },
    "3460": {
      "op": "DUP3"
    },
    "3461": {
      "op": "PUSH2",
      "value": "0xD52"
    },
    "3464": {
      "jump": "i",
      "op": "JUMP"
    },
    "3465": {
      "op": "JUMPDEST"
    },
    "3466": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3468": {
      "op": "DUP1"
    },
    "3469": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3471": {
      "op": "DUP4"
    },
    "3472": {
      "op": "DUP6"
    },
    "3473": {
      "op": "SUB"
    },
    "3474": {
      "op": "SLT"
    },
    "3475": {
      "op": "ISZERO"
    },
    "3476": {
      "op": "PUSH2",
      "value": "0xD9C"
    },
    "3479": {
      "op": "JUMPI"
    },
    "3480": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3482": {
      "op": "DUP1"
    },
    "3483": {
      "op": "REVERT"
    },
    "3484": {
      "op": "JUMPDEST"
    },
    "3485": {
      "op": "PUSH2",
      "value": "0xDA5"
    },
    "3488": {
      "op": "DUP4"
    },
    "3489": {
      "op": "PUSH2",
      "value": "0xD52"
    },
    "3492": {
      "jump": "i",
      "op": "JUMP"
    },
    "3493": {
      "op": "JUMPDEST"
    },
    "3494": {
      "op": "SWAP2"
    },
    "3495": {
      "op": "POP"
    },
    "3496": {
      "op": "PUSH2",
      "value": "0xDB3"
    },
    "3499": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3501": {
      "op": "DUP5"
    },
    "3502": {
      "op": "ADD"
    },
    "3503": {
      "op": "PUSH2",
      "value": "0xD52"
    },
    "3506": {
      "jump": "i",
      "op": "JUMP"
    },
    "3507": {
      "op": "JUMPDEST"
    },
    "3508": {
      "op": "SWAP1"
    },
    "3509": {
      "op": "POP"
    },
    "3510": {
      "op": "SWAP3"
    },
    "3511": {
      "op": "POP"
    },
    "3512": {
      "op": "SWAP3"
    },
    "3513": {
      "op": "SWAP1"
    },
    "3514": {
      "op": "POP"
    },
    "3515": {
      "jump": "o",
      "op": "JUMP"
    },
    "3516": {
      "op": "JUMPDEST"
    },
    "3517": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3519": {
      "op": "DUP1"
    },
    "3520": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3522": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "3524": {
      "op": "DUP5"
    },
    "3525": {
      "op": "DUP7"
    },
    "3526": {
      "op": "SUB"
    },
    "3527": {
      "op": "SLT"
    },
    "3528": {
      "op": "ISZERO"
    },
    "3529": {
      "op": "PUSH2",
      "value": "0xDD1"
    },
    "3532": {
      "op": "JUMPI"
    },
    "3533": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3535": {
      "op": "DUP1"
    },
    "3536": {
      "op": "REVERT"
    },
    "3537": {
      "op": "JUMPDEST"
    },
    "3538": {
      "op": "PUSH2",
      "value": "0xDDA"
    },
    "3541": {
      "op": "DUP5"
    },
    "3542": {
      "op": "PUSH2",
      "value": "0xD52"
    },
    "3545": {
      "jump": "i",
      "op": "JUMP"
    },
    "3546": {
      "op": "JUMPDEST"
    },
    "3547": {
      "op": "SWAP3"
    },
    "3548": {
      "op": "POP"
    },
    "3549": {
      "op": "PUSH2",
      "value": "0xDE8"
    },
    "3552": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3554": {
      "op": "DUP6"
    },
    "3555": {
      "op": "ADD"
    },
    "3556": {
      "op": "PUSH2",
      "value": "0xD52"
    },
    "3559": {
      "jump": "i",
      "op": "JUMP"
    },
    "3560": {
      "op": "JUMPDEST"
    },
    "3561": {
      "op": "SWAP2"
    },
    "3562": {
      "op": "POP"
    },
    "3563": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3565": {
      "op": "DUP5"
    },
    "3566": {
      "op": "ADD"
    },
    "3567": {
      "op": "CALLDATALOAD"
    },
    "3568": {
      "op": "SWAP1"
    },
    "3569": {
      "op": "POP"
    },
    "3570": {
      "op": "SWAP3"
    },
    "3571": {
      "op": "POP"
    },
    "3572": {
      "op": "SWAP3"
    },
    "3573": {
      "op": "POP"
    },
    "3574": {
      "op": "SWAP3"
    },
    "3575": {
      "jump": "o",
      "op": "JUMP"
    },
    "3576": {
      "op": "JUMPDEST"
    },
    "3577": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3579": {
      "op": "DUP1"
    },
    "3580": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3582": {
      "op": "DUP1"
    },
    "3583": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "3585": {
      "op": "DUP6"
    },
    "3586": {
      "op": "DUP8"
    },
    "3587": {
      "op": "SUB"
    },
    "3588": {
      "op": "SLT"
    },
    "3589": {
      "op": "ISZERO"
    },
    "3590": {
      "op": "PUSH2",
      "value": "0xE0E"
    },
    "3593": {
      "op": "JUMPI"
    },
    "3594": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3596": {
      "op": "DUP1"
    },
    "3597": {
      "op": "REVERT"
    },
    "3598": {
      "op": "JUMPDEST"
    },
    "3599": {
      "op": "PUSH2",
      "value": "0xE17"
    },
    "3602": {
      "op": "DUP6"
    },
    "3603": {
      "op": "PUSH2",
      "value": "0xD52"
    },
    "3606": {
      "jump": "i",
      "op": "JUMP"
    },
    "3607": {
      "op": "JUMPDEST"
    },
    "3608": {
      "op": "SWAP4"
    },
    "3609": {
      "op": "POP"
    },
    "3610": {
      "op": "PUSH2",
      "value": "0xE25"
    },
    "3613": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3615": {
      "op": "DUP7"
    },
    "3616": {
      "op": "ADD"
    },
    "3617": {
      "op": "PUSH2",
      "value": "0xD52"
    },
    "3620": {
      "jump": "i",
      "op": "JUMP"
    },
    "3621": {
      "op": "JUMPDEST"
    },
    "3622": {
      "op": "SWAP3"
    },
    "3623": {
      "op": "POP"
    },
    "3624": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3626": {
      "op": "DUP6"
    },
    "3627": {
      "op": "ADD"
    },
    "3628": {
      "op": "CALLDATALOAD"
    },
    "3629": {
      "op": "SWAP2"
    },
    "3630": {
      "op": "POP"
    },
    "3631": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "3633": {
      "op": "DUP6"
    },
    "3634": {
      "op": "ADD"
    },
    "3635": {
      "op": "CALLDATALOAD"
    },
    "3636": {
      "op": "PUSH8",
      "value": "0xFFFFFFFFFFFFFFFF"
    },
    "3645": {
      "op": "DUP1"
    },
    "3646": {
      "op": "DUP3"
    },
    "3647": {
      "op": "GT"
    },
    "3648": {
      "op": "ISZERO"
    },
    "3649": {
      "op": "PUSH2",
      "value": "0xE49"
    },
    "3652": {
      "op": "JUMPI"
    },
    "3653": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3655": {
      "op": "DUP1"
    },
    "3656": {
      "op": "REVERT"
    },
    "3657": {
      "op": "JUMPDEST"
    },
    "3658": {
      "op": "DUP2"
    },
    "3659": {
      "op": "DUP8"
    },
    "3660": {
      "op": "ADD"
    },
    "3661": {
      "op": "SWAP2"
    },
    "3662": {
      "op": "POP"
    },
    "3663": {
      "op": "DUP8"
    },
    "3664": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3666": {
      "op": "DUP4"
    },
    "3667": {
      "op": "ADD"
    },
    "3668": {
      "op": "SLT"
    },
    "3669": {
      "op": "PUSH2",
      "value": "0xE5D"
    },
    "3672": {
      "op": "JUMPI"
    },
    "3673": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3675": {
      "op": "DUP1"
    },
    "3676": {
      "op": "REVERT"
    },
    "3677": {
      "op": "JUMPDEST"
    },
    "3678": {
      "op": "DUP2"
    },
    "3679": {
      "op": "CALLDATALOAD"
    },
    "3680": {
      "op": "DUP2"
    },
    "3681": {
      "op": "DUP2"
    },
    "3682": {
      "op": "GT"
    },
    "3683": {
      "op": "ISZERO"
    },
    "3684": {
      "op": "PUSH2",
      "value": "0xE6F"
    },
    "3687": {
      "op": "JUMPI"
    },
    "3688": {
      "op": "PUSH2",
      "value": "0xE6F"
    },
    "3691": {
      "op": "PUSH2",
      "value": "0x11F6"
    },
    "3694": {
      "jump": "i",
      "op": "JUMP"
    },
    "3695": {
      "op": "JUMPDEST"
    },
    "3696": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3698": {
      "op": "MLOAD"
    },
    "3699": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3701": {
      "op": "DUP3"
    },
    "3702": {
      "op": "ADD"
    },
    "3703": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3705": {
      "op": "NOT"
    },
    "3706": {
      "op": "SWAP1"
    },
    "3707": {
      "op": "DUP2"
    },
    "3708": {
      "op": "AND"
    },
    "3709": {
      "op": "PUSH1",
      "value": "0x3F"
    },
    "3711": {
      "op": "ADD"
    },
    "3712": {
      "op": "AND"
    },
    "3713": {
      "op": "DUP2"
    },
    "3714": {
      "op": "ADD"
    },
    "3715": {
      "op": "SWAP1"
    },
    "3716": {
      "op": "DUP4"
    },
    "3717": {
      "op": "DUP3"
    },
    "3718": {
      "op": "GT"
    },
    "3719": {
      "op": "DUP2"
    },
    "3720": {
      "op": "DUP4"
    },
    "3721": {
      "op": "LT"
    },
    "3722": {
      "op": "OR"
    },
    "3723": {
      "op": "ISZERO"
    },
    "3724": {
      "op": "PUSH2",
      "value": "0xE97"
    },
    "3727": {
      "op": "JUMPI"
    },
    "3728": {
      "op": "PUSH2",
      "value": "0xE97"
    },
    "3731": {
      "op": "PUSH2",
      "value": "0x11F6"
    },
    "3734": {
      "jump": "i",
      "op": "JUMP"
    },
    "3735": {
      "op": "JUMPDEST"
    },
    "3736": {
      "op": "DUP2"
    },
    "3737": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3739": {
      "op": "MSTORE"
    },
    "3740": {
      "op": "DUP3"
    },
    "3741": {
      "op": "DUP2"
    },
    "3742": {
      "op": "MSTORE"
    },
    "3743": {
      "op": "DUP11"
    },
    "3744": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3746": {
      "op": "DUP5"
    },
    "3747": {
      "op": "DUP8"
    },
    "3748": {
      "op": "ADD"
    },
    "3749": {
      "op": "ADD"
    },
    "3750": {
      "op": "GT"
    },
    "3751": {
      "op": "ISZERO"
    },
    "3752": {
      "op": "PUSH2",
      "value": "0xEB0"
    },
    "3755": {
      "op": "JUMPI"
    },
    "3756": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3758": {
      "op": "DUP1"
    },
    "3759": {
      "op": "REVERT"
    },
    "3760": {
      "op": "JUMPDEST"
    },
    "3761": {
      "op": "DUP3"
    },
    "3762": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3764": {
      "op": "DUP7"
    },
    "3765": {
      "op": "ADD"
    },
    "3766": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3768": {
      "op": "DUP4"
    },
    "3769": {
      "op": "ADD"
    },
    "3770": {
      "op": "CALLDATACOPY"
    },
    "3771": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3773": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3775": {
      "op": "DUP5"
    },
    "3776": {
      "op": "DUP4"
    },
    "3777": {
      "op": "ADD"
    },
    "3778": {
      "op": "ADD"
    },
    "3779": {
      "op": "MSTORE"
    },
    "3780": {
      "op": "DUP1"
    },
    "3781": {
      "op": "SWAP6"
    },
    "3782": {
      "op": "POP"
    },
    "3783": {
      "op": "POP"
    },
    "3784": {
      "op": "POP"
    },
    "3785": {
      "op": "POP"
    },
    "3786": {
      "op": "POP"
    },
    "3787": {
      "op": "POP"
    },
    "3788": {
      "op": "SWAP3"
    },
    "3789": {
      "op": "SWAP6"
    },
    "3790": {
      "op": "SWAP2"
    },
    "3791": {
      "op": "SWAP5"
    },
    "3792": {
      "op": "POP"
    },
    "3793": {
      "op": "SWAP3"
    },
    "3794": {
      "op": "POP"
    },
    "3795": {
      "jump": "o",
      "op": "JUMP"
    },
    "3796": {
      "op": "JUMPDEST"
    },
    "3797": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3799": {
      "op": "DUP1"
    },
    "3800": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3802": {
      "op": "DUP4"
    },
    "3803": {
      "op": "DUP6"
    },
    "3804": {
      "op": "SUB"
    },
    "3805": {
      "op": "SLT"
    },
    "3806": {
      "op": "ISZERO"
    },
    "3807": {
      "op": "PUSH2",
      "value": "0xEE7"
    },
    "3810": {
      "op": "JUMPI"
    },
    "3811": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3813": {
      "op": "DUP1"
    },
    "3814": {
      "op": "REVERT"
    },
    "3815": {
      "op": "JUMPDEST"
    },
    "3816": {
      "op": "PUSH2",
      "value": "0xEF0"
    },
    "3819": {
      "op": "DUP4"
    },
    "3820": {
      "op": "PUSH2",
      "value": "0xD52"
    },
    "3823": {
      "jump": "i",
      "op": "JUMP"
    },
    "3824": {
      "op": "JUMPDEST"
    },
    "3825": {
      "op": "SWAP2"
    },
    "3826": {
      "op": "POP"
    },
    "3827": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3829": {
      "op": "DUP4"
    },
    "3830": {
      "op": "ADD"
    },
    "3831": {
      "op": "CALLDATALOAD"
    },
    "3832": {
      "op": "DUP1"
    },
    "3833": {
      "op": "ISZERO"
    },
    "3834": {
      "op": "ISZERO"
    },
    "3835": {
      "op": "DUP2"
    },
    "3836": {
      "op": "EQ"
    },
    "3837": {
      "op": "PUSH2",
      "value": "0xF05"
    },
    "3840": {
      "op": "JUMPI"
    },
    "3841": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3843": {
      "op": "DUP1"
    },
    "3844": {
      "op": "REVERT"
    },
    "3845": {
      "op": "JUMPDEST"
    },
    "3846": {
      "op": "DUP1"
    },
    "3847": {
      "op": "SWAP2"
    },
    "3848": {
      "op": "POP"
    },
    "3849": {
      "op": "POP"
    },
    "3850": {
      "op": "SWAP3"
    },
    "3851": {
      "op": "POP"
    },
    "3852": {
      "op": "SWAP3"
    },
    "3853": {
      "op": "SWAP1"
    },
    "3854": {
      "op": "POP"
    },
    "3855": {
      "jump": "o",
      "op": "JUMP"
    },
    "3856": {
      "op": "JUMPDEST"
    },
    "3857": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3859": {
      "op": "DUP1"
    },
    "3860": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3862": {
      "op": "DUP4"
    },
    "3863": {
      "op": "DUP6"
    },
    "3864": {
      "op": "SUB"
    },
    "3865": {
      "op": "SLT"
    },
    "3866": {
      "op": "ISZERO"
    },
    "3867": {
      "op": "PUSH2",
      "value": "0xF23"
    },
    "3870": {
      "op": "JUMPI"
    },
    "3871": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3873": {
      "op": "DUP1"
    },
    "3874": {
      "op": "REVERT"
    },
    "3875": {
      "op": "JUMPDEST"
    },
    "3876": {
      "op": "PUSH2",
      "value": "0xF2C"
    },
    "3879": {
      "op": "DUP4"
    },
    "3880": {
      "op": "PUSH2",
      "value": "0xD52"
    },
    "3883": {
      "jump": "i",
      "op": "JUMP"
    },
    "3884": {
      "op": "JUMPDEST"
    },
    "3885": {
      "op": "SWAP5"
    },
    "3886": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3888": {
      "op": "SWAP4"
    },
    "3889": {
      "op": "SWAP1"
    },
    "3890": {
      "op": "SWAP4"
    },
    "3891": {
      "op": "ADD"
    },
    "3892": {
      "op": "CALLDATALOAD"
    },
    "3893": {
      "op": "SWAP4"
    },
    "3894": {
      "op": "POP"
    },
    "3895": {
      "op": "POP"
    },
    "3896": {
      "op": "POP"
    },
    "3897": {
      "jump": "o",
      "op": "JUMP"
    },
    "3898": {
      "op": "JUMPDEST"
    },
    "3899": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3901": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3903": {
      "op": "DUP3"
    },
    "3904": {
      "op": "DUP5"
    },
    "3905": {
      "op": "SUB"
    },
    "3906": {
      "op": "SLT"
    },
    "3907": {
      "op": "ISZERO"
    },
    "3908": {
      "op": "PUSH2",
      "value": "0xF4C"
    },
    "3911": {
      "op": "JUMPI"
    },
    "3912": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3914": {
      "op": "DUP1"
    },
    "3915": {
      "op": "REVERT"
    },
    "3916": {
      "op": "JUMPDEST"
    },
    "3917": {
      "op": "DUP2"
    },
    "3918": {
      "op": "CALLDATALOAD"
    },
    "3919": {
      "op": "PUSH2",
      "value": "0x73D"
    },
    "3922": {
      "op": "DUP2"
    },
    "3923": {
      "op": "PUSH2",
      "value": "0x120C"
    },
    "3926": {
      "jump": "i",
      "op": "JUMP"
    },
    "3927": {
      "op": "JUMPDEST"
    },
    "3928": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3930": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3932": {
      "op": "DUP3"
    },
    "3933": {
      "op": "DUP5"
    },
    "3934": {
      "op": "SUB"
    },
    "3935": {
      "op": "SLT"
    },
    "3936": {
      "op": "ISZERO"
    },
    "3937": {
      "op": "PUSH2",
      "value": "0xF69"
    },
    "3940": {
      "op": "JUMPI"
    },
    "3941": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3943": {
      "op": "DUP1"
    },
    "3944": {
      "op": "REVERT"
    },
    "3945": {
      "op": "JUMPDEST"
    },
    "3946": {
      "op": "DUP2"
    },
    "3947": {
      "op": "MLOAD"
    },
    "3948": {
      "op": "PUSH2",
      "value": "0x73D"
    },
    "3951": {
      "op": "DUP2"
    },
    "3952": {
      "op": "PUSH2",
      "value": "0x120C"
    },
    "3955": {
      "jump": "i",
      "op": "JUMP"
    },
    "3956": {
      "op": "JUMPDEST"
    },
    "3957": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3959": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3961": {
      "op": "DUP3"
    },
    "3962": {
      "op": "DUP5"
    },
    "3963": {
      "op": "SUB"
    },
    "3964": {
      "op": "SLT"
    },
    "3965": {
      "op": "ISZERO"
    },
    "3966": {
      "op": "PUSH2",
      "value": "0xF86"
    },
    "3969": {
      "op": "JUMPI"
    },
    "3970": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3972": {
      "op": "DUP1"
    },
    "3973": {
      "op": "REVERT"
    },
    "3974": {
      "op": "JUMPDEST"
    },
    "3975": {
      "op": "POP"
    },
    "3976": {
      "op": "CALLDATALOAD"
    },
    "3977": {
      "op": "SWAP2"
    },
    "3978": {
      "op": "SWAP1"
    },
    "3979": {
      "op": "POP"
    },
    "3980": {
      "jump": "o",
      "op": "JUMP"
    },
    "3981": {
      "op": "JUMPDEST"
    },
    "3982": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3984": {
      "op": "DUP2"
    },
    "3985": {
      "op": "MLOAD"
    },
    "3986": {
      "op": "DUP1"
    },
    "3987": {
      "op": "DUP5"
    },
    "3988": {
      "op": "MSTORE"
    },
    "3989": {
      "op": "PUSH2",
      "value": "0xFA5"
    },
    "3992": {
      "op": "DUP2"
    },
    "3993": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3995": {
      "op": "DUP7"
    },
    "3996": {
      "op": "ADD"
    },
    "3997": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3999": {
      "op": "DUP7"
    },
    "4000": {
      "op": "ADD"
    },
    "4001": {
      "op": "PUSH2",
      "value": "0x111E"
    },
    "4004": {
      "jump": "i",
      "op": "JUMP"
    },
    "4005": {
      "op": "JUMPDEST"
    },
    "4006": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "4008": {
      "op": "ADD"
    },
    "4009": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "4011": {
      "op": "NOT"
    },
    "4012": {
      "op": "AND"
    },
    "4013": {
      "op": "SWAP3"
    },
    "4014": {
      "op": "SWAP1"
    },
    "4015": {
      "op": "SWAP3"
    },
    "4016": {
      "op": "ADD"
    },
    "4017": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4019": {
      "op": "ADD"
    },
    "4020": {
      "op": "SWAP3"
    },
    "4021": {
      "op": "SWAP2"
    },
    "4022": {
      "op": "POP"
    },
    "4023": {
      "op": "POP"
    },
    "4024": {
      "jump": "o",
      "op": "JUMP"
    },
    "4025": {
      "op": "JUMPDEST"
    },
    "4026": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4028": {
      "op": "DUP4"
    },
    "4029": {
      "op": "MLOAD"
    },
    "4030": {
      "op": "PUSH2",
      "value": "0xFCB"
    },
    "4033": {
      "op": "DUP2"
    },
    "4034": {
      "op": "DUP5"
    },
    "4035": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4037": {
      "op": "DUP9"
    },
    "4038": {
      "op": "ADD"
    },
    "4039": {
      "op": "PUSH2",
      "value": "0x111E"
    },
    "4042": {
      "jump": "i",
      "op": "JUMP"
    },
    "4043": {
      "op": "JUMPDEST"
    },
    "4044": {
      "op": "DUP4"
    },
    "4045": {
      "op": "MLOAD"
    },
    "4046": {
      "op": "SWAP1"
    },
    "4047": {
      "op": "DUP4"
    },
    "4048": {
      "op": "ADD"
    },
    "4049": {
      "op": "SWAP1"
    },
    "4050": {
      "op": "PUSH2",
      "value": "0xFDF"
    },
    "4053": {
      "op": "DUP2"
    },
    "4054": {
      "op": "DUP4"
    },
    "4055": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4057": {
      "op": "DUP9"
    },
    "4058": {
      "op": "ADD"
    },
    "4059": {
      "op": "PUSH2",
      "value": "0x111E"
    },
    "4062": {
      "jump": "i",
      "op": "JUMP"
    },
    "4063": {
      "op": "JUMPDEST"
    },
    "4064": {
      "op": "ADD"
    },
    "4065": {
      "op": "SWAP5"
    },
    "4066": {
      "op": "SWAP4"
    },
    "4067": {
      "op": "POP"
    },
    "4068": {
      "op": "POP"
    },
    "4069": {
      "op": "POP"
    },
    "4070": {
      "op": "POP"
    },
    "4071": {
      "jump": "o",
      "op": "JUMP"
    },
    "4072": {
      "op": "JUMPDEST"
    },
    "4073": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4075": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4077": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "4079": {
      "op": "SHL"
    },
    "4080": {
      "op": "SUB"
    },
    "4081": {
      "op": "DUP6"
    },
    "4082": {
      "op": "DUP2"
    },
    "4083": {
      "op": "AND"
    },
    "4084": {
      "op": "DUP3"
    },
    "4085": {
      "op": "MSTORE"
    },
    "4086": {
      "op": "DUP5"
    },
    "4087": {
      "op": "AND"
    },
    "4088": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4090": {
      "op": "DUP3"
    },
    "4091": {
      "op": "ADD"
    },
    "4092": {
      "op": "MSTORE"
    },
    "4093": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "4095": {
      "op": "DUP2"
    },
    "4096": {
      "op": "ADD"
    },
    "4097": {
      "op": "DUP4"
    },
    "4098": {
      "op": "SWAP1"
    },
    "4099": {
      "op": "MSTORE"
    },
    "4100": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "4102": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "4104": {
      "op": "DUP3"
    },
    "4105": {
      "op": "ADD"
    },
    "4106": {
      "op": "DUP2"
    },
    "4107": {
      "op": "SWAP1"
    },
    "4108": {
      "op": "MSTORE"
    },
    "4109": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4111": {
      "op": "SWAP1"
    },
    "4112": {
      "op": "PUSH2",
      "value": "0x101B"
    },
    "4115": {
      "op": "SWAP1"
    },
    "4116": {
      "op": "DUP4"
    },
    "4117": {
      "op": "ADD"
    },
    "4118": {
      "op": "DUP5"
    },
    "4119": {
      "op": "PUSH2",
      "value": "0xF8D"
    },
    "4122": {
      "jump": "i",
      "op": "JUMP"
    },
    "4123": {
      "op": "JUMPDEST"
    },
    "4124": {
      "op": "SWAP7"
    },
    "4125": {
      "op": "SWAP6"
    },
    "4126": {
      "op": "POP"
    },
    "4127": {
      "op": "POP"
    },
    "4128": {
      "op": "POP"
    },
    "4129": {
      "op": "POP"
    },
    "4130": {
      "op": "POP"
    },
    "4131": {
      "op": "POP"
    },
    "4132": {
      "jump": "o",
      "op": "JUMP"
    },
    "4133": {
      "op": "JUMPDEST"
    },
    "4134": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4136": {
      "op": "DUP2"
    },
    "4137": {
      "op": "MSTORE"
    },
    "4138": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4140": {
      "op": "PUSH2",
      "value": "0x73D"
    },
    "4143": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4145": {
      "op": "DUP4"
    },
    "4146": {
      "op": "ADD"
    },
    "4147": {
      "op": "DUP5"
    },
    "4148": {
      "op": "PUSH2",
      "value": "0xF8D"
    },
    "4151": {
      "jump": "i",
      "op": "JUMP"
    },
    "4152": {
      "op": "JUMPDEST"
    },
    "4153": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4155": {
      "op": "DUP1"
    },
    "4156": {
      "op": "DUP3"
    },
    "4157": {
      "op": "MSTORE"
    },
    "4158": {
      "op": "PUSH1",
      "value": "0x32"
    },
    "4160": {
      "op": "SWAP1"
    },
    "4161": {
      "op": "DUP3"
    },
    "4162": {
      "op": "ADD"
    },
    "4163": {
      "op": "MSTORE"
    },
    "4164": {
      "op": "PUSH32",
      "value": "0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265"
    },
    "4197": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "4199": {
      "op": "DUP3"
    },
    "4200": {
      "op": "ADD"
    },
    "4201": {
      "op": "MSTORE"
    },
    "4202": {
      "op": "PUSH18",
      "value": "0x31B2B4BB32B91034B6B83632B6B2B73A32B9"
    },
    "4221": {
      "op": "PUSH1",
      "value": "0x71"
    },
    "4223": {
      "op": "SHL"
    },
    "4224": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "4226": {
      "op": "DUP3"
    },
    "4227": {
      "op": "ADD"
    },
    "4228": {
      "op": "MSTORE"
    },
    "4229": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "4231": {
      "op": "ADD"
    },
    "4232": {
      "op": "SWAP1"
    },
    "4233": {
      "jump": "o",
      "op": "JUMP"
    },
    "4234": {
      "op": "JUMPDEST"
    },
    "4235": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4237": {
      "op": "DUP1"
    },
    "4238": {
      "op": "DUP3"
    },
    "4239": {
      "op": "MSTORE"
    },
    "4240": {
      "op": "PUSH1",
      "value": "0x31"
    },
    "4242": {
      "op": "SWAP1"
    },
    "4243": {
      "op": "DUP3"
    },
    "4244": {
      "op": "ADD"
    },
    "4245": {
      "op": "MSTORE"
    },
    "4246": {
      "op": "PUSH32",
      "value": "0x4552433732313A207472616E736665722063616C6C6572206973206E6F74206F"
    },
    "4279": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "4281": {
      "op": "DUP3"
    },
    "4282": {
      "op": "ADD"
    },
    "4283": {
      "op": "MSTORE"
    },
    "4284": {
      "op": "PUSH17",
      "value": "0x1DDB995C881B9BDC88185C1C1C9BDD9959"
    },
    "4302": {
      "op": "PUSH1",
      "value": "0x7A"
    },
    "4304": {
      "op": "SHL"
    },
    "4305": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "4307": {
      "op": "DUP3"
    },
    "4308": {
      "op": "ADD"
    },
    "4309": {
      "op": "MSTORE"
    },
    "4310": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "4312": {
      "op": "ADD"
    },
    "4313": {
      "op": "SWAP1"
    },
    "4314": {
      "jump": "o",
      "op": "JUMP"
    },
    "4315": {
      "op": "JUMPDEST"
    },
    "4316": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4318": {
      "op": "DUP3"
    },
    "4319": {
      "op": "NOT"
    },
    "4320": {
      "op": "DUP3"
    },
    "4321": {
      "op": "GT"
    },
    "4322": {
      "op": "ISZERO"
    },
    "4323": {
      "op": "PUSH2",
      "value": "0x10EE"
    },
    "4326": {
      "op": "JUMPI"
    },
    "4327": {
      "op": "PUSH2",
      "value": "0x10EE"
    },
    "4330": {
      "op": "PUSH2",
      "value": "0x11B4"
    },
    "4333": {
      "jump": "i",
      "op": "JUMP"
    },
    "4334": {
      "op": "JUMPDEST"
    },
    "4335": {
      "op": "POP"
    },
    "4336": {
      "op": "ADD"
    },
    "4337": {
      "op": "SWAP1"
    },
    "4338": {
      "jump": "o",
      "op": "JUMP"
    },
    "4339": {
      "op": "JUMPDEST"
    },
    "4340": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4342": {
      "op": "DUP3"
    },
    "4343": {
      "op": "PUSH2",
      "value": "0x1102"
    },
    "4346": {
      "op": "JUMPI"
    },
    "4347": {
      "op": "PUSH2",
      "value": "0x1102"
    },
    "4350": {
      "op": "PUSH2",
      "value": "0x11CA"
    },
    "4353": {
      "jump": "i",
      "op": "JUMP"
    },
    "4354": {
      "op": "JUMPDEST"
    },
    "4355": {
      "op": "POP"
    },
    "4356": {
      "op": "DIV"
    },
    "4357": {
      "op": "SWAP1"
    },
    "4358": {
      "jump": "o",
      "op": "JUMP"
    },
    "4359": {
      "op": "JUMPDEST"
    },
    "4360": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4362": {
      "op": "DUP3"
    },
    "4363": {
      "op": "DUP3"
    },
    "4364": {
      "op": "LT"
    },
    "4365": {
      "op": "ISZERO"
    },
    "4366": {
      "op": "PUSH2",
      "value": "0x1119"
    },
    "4369": {
      "op": "JUMPI"
    },
    "4370": {
      "op": "PUSH2",
      "value": "0x1119"
    },
    "4373": {
      "op": "PUSH2",
      "value": "0x11B4"
    },
    "4376": {
      "jump": "i",
      "op": "JUMP"
    },
    "4377": {
      "op": "JUMPDEST"
    },
    "4378": {
      "op": "POP"
    },
    "4379": {
      "op": "SUB"
    },
    "4380": {
      "op": "SWAP1"
    },
    "4381": {
      "jump": "o",
      "op": "JUMP"
    },
    "4382": {
      "op": "JUMPDEST"
    },
    "4383": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4385": {
      "op": "JUMPDEST"
    },
    "4386": {
      "op": "DUP4"
    },
    "4387": {
      "op": "DUP2"
    },
    "4388": {
      "op": "LT"
    },
    "4389": {
      "op": "ISZERO"
    },
    "4390": {
      "op": "PUSH2",
      "value": "0x1139"
    },
    "4393": {
      "op": "JUMPI"
    },
    "4394": {
      "op": "DUP2"
    },
    "4395": {
      "op": "DUP2"
    },
    "4396": {
      "op": "ADD"
    },
    "4397": {
      "op": "MLOAD"
    },
    "4398": {
      "op": "DUP4"
    },
    "4399": {
      "op": "DUP3"
    },
    "4400": {
      "op": "ADD"
    },
    "4401": {
      "op": "MSTORE"
    },
    "4402": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4404": {
      "op": "ADD"
    },
    "4405": {
      "op": "PUSH2",
      "value": "0x1121"
    },
    "4408": {
      "op": "JUMP"
    },
    "4409": {
      "op": "JUMPDEST"
    },
    "4410": {
      "op": "DUP4"
    },
    "4411": {
      "op": "DUP2"
    },
    "4412": {
      "op": "GT"
    },
    "4413": {
      "op": "ISZERO"
    },
    "4414": {
      "op": "PUSH2",
      "value": "0x656"
    },
    "4417": {
      "op": "JUMPI"
    },
    "4418": {
      "op": "POP"
    },
    "4419": {
      "op": "POP"
    },
    "4420": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4422": {
      "op": "SWAP2"
    },
    "4423": {
      "op": "ADD"
    },
    "4424": {
      "op": "MSTORE"
    },
    "4425": {
      "jump": "o",
      "op": "JUMP"
    },
    "4426": {
      "op": "JUMPDEST"
    },
    "4427": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4429": {
      "op": "DUP2"
    },
    "4430": {
      "op": "DUP2"
    },
    "4431": {
      "op": "SHR"
    },
    "4432": {
      "op": "SWAP1"
    },
    "4433": {
      "op": "DUP3"
    },
    "4434": {
      "op": "AND"
    },
    "4435": {
      "op": "DUP1"
    },
    "4436": {
      "op": "PUSH2",
      "value": "0x115E"
    },
    "4439": {
      "op": "JUMPI"
    },
    "4440": {
      "op": "PUSH1",
      "value": "0x7F"
    },
    "4442": {
      "op": "DUP3"
    },
    "4443": {
      "op": "AND"
    },
    "4444": {
      "op": "SWAP2"
    },
    "4445": {
      "op": "POP"
    },
    "4446": {
      "op": "JUMPDEST"
    },
    "4447": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4449": {
      "op": "DUP3"
    },
    "4450": {
      "op": "LT"
    },
    "4451": {
      "op": "DUP2"
    },
    "4452": {
      "op": "EQ"
    },
    "4453": {
      "op": "ISZERO"
    },
    "4454": {
      "op": "PUSH2",
      "value": "0x117F"
    },
    "4457": {
      "op": "JUMPI"
    },
    "4458": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4463": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4465": {
      "op": "SHL"
    },
    "4466": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4468": {
      "op": "MSTORE"
    },
    "4469": {
      "op": "PUSH1",
      "value": "0x22"
    },
    "4471": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "4473": {
      "op": "MSTORE"
    },
    "4474": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "4476": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4478": {
      "op": "REVERT"
    },
    "4479": {
      "op": "JUMPDEST"
    },
    "4480": {
      "op": "POP"
    },
    "4481": {
      "op": "SWAP2"
    },
    "4482": {
      "op": "SWAP1"
    },
    "4483": {
      "op": "POP"
    },
    "4484": {
      "jump": "o",
      "op": "JUMP"
    },
    "4485": {
      "op": "JUMPDEST"
    },
    "4486": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4488": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4490": {
      "op": "NOT"
    },
    "4491": {
      "op": "DUP3"
    },
    "4492": {
      "op": "EQ"
    },
    "4493": {
      "op": "ISZERO"
    },
    "4494": {
      "op": "PUSH2",
      "value": "0x1199"
    },
    "4497": {
      "op": "JUMPI"
    },
    "4498": {
      "op": "PUSH2",
      "value": "0x1199"
    },
    "4501": {
      "op": "PUSH2",
      "value": "0x11B4"
    },
    "4504": {
      "jump": "i",
      "op": "JUMP"
    },
    "4505": {
      "op": "JUMPDEST"
    },
    "4506": {
      "op": "POP"
    },
    "4507": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4509": {
      "op": "ADD"
    },
    "4510": {
      "op": "SWAP1"
    },
    "4511": {
      "jump": "o",
      "op": "JUMP"
    },
    "4512": {
      "op": "JUMPDEST"
    },
    "4513": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4515": {
      "op": "DUP3"
    },
    "4516": {
      "op": "PUSH2",
      "value": "0x11AF"
    },
    "4519": {
      "op": "JUMPI"
    },
    "4520": {
      "op": "PUSH2",
      "value": "0x11AF"
    },
    "4523": {
      "op": "PUSH2",
      "value": "0x11CA"
    },
    "4526": {
      "jump": "i",
      "op": "JUMP"
    },
    "4527": {
      "op": "JUMPDEST"
    },
    "4528": {
      "op": "POP"
    },
    "4529": {
      "op": "MOD"
    },
    "4530": {
      "op": "SWAP1"
    },
    "4531": {
      "jump": "o",
      "op": "JUMP"
    },
    "4532": {
      "op": "JUMPDEST"
    },
    "4533": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4538": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4540": {
      "op": "SHL"
    },
    "4541": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4543": {
      "op": "MSTORE"
    },
    "4544": {
      "op": "PUSH1",
      "value": "0x11"
    },
    "4546": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "4548": {
      "op": "MSTORE"
    },
    "4549": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "4551": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4553": {
      "op": "REVERT"
    },
    "4554": {
      "op": "JUMPDEST"
    },
    "4555": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4560": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4562": {
      "op": "SHL"
    },
    "4563": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4565": {
      "op": "MSTORE"
    },
    "4566": {
      "op": "PUSH1",
      "value": "0x12"
    },
    "4568": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "4570": {
      "op": "MSTORE"
    },
    "4571": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "4573": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4575": {
      "op": "REVERT"
    },
    "4576": {
      "op": "JUMPDEST"
    },
    "4577": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4582": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4584": {
      "op": "SHL"
    },
    "4585": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4587": {
      "op": "MSTORE"
    },
    "4588": {
      "op": "PUSH1",
      "value": "0x32"
    },
    "4590": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "4592": {
      "op": "MSTORE"
    },
    "4593": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "4595": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4597": {
      "op": "REVERT"
    },
    "4598": {
      "op": "JUMPDEST"
    },
    "4599": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4604": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4606": {
      "op": "SHL"
    },
    "4607": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4609": {
      "op": "MSTORE"
    },
    "4610": {
      "op": "PUSH1",
      "value": "0x41"
    },
    "4612": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "4614": {
      "op": "MSTORE"
    },
    "4615": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "4617": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4619": {
      "op": "REVERT"
    },
    "4620": {
      "op": "JUMPDEST"
    },
    "4621": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4623": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4625": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4627": {
      "op": "SHL"
    },
    "4628": {
      "op": "SUB"
    },
    "4629": {
      "op": "NOT"
    },
    "4630": {
      "op": "DUP2"
    },
    "4631": {
      "op": "AND"
    },
    "4632": {
      "op": "DUP2"
    },
    "4633": {
      "op": "EQ"
    },
    "4634": {
      "op": "PUSH2",
      "value": "0x1222"
    },
    "4637": {
      "op": "JUMPI"
    },
    "4638": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4640": {
      "op": "DUP1"
    },
    "4641": {
      "op": "REVERT"
    },
    "4642": {
      "op": "JUMPDEST"
    },
    "4643": {
      "op": "POP"
    },
    "4644": {
      "jump": "o",
      "op": "JUMP"
    }
  },
  "sha1": "3b4b8f6c3a84a90465b6b651a1adcee6c17a4e75",
  "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"./extensions/IERC721Metadata.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../utils/Strings.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n    using Address for address;\n    using Strings for uint256;\n\n    // Token name\n    string private _name;\n\n    // Token symbol\n    string private _symbol;\n\n    // Mapping from token ID to owner address\n    mapping(uint256 => address) private _owners;\n\n    // Mapping owner address to token count\n    mapping(address => uint256) private _balances;\n\n    // Mapping from token ID to approved address\n    mapping(uint256 => address) private _tokenApprovals;\n\n    // Mapping from owner to operator approvals\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n    /**\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n        return\n            interfaceId == type(IERC721).interfaceId ||\n            interfaceId == type(IERC721Metadata).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev See {IERC721-balanceOf}.\n     */\n    function balanceOf(address owner) public view virtual override returns (uint256) {\n        require(owner != address(0), \"ERC721: balance query for the zero address\");\n        return _balances[owner];\n    }\n\n    /**\n     * @dev See {IERC721-ownerOf}.\n     */\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n        address owner = _owners[tokenId];\n        require(owner != address(0), \"ERC721: owner query for nonexistent token\");\n        return owner;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-name}.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-symbol}.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-tokenURI}.\n     */\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n        require(_exists(tokenId), \"ERC721Metadata: URI query for nonexistent token\");\n\n        string memory baseURI = _baseURI();\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n    }\n\n    /**\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n     * by default, can be overriden in child contracts.\n     */\n    function _baseURI() internal view virtual returns (string memory) {\n        return \"\";\n    }\n\n    /**\n     * @dev See {IERC721-approve}.\n     */\n    function approve(address to, uint256 tokenId) public virtual override {\n        address owner = ERC721.ownerOf(tokenId);\n        require(to != owner, \"ERC721: approval to current owner\");\n\n        require(\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n            \"ERC721: approve caller is not owner nor approved for all\"\n        );\n\n        _approve(to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-getApproved}.\n     */\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\n        require(_exists(tokenId), \"ERC721: approved query for nonexistent token\");\n\n        return _tokenApprovals[tokenId];\n    }\n\n    /**\n     * @dev See {IERC721-setApprovalForAll}.\n     */\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        _setApprovalForAll(_msgSender(), operator, approved);\n    }\n\n    /**\n     * @dev See {IERC721-isApprovedForAll}.\n     */\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n        return _operatorApprovals[owner][operator];\n    }\n\n    /**\n     * @dev See {IERC721-transferFrom}.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        //solhint-disable-next-line max-line-length\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n\n        _transfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        safeTransferFrom(from, to, tokenId, \"\");\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory _data\n    ) public virtual override {\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n        _safeTransfer(from, to, tokenId, _data);\n    }\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n     *\n     * `_data` is additional data, it has no specified format and it is sent in call to `to`.\n     *\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeTransfer(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory _data\n    ) internal virtual {\n        _transfer(from, to, tokenId);\n        require(_checkOnERC721Received(from, to, tokenId, _data), \"ERC721: transfer to non ERC721Receiver implementer\");\n    }\n\n    /**\n     * @dev Returns whether `tokenId` exists.\n     *\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n     *\n     * Tokens start existing when they are minted (`_mint`),\n     * and stop existing when they are burned (`_burn`).\n     */\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\n        return _owners[tokenId] != address(0);\n    }\n\n    /**\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n        require(_exists(tokenId), \"ERC721: operator query for nonexistent token\");\n        address owner = ERC721.ownerOf(tokenId);\n        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));\n    }\n\n    /**\n     * @dev Safely mints `tokenId` and transfers it to `to`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeMint(address to, uint256 tokenId) internal virtual {\n        _safeMint(to, tokenId, \"\");\n    }\n\n    /**\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n     */\n    function _safeMint(\n        address to,\n        uint256 tokenId,\n        bytes memory _data\n    ) internal virtual {\n        _mint(to, tokenId);\n        require(\n            _checkOnERC721Received(address(0), to, tokenId, _data),\n            \"ERC721: transfer to non ERC721Receiver implementer\"\n        );\n    }\n\n    /**\n     * @dev Mints `tokenId` and transfers it to `to`.\n     *\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - `to` cannot be the zero address.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _mint(address to, uint256 tokenId) internal virtual {\n        require(to != address(0), \"ERC721: mint to the zero address\");\n        require(!_exists(tokenId), \"ERC721: token already minted\");\n\n        _beforeTokenTransfer(address(0), to, tokenId);\n\n        _balances[to] += 1;\n        _owners[tokenId] = to;\n\n        emit Transfer(address(0), to, tokenId);\n\n        _afterTokenTransfer(address(0), to, tokenId);\n    }\n\n    /**\n     * @dev Destroys `tokenId`.\n     * The approval is cleared when the token is burned.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _burn(uint256 tokenId) internal virtual {\n        address owner = ERC721.ownerOf(tokenId);\n\n        _beforeTokenTransfer(owner, address(0), tokenId);\n\n        // Clear approvals\n        _approve(address(0), tokenId);\n\n        _balances[owner] -= 1;\n        delete _owners[tokenId];\n\n        emit Transfer(owner, address(0), tokenId);\n\n        _afterTokenTransfer(owner, address(0), tokenId);\n    }\n\n    /**\n     * @dev Transfers `tokenId` from `from` to `to`.\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _transfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {\n        require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n        require(to != address(0), \"ERC721: transfer to the zero address\");\n\n        _beforeTokenTransfer(from, to, tokenId);\n\n        // Clear approvals from the previous owner\n        _approve(address(0), tokenId);\n\n        _balances[from] -= 1;\n        _balances[to] += 1;\n        _owners[tokenId] = to;\n\n        emit Transfer(from, to, tokenId);\n\n        _afterTokenTransfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev Approve `to` to operate on `tokenId`\n     *\n     * Emits a {Approval} event.\n     */\n    function _approve(address to, uint256 tokenId) internal virtual {\n        _tokenApprovals[tokenId] = to;\n        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\n    }\n\n    /**\n     * @dev Approve `operator` to operate on all of `owner` tokens\n     *\n     * Emits a {ApprovalForAll} event.\n     */\n    function _setApprovalForAll(\n        address owner,\n        address operator,\n        bool approved\n    ) internal virtual {\n        require(owner != operator, \"ERC721: approve to caller\");\n        _operatorApprovals[owner][operator] = approved;\n        emit ApprovalForAll(owner, operator, approved);\n    }\n\n    /**\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n     * The call is not executed if the target address is not a contract.\n     *\n     * @param from address representing the previous owner of the given token ID\n     * @param to target address that will receive the tokens\n     * @param tokenId uint256 ID of the token to be transferred\n     * @param _data bytes optional data to send along with the call\n     * @return bool whether the call correctly returned the expected magic value\n     */\n    function _checkOnERC721Received(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory _data\n    ) private returns (bool) {\n        if (to.isContract()) {\n            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {\n                return retval == IERC721Receiver.onERC721Received.selector;\n            } catch (bytes memory reason) {\n                if (reason.length == 0) {\n                    revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n                } else {\n                    assembly {\n                        revert(add(32, reason), mload(reason))\n                    }\n                }\n            }\n        } else {\n            return true;\n        }\n    }\n\n    /**\n     * @dev Hook that is called before any token transfer. This includes minting\n     * and burning.\n     *\n     * Calling conditions:\n     *\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n     * transferred to `to`.\n     * - When `from` is zero, `tokenId` will be minted for `to`.\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {}\n\n    /**\n     * @dev Hook that is called after any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _afterTokenTransfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {}\n}\n",
  "sourceMap": "628:13657:100:-:0;;;1390:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1456:13;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;1479:17:100;;;;:7;;:17;;;;;:::i;:::-;;1390:113;;628:13657;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;628:13657:100;;;-1:-1:-1;628:13657:100;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:885:114;68:5;121:3;114:4;106:6;102:17;98:27;88:2;;139:1;136;129:12;88:2;162:13;;-1:-1:-1;;;;;224:10:114;;;221:2;;;237:18;;:::i;:::-;312:2;306:9;280:2;366:13;;-1:-1:-1;;362:22:114;;;386:2;358:31;354:40;342:53;;;410:18;;;430:22;;;407:46;404:2;;;456:18;;:::i;:::-;496:10;492:2;485:22;531:2;523:6;516:18;553:4;543:14;;598:3;593:2;588;580:6;576:15;572:24;569:33;566:2;;;615:1;612;605:12;566:2;637:1;628:10;;647:133;661:2;658:1;655:9;647:133;;;749:14;;;745:23;;739:30;718:14;;;714:23;;707:63;672:10;;;;647:133;;;798:2;795:1;792:9;789:2;;;857:1;852:2;847;839:6;835:15;831:24;824:35;789:2;887:6;78:821;-1:-1:-1;;;;;;78:821:114:o;904:562::-;1003:6;1011;1064:2;1052:9;1043:7;1039:23;1035:32;1032:2;;;1080:1;1077;1070:12;1032:2;1107:16;;-1:-1:-1;;;;;1172:14:114;;;1169:2;;;1199:1;1196;1189:12;1169:2;1222:61;1275:7;1266:6;1255:9;1251:22;1222:61;:::i;:::-;1212:71;;1329:2;1318:9;1314:18;1308:25;1292:41;;1358:2;1348:8;1345:16;1342:2;;;1374:1;1371;1364:12;1342:2;;1397:63;1452:7;1441:8;1430:9;1426:24;1397:63;:::i;:::-;1387:73;;;1022:444;;;;;:::o;1471:380::-;1550:1;1546:12;;;;1593;;;1614:2;;1668:4;1660:6;1656:17;1646:27;;1614:2;1721;1713:6;1710:14;1690:18;1687:38;1684:2;;;1767:10;1762:3;1758:20;1755:1;1748:31;1802:4;1799:1;1792:15;1830:4;1827:1;1820:15;1684:2;;1526:325;;;:::o;1856:127::-;1917:10;1912:3;1908:20;1905:1;1898:31;1948:4;1945:1;1938:15;1972:4;1969:1;1962:15;1888:95;628:13657:100;;;;;;",
  "sourcePath": "node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol",
  "type": "contract"
}