UNPKG

@etherisc/gif-contracts

Version:

This repository holds the GIF core contracts and tools to develop, test and deploy GIF instances.

929 lines 36.2 kB
{ "abi": [], "allSourcePaths": { "23": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/StorageSlot.sol" }, "ast": { "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/StorageSlot.sol", "exportedSymbols": { "StorageSlot": [ 28706 ] }, "id": 28707, "license": "MIT", "nodeType": "SourceUnit", "nodes": [ { "id": 28648, "literals": [ "solidity", "^", "0.8", ".0" ], "nodeType": "PragmaDirective", "src": "105:23:23" }, { "abstract": false, "baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": { "id": 28649, "nodeType": "StructuredDocumentation", "src": "130:1148:23", "text": " @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._" }, "fullyImplemented": true, "id": 28706, "linearizedBaseContracts": [ 28706 ], "name": "StorageSlot", "nameLocation": "1287:11:23", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "StorageSlot.AddressSlot", "id": 28652, "members": [ { "constant": false, "id": 28651, "mutability": "mutable", "name": "value", "nameLocation": "1342:5:23", "nodeType": "VariableDeclaration", "scope": 28652, "src": "1334:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 28650, "name": "address", "nodeType": "ElementaryTypeName", "src": "1334:7:23", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "name": "AddressSlot", "nameLocation": "1312:11:23", "nodeType": "StructDefinition", "scope": 28706, "src": "1305:49:23", "visibility": "public" }, { "canonicalName": "StorageSlot.BooleanSlot", "id": 28655, "members": [ { "constant": false, "id": 28654, "mutability": "mutable", "name": "value", "nameLocation": "1394:5:23", "nodeType": "VariableDeclaration", "scope": 28655, "src": "1389:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 28653, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1389:4:23", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "name": "BooleanSlot", "nameLocation": "1367:11:23", "nodeType": "StructDefinition", "scope": 28706, "src": "1360:46:23", "visibility": "public" }, { "canonicalName": "StorageSlot.Bytes32Slot", "id": 28658, "members": [ { "constant": false, "id": 28657, "mutability": "mutable", "name": "value", "nameLocation": "1449:5:23", "nodeType": "VariableDeclaration", "scope": 28658, "src": "1441:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 28656, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1441:7:23", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" } ], "name": "Bytes32Slot", "nameLocation": "1419:11:23", "nodeType": "StructDefinition", "scope": 28706, "src": "1412:49:23", "visibility": "public" }, { "canonicalName": "StorageSlot.Uint256Slot", "id": 28661, "members": [ { "constant": false, "id": 28660, "mutability": "mutable", "name": "value", "nameLocation": "1504:5:23", "nodeType": "VariableDeclaration", "scope": 28661, "src": "1496:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 28659, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1496:7:23", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "name": "Uint256Slot", "nameLocation": "1474:11:23", "nodeType": "StructDefinition", "scope": 28706, "src": "1467:49:23", "visibility": "public" }, { "body": { "id": 28671, "nodeType": "Block", "src": "1698:106:23", "statements": [ { "AST": { "nodeType": "YulBlock", "src": "1760:38:23", "statements": [ { "nodeType": "YulAssignment", "src": "1774:14:23", "value": { "name": "slot", "nodeType": "YulIdentifier", "src": "1784:4:23" }, "variableNames": [ { "name": "r.slot", "nodeType": "YulIdentifier", "src": "1774:6:23" } ] } ] }, "documentation": "@solidity memory-safe-assembly", "evmVersion": "istanbul", "externalReferences": [ { "declaration": 28668, "isOffset": false, "isSlot": true, "src": "1774:6:23", "suffix": "slot", "valueSize": 1 }, { "declaration": 28664, "isOffset": false, "isSlot": false, "src": "1784:4:23", "valueSize": 1 } ], "id": 28670, "nodeType": "InlineAssembly", "src": "1751:47:23" } ] }, "documentation": { "id": 28662, "nodeType": "StructuredDocumentation", "src": "1522:87:23", "text": " @dev Returns an `AddressSlot` with member `value` located at `slot`." }, "id": 28672, "implemented": true, "kind": "function", "modifiers": [], "name": "getAddressSlot", "nameLocation": "1623:14:23", "nodeType": "FunctionDefinition", "parameters": { "id": 28665, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 28664, "mutability": "mutable", "name": "slot", "nameLocation": "1646:4:23", "nodeType": "VariableDeclaration", "scope": 28672, "src": "1638:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 28663, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1638:7:23", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" } ], "src": "1637:14:23" }, "returnParameters": { "id": 28669, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 28668, "mutability": "mutable", "name": "r", "nameLocation": "1695:1:23", "nodeType": "VariableDeclaration", "scope": 28672, "src": "1675:21:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_AddressSlot_$28652_storage_ptr", "typeString": "struct StorageSlot.AddressSlot" }, "typeName": { "id": 28667, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 28666, "name": "AddressSlot", "nodeType": "IdentifierPath", "referencedDeclaration": 28652, "src": "1675:11:23" }, "referencedDeclaration": 28652, "src": "1675:11:23", "typeDescriptions": { "typeIdentifier": "t_struct$_AddressSlot_$28652_storage_ptr", "typeString": "struct StorageSlot.AddressSlot" } }, "visibility": "internal" } ], "src": "1674:23:23" }, "scope": 28706, "src": "1614:190:23", "stateMutability": "pure", "virtual": false, "visibility": "internal" }, { "body": { "id": 28682, "nodeType": "Block", "src": "1986:106:23", "statements": [ { "AST": { "nodeType": "YulBlock", "src": "2048:38:23", "statements": [ { "nodeType": "YulAssignment", "src": "2062:14:23", "value": { "name": "slot", "nodeType": "YulIdentifier", "src": "2072:4:23" }, "variableNames": [ { "name": "r.slot", "nodeType": "YulIdentifier", "src": "2062:6:23" } ] } ] }, "documentation": "@solidity memory-safe-assembly", "evmVersion": "istanbul", "externalReferences": [ { "declaration": 28679, "isOffset": false, "isSlot": true, "src": "2062:6:23", "suffix": "slot", "valueSize": 1 }, { "declaration": 28675, "isOffset": false, "isSlot": false, "src": "2072:4:23", "valueSize": 1 } ], "id": 28681, "nodeType": "InlineAssembly", "src": "2039:47:23" } ] }, "documentation": { "id": 28673, "nodeType": "StructuredDocumentation", "src": "1810:87:23", "text": " @dev Returns an `BooleanSlot` with member `value` located at `slot`." }, "id": 28683, "implemented": true, "kind": "function", "modifiers": [], "name": "getBooleanSlot", "nameLocation": "1911:14:23", "nodeType": "FunctionDefinition", "parameters": { "id": 28676, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 28675, "mutability": "mutable", "name": "slot", "nameLocation": "1934:4:23", "nodeType": "VariableDeclaration", "scope": 28683, "src": "1926:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 28674, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1926:7:23", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" } ], "src": "1925:14:23" }, "returnParameters": { "id": 28680, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 28679, "mutability": "mutable", "name": "r", "nameLocation": "1983:1:23", "nodeType": "VariableDeclaration", "scope": 28683, "src": "1963:21:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_BooleanSlot_$28655_storage_ptr", "typeString": "struct StorageSlot.BooleanSlot" }, "typeName": { "id": 28678, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 28677, "name": "BooleanSlot", "nodeType": "IdentifierPath", "referencedDeclaration": 28655, "src": "1963:11:23" }, "referencedDeclaration": 28655, "src": "1963:11:23", "typeDescriptions": { "typeIdentifier": "t_struct$_BooleanSlot_$28655_storage_ptr", "typeString": "struct StorageSlot.BooleanSlot" } }, "visibility": "internal" } ], "src": "1962:23:23" }, "scope": 28706, "src": "1902:190:23", "stateMutability": "pure", "virtual": false, "visibility": "internal" }, { "body": { "id": 28693, "nodeType": "Block", "src": "2274:106:23", "statements": [ { "AST": { "nodeType": "YulBlock", "src": "2336:38:23", "statements": [ { "nodeType": "YulAssignment", "src": "2350:14:23", "value": { "name": "slot", "nodeType": "YulIdentifier", "src": "2360:4:23" }, "variableNames": [ { "name": "r.slot", "nodeType": "YulIdentifier", "src": "2350:6:23" } ] } ] }, "documentation": "@solidity memory-safe-assembly", "evmVersion": "istanbul", "externalReferences": [ { "declaration": 28690, "isOffset": false, "isSlot": true, "src": "2350:6:23", "suffix": "slot", "valueSize": 1 }, { "declaration": 28686, "isOffset": false, "isSlot": false, "src": "2360:4:23", "valueSize": 1 } ], "id": 28692, "nodeType": "InlineAssembly", "src": "2327:47:23" } ] }, "documentation": { "id": 28684, "nodeType": "StructuredDocumentation", "src": "2098:87:23", "text": " @dev Returns an `Bytes32Slot` with member `value` located at `slot`." }, "id": 28694, "implemented": true, "kind": "function", "modifiers": [], "name": "getBytes32Slot", "nameLocation": "2199:14:23", "nodeType": "FunctionDefinition", "parameters": { "id": 28687, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 28686, "mutability": "mutable", "name": "slot", "nameLocation": "2222:4:23", "nodeType": "VariableDeclaration", "scope": 28694, "src": "2214:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 28685, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2214:7:23", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" } ], "src": "2213:14:23" }, "returnParameters": { "id": 28691, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 28690, "mutability": "mutable", "name": "r", "nameLocation": "2271:1:23", "nodeType": "VariableDeclaration", "scope": 28694, "src": "2251:21:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_Bytes32Slot_$28658_storage_ptr", "typeString": "struct StorageSlot.Bytes32Slot" }, "typeName": { "id": 28689, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 28688, "name": "Bytes32Slot", "nodeType": "IdentifierPath", "referencedDeclaration": 28658, "src": "2251:11:23" }, "referencedDeclaration": 28658, "src": "2251:11:23", "typeDescriptions": { "typeIdentifier": "t_struct$_Bytes32Slot_$28658_storage_ptr", "typeString": "struct StorageSlot.Bytes32Slot" } }, "visibility": "internal" } ], "src": "2250:23:23" }, "scope": 28706, "src": "2190:190:23", "stateMutability": "pure", "virtual": false, "visibility": "internal" }, { "body": { "id": 28704, "nodeType": "Block", "src": "2562:106:23", "statements": [ { "AST": { "nodeType": "YulBlock", "src": "2624:38:23", "statements": [ { "nodeType": "YulAssignment", "src": "2638:14:23", "value": { "name": "slot", "nodeType": "YulIdentifier", "src": "2648:4:23" }, "variableNames": [ { "name": "r.slot", "nodeType": "YulIdentifier", "src": "2638:6:23" } ] } ] }, "documentation": "@solidity memory-safe-assembly", "evmVersion": "istanbul", "externalReferences": [ { "declaration": 28701, "isOffset": false, "isSlot": true, "src": "2638:6:23", "suffix": "slot", "valueSize": 1 }, { "declaration": 28697, "isOffset": false, "isSlot": false, "src": "2648:4:23", "valueSize": 1 } ], "id": 28703, "nodeType": "InlineAssembly", "src": "2615:47:23" } ] }, "documentation": { "id": 28695, "nodeType": "StructuredDocumentation", "src": "2386:87:23", "text": " @dev Returns an `Uint256Slot` with member `value` located at `slot`." }, "id": 28705, "implemented": true, "kind": "function", "modifiers": [], "name": "getUint256Slot", "nameLocation": "2487:14:23", "nodeType": "FunctionDefinition", "parameters": { "id": 28698, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 28697, "mutability": "mutable", "name": "slot", "nameLocation": "2510:4:23", "nodeType": "VariableDeclaration", "scope": 28705, "src": "2502:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 28696, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2502:7:23", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" } ], "src": "2501:14:23" }, "returnParameters": { "id": 28702, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 28701, "mutability": "mutable", "name": "r", "nameLocation": "2559:1:23", "nodeType": "VariableDeclaration", "scope": 28705, "src": "2539:21:23", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_Uint256Slot_$28661_storage_ptr", "typeString": "struct StorageSlot.Uint256Slot" }, "typeName": { "id": 28700, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 28699, "name": "Uint256Slot", "nodeType": "IdentifierPath", "referencedDeclaration": 28661, "src": "2539:11:23" }, "referencedDeclaration": 28661, "src": "2539:11:23", "typeDescriptions": { "typeIdentifier": "t_struct$_Uint256Slot_$28661_storage_ptr", "typeString": "struct StorageSlot.Uint256Slot" } }, "visibility": "internal" } ], "src": "2538:23:23" }, "scope": 28706, "src": "2478:190:23", "stateMutability": "pure", "virtual": false, "visibility": "internal" } ], "scope": 28707, "src": "1279:1391:23" } ], "src": "105:2566:23" }, "bytecode": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206a2c412733cbd814c742ba03a6dc2c93a2257d291ff7737fdb76aef4d122fb4f64736f6c63430008020033", "bytecodeSha1": "1ce946f6a4eaa185320328620ccf999b9e86db7c", "compiler": { "evm_version": "istanbul", "optimizer": { "enabled": true, "runs": 200 }, "version": "0.8.2+commit.661d1103" }, "contractName": "StorageSlot", "coverageMap": { "branches": { "23": {} }, "statements": { "23": {} } }, "dependencies": [], "deployedBytecode": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206a2c412733cbd814c742ba03a6dc2c93a2257d291ff7737fdb76aef4d122fb4f64736f6c63430008020033", "deployedSourceMap": "1279:1391:23:-:0;;;;;;;;", "language": "Solidity", "natspec": { "details": "Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ``` contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._", "kind": "dev", "methods": {}, "version": 1 }, "offset": [ 1279, 2670 ], "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH11 0x2C412733CBD814C742BA03 0xA6 0xDC 0x2C SWAP4 LOG2 0x25 PUSH30 0x291FF7737FDB76AEF4D122FB4F64736F6C63430008020033000000000000 ", "pcMap": { "0": { "offset": [ 1279, 2670 ], "op": "PUSH20", "path": "23", "value": "0x0" }, "21": { "fn": null, "offset": [ 1279, 2670 ], "op": "ADDRESS", "path": "23" }, "22": { "fn": null, "offset": [ 1279, 2670 ], "op": "EQ", "path": "23" }, "23": { "fn": null, "offset": [ 1279, 2670 ], "op": "PUSH1", "path": "23", "value": "0x80" }, "25": { "fn": null, "offset": [ 1279, 2670 ], "op": "PUSH1", "path": "23", "value": "0x40" }, "27": { "fn": null, "offset": [ 1279, 2670 ], "op": "MSTORE", "path": "23" }, "28": { "fn": null, "offset": [ 1279, 2670 ], "op": "PUSH1", "path": "23", "value": "0x0" }, "30": { "fn": null, "offset": [ 1279, 2670 ], "op": "DUP1", "path": "23" }, "31": { "fn": null, "offset": [ 1279, 2670 ], "op": "REVERT", "path": "23" } }, "sha1": "4c48fbf403a420a06f911e66a5f61af169dbf236", "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n}\n", "sourceMap": "1279:1391:23:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1279:1391:23;;;;;;;;;;;;;;;;;", "sourcePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/StorageSlot.sol", "type": "library" }