{
  "abi": [],
  "allSourcePaths": {
    "72": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
    "83": "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"
  },
  "ast": {
    "absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
    "exportedSymbols": {
      "AddressUpgradeable": [
        16246
      ],
      "ContextUpgradeable": [
        26020
      ],
      "Initializable": [
        19544
      ]
    },
    "id": 26021,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 25980,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "86:23:83"
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "file": "../proxy/utils/Initializable.sol",
        "id": 25981,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 26021,
        "sourceUnit": 19545,
        "src": "110:42:83",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [
          {
            "baseName": {
              "id": 25983,
              "name": "Initializable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 19544,
              "src": "691:13:83"
            },
            "id": 25984,
            "nodeType": "InheritanceSpecifier",
            "src": "691:13:83"
          }
        ],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 25982,
          "nodeType": "StructuredDocumentation",
          "src": "154:496:83",
          "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."
        },
        "fullyImplemented": true,
        "id": 26020,
        "linearizedBaseContracts": [
          26020,
          19544
        ],
        "name": "ContextUpgradeable",
        "nameLocation": "669:18:83",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 25989,
              "nodeType": "Block",
              "src": "763:7:83",
              "statements": []
            },
            "id": 25990,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 25987,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 25986,
                  "name": "onlyInitializing",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 19528,
                  "src": "746:16:83"
                },
                "nodeType": "ModifierInvocation",
                "src": "746:16:83"
              }
            ],
            "name": "__Context_init",
            "nameLocation": "720:14:83",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 25985,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "734:2:83"
            },
            "returnParameters": {
              "id": 25988,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "763:0:83"
            },
            "scope": 26020,
            "src": "711:59:83",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 25995,
              "nodeType": "Block",
              "src": "838:7:83",
              "statements": []
            },
            "id": 25996,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 25993,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 25992,
                  "name": "onlyInitializing",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 19528,
                  "src": "821:16:83"
                },
                "nodeType": "ModifierInvocation",
                "src": "821:16:83"
              }
            ],
            "name": "__Context_init_unchained",
            "nameLocation": "785:24:83",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 25991,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "809:2:83"
            },
            "returnParameters": {
              "id": 25994,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "838:0:83"
            },
            "scope": 26020,
            "src": "776:69:83",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 26004,
              "nodeType": "Block",
              "src": "912:34:83",
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "id": 26001,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -15,
                      "src": "929:3:83",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 26002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "sender",
                    "nodeType": "MemberAccess",
                    "src": "929:10:83",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 26000,
                  "id": 26003,
                  "nodeType": "Return",
                  "src": "922:17:83"
                }
              ]
            },
            "id": 26005,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_msgSender",
            "nameLocation": "859:10:83",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 25997,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "869:2:83"
            },
            "returnParameters": {
              "id": 26000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 25999,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 26005,
                  "src": "903:7:83",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 25998,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "903:7:83",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "902:9:83"
            },
            "scope": 26020,
            "src": "850:96:83",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 26013,
              "nodeType": "Block",
              "src": "1019:32:83",
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "id": 26010,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -15,
                      "src": "1036:3:83",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 26011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "data",
                    "nodeType": "MemberAccess",
                    "src": "1036:8:83",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_calldata_ptr",
                      "typeString": "bytes calldata"
                    }
                  },
                  "functionReturnParameters": 26009,
                  "id": 26012,
                  "nodeType": "Return",
                  "src": "1029:15:83"
                }
              ]
            },
            "id": 26014,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_msgData",
            "nameLocation": "961:8:83",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 26006,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "969:2:83"
            },
            "returnParameters": {
              "id": 26009,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26008,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 26014,
                  "src": "1003:14:83",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 26007,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1003:5:83",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1002:16:83"
            },
            "scope": 26020,
            "src": "952:99:83",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "constant": false,
            "documentation": {
              "id": 26015,
              "nodeType": "StructuredDocumentation",
              "src": "1057:254:83",
              "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
            },
            "id": 26019,
            "mutability": "mutable",
            "name": "__gap",
            "nameLocation": "1336:5:83",
            "nodeType": "VariableDeclaration",
            "scope": 26020,
            "src": "1316:25:83",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_uint256_$50_storage",
              "typeString": "uint256[50]"
            },
            "typeName": {
              "baseType": {
                "id": 26016,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1316:7:83",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "id": 26018,
              "length": {
                "hexValue": "3530",
                "id": 26017,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1324:2:83",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_50_by_1",
                  "typeString": "int_const 50"
                },
                "value": "50"
              },
              "nodeType": "ArrayTypeName",
              "src": "1316:11:83",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_uint256_$50_storage_ptr",
                "typeString": "uint256[50]"
              }
            },
            "visibility": "private"
          }
        ],
        "scope": 26021,
        "src": "651:693:83",
        "usedErrors": []
      }
    ],
    "src": "86:1259:83"
  },
  "bytecode": "",
  "bytecodeSha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.6+commit.11564f7e"
  },
  "contractName": "ContextUpgradeable",
  "coverageMap": {
    "branches": {},
    "statements": {}
  },
  "dependencies": [
    "Initializable"
  ],
  "deployedBytecode": "",
  "deployedSourceMap": "",
  "language": "Solidity",
  "natspec": {
    "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.",
    "kind": "dev",
    "methods": {},
    "stateVariables": {
      "__gap": {
        "details": "This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
      }
    },
    "version": 1
  },
  "offset": [
    651,
    1344
  ],
  "opcodes": "",
  "pcMap": {},
  "sha1": "b0d4033646ff5641469a06d504ef1ce1377c7a54",
  "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n    function __Context_init() internal onlyInitializing {\n    }\n\n    function __Context_init_unchained() internal onlyInitializing {\n    }\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[50] private __gap;\n}\n",
  "sourceMap": "",
  "sourcePath": "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
  "type": "contract"
}