{
    "contractName": "ERC165",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "bytes4",
                    "name": "interfaceId",
                    "type": "bytes4"
                }
            ],
            "name": "supportsInterface",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}",
    "bytecode": "0x",
    "deployedBytecode": "0x",
    "immutableReferences": {},
    "sourceMap": "",
    "deployedSourceMap": "",
    "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC165).interfaceId;\n    }\n}\n",
    "sourcePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
    "ast": {
        "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
        "exportedSymbols": {
            "ERC165": [
                12146
            ],
            "IERC165": [
                12352
            ]
        },
        "id": 12147,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 12124,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "99:23:58"
            },
            {
                "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
                "file": "./IERC165.sol",
                "id": 12125,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 12147,
                "sourceUnit": 12353,
                "src": "124:23:58",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": true,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 12127,
                            "name": "IERC165",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12352,
                            "src": "754:7:58"
                        },
                        "id": 12128,
                        "nodeType": "InheritanceSpecifier",
                        "src": "754:7:58"
                    }
                ],
                "contractDependencies": [],
                "contractKind": "contract",
                "documentation": {
                    "id": 12126,
                    "nodeType": "StructuredDocumentation",
                    "src": "149:576:58",
                    "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."
                },
                "fullyImplemented": true,
                "id": 12146,
                "linearizedBaseContracts": [
                    12146,
                    12352
                ],
                "name": "ERC165",
                "nameLocation": "744:6:58",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "baseFunctions": [
                            12351
                        ],
                        "body": {
                            "id": 12144,
                            "nodeType": "Block",
                            "src": "920:64:58",
                            "statements": [
                                {
                                    "expression": {
                                        "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                        },
                                        "id": 12142,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 12137,
                                            "name": "interfaceId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12131,
                                            "src": "937:11:58",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 12139,
                                                        "name": "IERC165",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12352,
                                                        "src": "957:7:58",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IERC165_$12352_$",
                                                            "typeString": "type(contract IERC165)"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_type$_t_contract$_IERC165_$12352_$",
                                                            "typeString": "type(contract IERC165)"
                                                        }
                                                    ],
                                                    "id": 12138,
                                                    "name": "type",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967269,
                                                    "src": "952:4:58",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                        "typeString": "function () pure"
                                                    }
                                                },
                                                "id": 12140,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "952:13:58",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$12352",
                                                    "typeString": "type(contract IERC165)"
                                                }
                                            },
                                            "id": 12141,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "interfaceId",
                                            "nodeType": "MemberAccess",
                                            "src": "952:25:58",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                            }
                                        },
                                        "src": "937:40:58",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 12136,
                                    "id": 12143,
                                    "nodeType": "Return",
                                    "src": "930:47:58"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12129,
                            "nodeType": "StructuredDocumentation",
                            "src": "768:56:58",
                            "text": " @dev See {IERC165-supportsInterface}."
                        },
                        "functionSelector": "01ffc9a7",
                        "id": 12145,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "supportsInterface",
                        "nameLocation": "838:17:58",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 12133,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "896:8:58"
                        },
                        "parameters": {
                            "id": 12132,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12131,
                                    "mutability": "mutable",
                                    "name": "interfaceId",
                                    "nameLocation": "863:11:58",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12145,
                                    "src": "856:18:58",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                    },
                                    "typeName": {
                                        "id": 12130,
                                        "name": "bytes4",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "856:6:58",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "855:20:58"
                        },
                        "returnParameters": {
                            "id": 12136,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12135,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12145,
                                    "src": "914:4:58",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 12134,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "914:4:58",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "913:6:58"
                        },
                        "scope": 12146,
                        "src": "829:155:58",
                        "stateMutability": "view",
                        "virtual": true,
                        "visibility": "public"
                    }
                ],
                "scope": 12147,
                "src": "726:260:58",
                "usedErrors": []
            }
        ],
        "src": "99:888:58"
    },
    "legacyAST": {
        "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
        "exportedSymbols": {
            "ERC165": [
                12146
            ],
            "IERC165": [
                12352
            ]
        },
        "id": 12147,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 12124,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "99:23:58"
            },
            {
                "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
                "file": "./IERC165.sol",
                "id": 12125,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 12147,
                "sourceUnit": 12353,
                "src": "124:23:58",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": true,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 12127,
                            "name": "IERC165",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12352,
                            "src": "754:7:58"
                        },
                        "id": 12128,
                        "nodeType": "InheritanceSpecifier",
                        "src": "754:7:58"
                    }
                ],
                "contractDependencies": [],
                "contractKind": "contract",
                "documentation": {
                    "id": 12126,
                    "nodeType": "StructuredDocumentation",
                    "src": "149:576:58",
                    "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."
                },
                "fullyImplemented": true,
                "id": 12146,
                "linearizedBaseContracts": [
                    12146,
                    12352
                ],
                "name": "ERC165",
                "nameLocation": "744:6:58",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "baseFunctions": [
                            12351
                        ],
                        "body": {
                            "id": 12144,
                            "nodeType": "Block",
                            "src": "920:64:58",
                            "statements": [
                                {
                                    "expression": {
                                        "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                        },
                                        "id": 12142,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 12137,
                                            "name": "interfaceId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12131,
                                            "src": "937:11:58",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 12139,
                                                        "name": "IERC165",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12352,
                                                        "src": "957:7:58",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IERC165_$12352_$",
                                                            "typeString": "type(contract IERC165)"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_type$_t_contract$_IERC165_$12352_$",
                                                            "typeString": "type(contract IERC165)"
                                                        }
                                                    ],
                                                    "id": 12138,
                                                    "name": "type",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967269,
                                                    "src": "952:4:58",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                        "typeString": "function () pure"
                                                    }
                                                },
                                                "id": 12140,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "952:13:58",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$12352",
                                                    "typeString": "type(contract IERC165)"
                                                }
                                            },
                                            "id": 12141,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "interfaceId",
                                            "nodeType": "MemberAccess",
                                            "src": "952:25:58",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                            }
                                        },
                                        "src": "937:40:58",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 12136,
                                    "id": 12143,
                                    "nodeType": "Return",
                                    "src": "930:47:58"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12129,
                            "nodeType": "StructuredDocumentation",
                            "src": "768:56:58",
                            "text": " @dev See {IERC165-supportsInterface}."
                        },
                        "functionSelector": "01ffc9a7",
                        "id": 12145,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "supportsInterface",
                        "nameLocation": "838:17:58",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 12133,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "896:8:58"
                        },
                        "parameters": {
                            "id": 12132,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12131,
                                    "mutability": "mutable",
                                    "name": "interfaceId",
                                    "nameLocation": "863:11:58",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12145,
                                    "src": "856:18:58",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                    },
                                    "typeName": {
                                        "id": 12130,
                                        "name": "bytes4",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "856:6:58",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "855:20:58"
                        },
                        "returnParameters": {
                            "id": 12136,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12135,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12145,
                                    "src": "914:4:58",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 12134,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "914:4:58",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "913:6:58"
                        },
                        "scope": 12146,
                        "src": "829:155:58",
                        "stateMutability": "view",
                        "virtual": true,
                        "visibility": "public"
                    }
                ],
                "scope": 12147,
                "src": "726:260:58",
                "usedErrors": []
            }
        ],
        "src": "99:888:58"
    },
    "compiler": {
        "name": "solc",
        "version": "0.8.7+commit.e28d00a7.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.1.0",
    "updatedAt": "2023-03-16T16:54:15.284Z",
    "devdoc": {
        "details": "Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.",
        "kind": "dev",
        "methods": {
            "supportsInterface(bytes4)": {
                "details": "See {IERC165-supportsInterface}."
            }
        },
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
    }
}
